powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / NoSQL, Big Data [игнор отключен] [закрыт для гостей] / СУБД для хранения графов/матрицы связности
25 сообщений из 27, страница 1 из 2
СУБД для хранения графов/матрицы связности
    #38881736
Spinifex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Коллеги,
Ищу СУБД для хранения графа. Граф не направленный, не взвешенный, размерность графа не более 100 000 узлов.
По факту нужно хранить матрицу 100 000 на 100 000, где каждый бит указывает на наличие связи. Такую СУБД в принципе не долго и самому написать, но есть проблема, что пользоваться ей должны из нескольких приложений, написанных на разных языках. Так что какое-то готовое решение - предпочтительнее.


Сейчас храним данные в SQL сервер, для каждой связи - запись в таблице. Не устраивает скорость проверки наличия связи и скорость добавления новой связи, размер БД. Очевидно, что в случае с матрицей можно добиться наилучшей производительности.
Есть ли что-то похожее?

P.S. Сейчас смотрю в сторону графовых БД, но насколько понимаю они хранят данные не как матрицу... Могу ошибаться. Также стоит отметить, что у нас нет задач поиска кратчайших путей и т.п., так что этот функционал для нас избыточен.
...
Рейтинг: 0 / 0
СУБД для хранения графов/матрицы связности
    #38881745
GregTk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Spinifex,

Так может в памяти держать если прямо такая простая задача и сделать доступ через REST?
...
Рейтинг: 0 / 0
СУБД для хранения графов/матрицы связности
    #38881761
Spinifex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
GregTk,

Да, как вариант, но опять же не верится что нет уже готового решения.
...
Рейтинг: 0 / 0
СУБД для хранения графов/матрицы связности
    #38881771
GregTk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Spinifex,

А сейчас какие метрики на вставку и на выборку?
...
Рейтинг: 0 / 0
СУБД для хранения графов/матрицы связности
    #38881848
gandjustas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SpinifexКоллеги,
Ищу СУБД для хранения графа. Граф не направленный, не взвешенный, размерность графа не более 100 000 узлов.
По факту нужно хранить матрицу 100 000 на 100 000, где каждый бит указывает на наличие связи. Такую СУБД в принципе не долго и самому написать, но есть проблема, что пользоваться ей должны из нескольких приложений, написанных на разных языках. Так что какое-то готовое решение - предпочтительнее.

1) Зачем именно матрицу?
2) Какие запросы будут?
3) Не проще SQLite с таблицей ребер и индексами?
...
Рейтинг: 0 / 0
СУБД для хранения графов/матрицы связности
    #38881942
Spinifex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
gandjustasSpinifexКоллеги,
Ищу СУБД для хранения графа. Граф не направленный, не взвешенный, размерность графа не более 100 000 узлов.
По факту нужно хранить матрицу 100 000 на 100 000, где каждый бит указывает на наличие связи. Такую СУБД в принципе не долго и самому написать, но есть проблема, что пользоваться ей должны из нескольких приложений, написанных на разных языках. Так что какое-то готовое решение - предпочтительнее.

1) Зачем именно матрицу?
2) Какие запросы будут?
3) Не проще SQLite с таблицей ребер и индексами?

1) В моем представлении это самый эффективный способ из возможных.
2) Запросы очень простые. Проверка существования связи и вставка связи/пачки связей.
3) У нас сейчас так и реализовано (таблица с двумя ID узлов и индексы на ней в обе стороны). Например база с 65 тыс. узлов, где все связанны со всеми занимает порядка 10 Гб. В то время как матрица с битами должна занимать 512 Мб - вполне может поместится в памяти. Да, там можно тип данных для ID узла заменить на tiny int, но все равно матрица будет быстрее. Или вы так не считаете?
...
Рейтинг: 0 / 0
СУБД для хранения графов/матрицы связности
    #38882303
gandjustas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Spinifexgandjustasпропущено...


1) Зачем именно матрицу?
2) Какие запросы будут?
3) Не проще SQLite с таблицей ребер и индексами?

1) В моем представлении это самый эффективный способ из возможных.
2) Запросы очень простые. Проверка существования связи и вставка связи/пачки связей.
3) У нас сейчас так и реализовано (таблица с двумя ID узлов и индексы на ней в обе стороны). Например база с 65 тыс. узлов, где все связанны со всеми занимает порядка 10 Гб. В то время как матрица с битами должна занимать 512 Мб - вполне может поместится в памяти. Да, там можно тип данных для ID узла заменить на tiny int, но все равно матрица будет быстрее. Или вы так не считаете?

Узлы добавляться не будут? Тогда просто матрицу сериализуйте в файл и все.
Если будут, то никак матрицу хранить не выйдет, придется её восстанавливать из списка смежных вершин (по сути той же таблицы, что у вас).
...
Рейтинг: 0 / 0
СУБД для хранения графов/матрицы связности
    #38882473
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SpinifexGregTk,

Да, как вариант, но опять же не верится что нет уже готового решения.Решения есть, но готовы ли платить и изучать новые технологии?
GregTkSpinifex,

А сейчас какие метрики на вставку и на выборку?Spinifex,

Присоединяюсь к GregTk: всё-таки можно узнать Ваши текущие метрики?

Вот, что получилось у меня:

(CPU: Intel Core i5-2400, HDD: Seagate Barracuda 7200.12)

Создал 65000 записей по 65000 бит в каждой, итого - 4225000000 бит:
  • размер данных = 0.74 Mб (используется автоматическое сжатие битовых строк, поэтому при любом раскладе 4225000000 бит займут менее чем 504 Мб)
  • время заполнения всех бит:
  • ~185 с. (без оптимизаций)
  • ~0.036 с. (с оптимизацией)
  • время считывания всех бит (по одному) = ~111 с.
...
Рейтинг: 0 / 0
СУБД для хранения графов/матрицы связности
    #38883842
Фотография DirksDR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SpinifexСейчас храним данные в SQL сервер, для каждой связи - запись в таблице. Не устраивает скорость проверки наличия связи и скорость добавления новой связи, размер БД.
Насколько хотите увеличить скорость "проверки наличия связи"?
В 2 раза? В 10 раз? В 100 раз? Решения будут разные.
Если в 2 раза, можно таблицу сделать индексной (кластерной в смысле MS SQL) -убираем обращение к области данных таблицы, данные хранятся в структуре индекса.
До 10 раз помогут глобалные массивы (В-деревья) в СУБД Cache или другой "key-value" NoSQL СУБД.
Если в 100 раз, то надо рассматривать in-memory решения, и не обязательно СУБД.

А размер БД почему большой? Сколько записей в таблице? Приведите структуру записи.
...
Рейтинг: 0 / 0
СУБД для хранения графов/матрицы связности
    #38883883
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DirksDRА размер БД почему большой? Сколько записей в таблице? Приведите структуру записи. 17277273
DirksDRНасколько хотите увеличить скорость "проверки наличия связи"?
В 2 раза? В 10 раз? В 100 раз? Решения будут разные.Вы не первый, кто просит ТС показать текущие метрики.
Похоже, ТС уже нашёл решение.
...
Рейтинг: 0 / 0
СУБД для хранения графов/матрицы связности
    #38921846
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Spinifex,

ну у нас например примерно такого же объема матрица тоже лежит в реляционной таблице, никаких проблем нет.

сто тысяч записей не так уж и много...
таблица простая, (ид матрицы, номер строки, номер столбца => значение )
и индексы (ид матрицы, номер строки, номер столбца) и (ид матрицы, номер столбца) - и все будет просто летать .
...
Рейтинг: 0 / 0
СУБД для хранения графов/матрицы связности
    #38921979
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivсто тысяч записей не так уж и много...ТС жаловался в том числе на размер БД:SpinifexНе устраивает скорость проверки наличия связи и скорость добавления новой связи , размер БД .Сколько у Вас занимает матрица сто тысяч на сто тысяч вместе с индексами, где все связаны со всеми?

MasterZivтаблица простая, (ид матрицы, номер строки, номер столбца => значение )
и индексы (ид матрицы, номер строки, номер столбца) и (ид матрицы, номер столбца) - и все будет просто летать.SpinifexУ нас сейчас так и реализовано (таблица с двумя ID узлов и индексы на ней в обе стороны). Например база с 65 тыс. узлов, где все связанны со всеми занимает порядка 10 Гб. Странно, почему у ТС не летает. Наверное, всё-таки MSSQL и Sybase были по-разному "приготовлены".
...
Рейтинг: 0 / 0
СУБД для хранения графов/матрицы связности
    #38922160
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
servitMasterZivсто тысяч записей не так уж и много...ТС жаловался в том числе на размер БД:SpinifexНе устраивает скорость проверки наличия связи и скорость добавления новой связи , размер БД .Сколько у Вас занимает матрица сто тысяч на сто тысяч вместе с индексами, где все связаны со всеми?


у него наверняка разреженная матрица, там не сто тысяч на сто тысяч, т.е. десять миллиардов, а меньше, несколько миллионов.

но лучше конечно у него спросить.

MasterZivтаблица простая, (ид матрицы, номер строки, номер столбца => значение )
и индексы (ид матрицы, номер строки, номер столбца) и (ид матрицы, номер столбца) - и все будет просто летать.SpinifexУ нас сейчас так и реализовано (таблица с двумя ID узлов и индексы на ней в обе стороны). Например база с 65 тыс. узлов, где все связанны со всеми занимает порядка 10 Гб. Странно, почему у ТС не летает. Наверное, всё-таки MSSQL и Sybase были по-разному "приготовлены".

а кто говорил про MSSQL и Sybase ?

хотя на самом деле это все равно, хоть mysql.
...
Рейтинг: 0 / 0
СУБД для хранения графов/матрицы связности
    #38922198
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivа кто говорил про MSSQL и Sybase ?Про MSSQL - ТСSpinifexСейчас храним данные в SQL сервер, про Sybase - это было моё предположение, исходя из Вашего профиля.

И всё же, каков будет размер БД в Вашей СУБД для озвученных размеров матрицы?
...
Рейтинг: 0 / 0
СУБД для хранения графов/матрицы связности
    #38922716
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
servit про Sybase - это было моё предположение, исходя из Вашего профиля.

Предположение было неверное.
Матрица у меня в БД на Oracle. Но ещё раз -- это всё равно. Там будут незначительные нюансы, но в общем, всё равно.
...
Рейтинг: 0 / 0
СУБД для хранения графов/матрицы связности
    #38928510
GVF112GVF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Spinifex,

Есть такая база данных Distributed Graph Database Titan -
http://thinkaurelius.github.io/titan/

С уважением,
Вадим.
...
Рейтинг: 0 / 0
СУБД для хранения графов/матрицы связности
    #38928747
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Neo4j
...
Рейтинг: 0 / 0
СУБД для хранения графов/матрицы связности
    #38940517
anryal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OrientDB
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
СУБД для хранения графов/матрицы связности
    #39662308
Фотография конечно Вася
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WinnipuhNeo4j

Кто-нибудь из русскоговорящих остался в коммньюнити neo4j?
...
Рейтинг: 0 / 0
СУБД для хранения графов/матрицы связности
    #39663188
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SpinifexКоллеги,
Ищу СУБД для хранения графа. Граф не направленный, не взвешенный, размерность графа не более 100 000 узлов.
По факту нужно хранить матрицу 100 000 на 100 000, где каждый бит указывает на наличие связи. Такую СУБД в принципе не долго и самому написать, но есть проблема, что пользоваться ей должны из нескольких приложений, написанных на разных языках. Так что какое-то готовое решение - предпочтительнее.


Сейчас храним данные в SQL сервер, для каждой связи - запись в таблице. Не устраивает скорость проверки наличия связи и скорость добавления новой связи, размер БД. Очевидно, что в случае с матрицей можно добиться наилучшей производительности.
Есть ли что-то похожее?

P.S. Сейчас смотрю в сторону графовых БД, но насколько понимаю они хранят данные не как матрицу... Могу ошибаться. Также стоит отметить, что у нас нет задач поиска кратчайших путей и т.п., так что этот функционал для нас избыточен.

SQL Server 2017?
...
Рейтинг: 0 / 0
СУБД для хранения графов/матрицы связности
    #39663791
Eleanor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупин,

Посмотрела документацию MS по SQL Graph-у - даже там внизу несколько негативных отзывов: MS всего лишь создал "синтаксический сахар" поверх реляционной по сути реализации.
В результате получатся ровно те же таблицы, что у ТС, с похожим размером и похожей производительностью.
...
Рейтинг: 0 / 0
СУБД для хранения графов/матрицы связности
    #39664057
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EleanorРолг Хупин,

Посмотрела документацию MS по SQL Graph-у - даже там внизу несколько негативных отзывов: MS всего лишь создал "синтаксический сахар" поверх реляционной по сути реализации.
В результате получатся ровно те же таблицы, что у ТС, с похожим размером и похожей производительностью.

мэм, что-то я про сахар не нашел там, однако, хорошая фича.
Негативные отзывы будут всегда и обо всём, я, например, могу вам написать десяток матерных негативных отзывов про FTS, и даже для 2017.
...
Рейтинг: 0 / 0
СУБД для хранения графов/матрицы связности
    #39664185
Eleanor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупинчто-то я про сахар не нашел там
I see no section about indexing and why this is better/different from implementing it traditionally. Is this merely syntactic sugar ?

Ролг Хупиноднако, хорошая фича
"Хорошая" - это в текущей версии Sql Server 2017 или в будущем? Уже ей пользовались?

ТС спрашивал про размер и производительность:

- Графы MS пока что используют традиционные таблицы с традиционными индексами.
Если залить данные ТС в граф, то это будут те же таблицы, что у него есть, но с опциями AS NODE и AS EDGE и несколькими скрытыми полям (2 и 8 полей). Объем данных в итоге увеличится.

- Синтаксис MATCH эквивалентен нескольким JOIN, в планах выполнения запросов будут JOIN-ны. Производительность запросов немного выше , т.к. строятся другие планы выполнения.

Возможно, ТС есть смысл перелить данные в граф MS, но лишь потому что он уже хранит их в Sql Server.
...
Рейтинг: 0 / 0
СУБД для хранения графов/матрицы связности
    #39664254
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EleanorРолг Хупинчто-то я про сахар не нашел там
I see no section about indexing and why this is better/different from implementing it traditionally. Is this merely syntactic sugar ?

Ролг Хупиноднако, хорошая фича
"Хорошая" - это в текущей версии Sql Server 2017 или в будущем? Уже ей пользовались?

ТС спрашивал про размер и производительность:

- Графы MS пока что используют традиционные таблицы с традиционными индексами.
Если залить данные ТС в граф, то это будут те же таблицы, что у него есть, но с опциями AS NODE и AS EDGE и несколькими скрытыми полям (2 и 8 полей). Объем данных в итоге увеличится.

- Синтаксис MATCH эквивалентен нескольким JOIN, в планах выполнения запросов будут JOIN-ны. Производительность запросов немного выше , т.к. строятся другие планы выполнения.

Возможно, ТС есть смысл перелить данные в граф MS, но лишь потому что он уже хранит их в Sql Server.

про сахар там вопрос, но в принципе многие возможности в скл сервер можно обозвать сахаром. Да и хранение - в базе, традиционно, но тут нао определиться, а что - это не устраивает?
Они , например, и иерархию сделали через сахар+реализацию, очень неплохо.
...
Рейтинг: 0 / 0
СУБД для хранения графов/матрицы связности
    #39664325
Eleanor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг ХупинДа и хранение - в базе, традиционно, но тут надо определиться, а что - это не устраивает?
Они, например, и иерархию сделали через сахар+реализацию, очень неплохо.
Скорее всего пользователи ждали специализированное решение, увидев громкое название Graph Database - высокую производительность, запросы в несколько раз быстрее. Ожидания не оправдались.
10 – 15 percent performance advantage, как в ссылке выше... подозреваю, это не то, на что надеялся ТС.
...
Рейтинг: 0 / 0
25 сообщений из 27, страница 1 из 2
Форумы / NoSQL, Big Data [игнор отключен] [закрыт для гостей] / СУБД для хранения графов/матрицы связности
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]