|
СУБД для хранения графов/матрицы связности
|
|||
---|---|---|---|
#18+
Коллеги, Ищу СУБД для хранения графа. Граф не направленный, не взвешенный, размерность графа не более 100 000 узлов. По факту нужно хранить матрицу 100 000 на 100 000, где каждый бит указывает на наличие связи. Такую СУБД в принципе не долго и самому написать, но есть проблема, что пользоваться ей должны из нескольких приложений, написанных на разных языках. Так что какое-то готовое решение - предпочтительнее. Сейчас храним данные в SQL сервер, для каждой связи - запись в таблице. Не устраивает скорость проверки наличия связи и скорость добавления новой связи, размер БД. Очевидно, что в случае с матрицей можно добиться наилучшей производительности. Есть ли что-то похожее? P.S. Сейчас смотрю в сторону графовых БД, но насколько понимаю они хранят данные не как матрицу... Могу ошибаться. Также стоит отметить, что у нас нет задач поиска кратчайших путей и т.п., так что этот функционал для нас избыточен. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2015, 14:06 |
|
СУБД для хранения графов/матрицы связности
|
|||
---|---|---|---|
#18+
Spinifex, Так может в памяти держать если прямо такая простая задача и сделать доступ через REST? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2015, 14:14 |
|
СУБД для хранения графов/матрицы связности
|
|||
---|---|---|---|
#18+
GregTk, Да, как вариант, но опять же не верится что нет уже готового решения. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2015, 14:23 |
|
СУБД для хранения графов/матрицы связности
|
|||
---|---|---|---|
#18+
Spinifex, А сейчас какие метрики на вставку и на выборку? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2015, 14:30 |
|
СУБД для хранения графов/матрицы связности
|
|||
---|---|---|---|
#18+
SpinifexКоллеги, Ищу СУБД для хранения графа. Граф не направленный, не взвешенный, размерность графа не более 100 000 узлов. По факту нужно хранить матрицу 100 000 на 100 000, где каждый бит указывает на наличие связи. Такую СУБД в принципе не долго и самому написать, но есть проблема, что пользоваться ей должны из нескольких приложений, написанных на разных языках. Так что какое-то готовое решение - предпочтительнее. 1) Зачем именно матрицу? 2) Какие запросы будут? 3) Не проще SQLite с таблицей ребер и индексами? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2015, 15:19 |
|
СУБД для хранения графов/матрицы связности
|
|||
---|---|---|---|
#18+
gandjustasSpinifexКоллеги, Ищу СУБД для хранения графа. Граф не направленный, не взвешенный, размерность графа не более 100 000 узлов. По факту нужно хранить матрицу 100 000 на 100 000, где каждый бит указывает на наличие связи. Такую СУБД в принципе не долго и самому написать, но есть проблема, что пользоваться ей должны из нескольких приложений, написанных на разных языках. Так что какое-то готовое решение - предпочтительнее. 1) Зачем именно матрицу? 2) Какие запросы будут? 3) Не проще SQLite с таблицей ребер и индексами? 1) В моем представлении это самый эффективный способ из возможных. 2) Запросы очень простые. Проверка существования связи и вставка связи/пачки связей. 3) У нас сейчас так и реализовано (таблица с двумя ID узлов и индексы на ней в обе стороны). Например база с 65 тыс. узлов, где все связанны со всеми занимает порядка 10 Гб. В то время как матрица с битами должна занимать 512 Мб - вполне может поместится в памяти. Да, там можно тип данных для ID узла заменить на tiny int, но все равно матрица будет быстрее. Или вы так не считаете? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2015, 15:57 |
|
СУБД для хранения графов/матрицы связности
|
|||
---|---|---|---|
#18+
Spinifexgandjustasпропущено... 1) Зачем именно матрицу? 2) Какие запросы будут? 3) Не проще SQLite с таблицей ребер и индексами? 1) В моем представлении это самый эффективный способ из возможных. 2) Запросы очень простые. Проверка существования связи и вставка связи/пачки связей. 3) У нас сейчас так и реализовано (таблица с двумя ID узлов и индексы на ней в обе стороны). Например база с 65 тыс. узлов, где все связанны со всеми занимает порядка 10 Гб. В то время как матрица с битами должна занимать 512 Мб - вполне может поместится в памяти. Да, там можно тип данных для ID узла заменить на tiny int, но все равно матрица будет быстрее. Или вы так не считаете? Узлы добавляться не будут? Тогда просто матрицу сериализуйте в файл и все. Если будут, то никак матрицу хранить не выйдет, придется её восстанавливать из списка смежных вершин (по сути той же таблицы, что у вас). ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2015, 23:09 |
|
СУБД для хранения графов/матрицы связности
|
|||
---|---|---|---|
#18+
SpinifexGregTk, Да, как вариант, но опять же не верится что нет уже готового решения.Решения есть, но готовы ли платить и изучать новые технологии? GregTkSpinifex, А сейчас какие метрики на вставку и на выборку?Spinifex, Присоединяюсь к GregTk: всё-таки можно узнать Ваши текущие метрики? Вот, что получилось у меня: (CPU: Intel Core i5-2400, HDD: Seagate Barracuda 7200.12) Создал 65000 записей по 65000 бит в каждой, итого - 4225000000 бит:
... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2015, 09:41 |
|
СУБД для хранения графов/матрицы связности
|
|||
---|---|---|---|
#18+
SpinifexСейчас храним данные в SQL сервер, для каждой связи - запись в таблице. Не устраивает скорость проверки наличия связи и скорость добавления новой связи, размер БД. Насколько хотите увеличить скорость "проверки наличия связи"? В 2 раза? В 10 раз? В 100 раз? Решения будут разные. Если в 2 раза, можно таблицу сделать индексной (кластерной в смысле MS SQL) -убираем обращение к области данных таблицы, данные хранятся в структуре индекса. До 10 раз помогут глобалные массивы (В-деревья) в СУБД Cache или другой "key-value" NoSQL СУБД. Если в 100 раз, то надо рассматривать in-memory решения, и не обязательно СУБД. А размер БД почему большой? Сколько записей в таблице? Приведите структуру записи. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2015, 12:47 |
|
СУБД для хранения графов/матрицы связности
|
|||
---|---|---|---|
#18+
DirksDRА размер БД почему большой? Сколько записей в таблице? Приведите структуру записи. 17277273 DirksDRНасколько хотите увеличить скорость "проверки наличия связи"? В 2 раза? В 10 раз? В 100 раз? Решения будут разные.Вы не первый, кто просит ТС показать текущие метрики. Похоже, ТС уже нашёл решение. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2015, 13:06 |
|
СУБД для хранения графов/матрицы связности
|
|||
---|---|---|---|
#18+
Spinifex, ну у нас например примерно такого же объема матрица тоже лежит в реляционной таблице, никаких проблем нет. сто тысяч записей не так уж и много... таблица простая, (ид матрицы, номер строки, номер столбца => значение ) и индексы (ид матрицы, номер строки, номер столбца) и (ид матрицы, номер столбца) - и все будет просто летать . ... |
|||
:
Нравится:
Не нравится:
|
|||
31.03.2015, 08:27 |
|
СУБД для хранения графов/матрицы связности
|
|||
---|---|---|---|
#18+
MasterZivсто тысяч записей не так уж и много...ТС жаловался в том числе на размер БД:SpinifexНе устраивает скорость проверки наличия связи и скорость добавления новой связи , размер БД .Сколько у Вас занимает матрица сто тысяч на сто тысяч вместе с индексами, где все связаны со всеми? MasterZivтаблица простая, (ид матрицы, номер строки, номер столбца => значение ) и индексы (ид матрицы, номер строки, номер столбца) и (ид матрицы, номер столбца) - и все будет просто летать.SpinifexУ нас сейчас так и реализовано (таблица с двумя ID узлов и индексы на ней в обе стороны). Например база с 65 тыс. узлов, где все связанны со всеми занимает порядка 10 Гб. Странно, почему у ТС не летает. Наверное, всё-таки MSSQL и Sybase были по-разному "приготовлены". ... |
|||
:
Нравится:
Не нравится:
|
|||
31.03.2015, 10:16 |
|
СУБД для хранения графов/матрицы связности
|
|||
---|---|---|---|
#18+
servitMasterZivсто тысяч записей не так уж и много...ТС жаловался в том числе на размер БД:SpinifexНе устраивает скорость проверки наличия связи и скорость добавления новой связи , размер БД .Сколько у Вас занимает матрица сто тысяч на сто тысяч вместе с индексами, где все связаны со всеми? у него наверняка разреженная матрица, там не сто тысяч на сто тысяч, т.е. десять миллиардов, а меньше, несколько миллионов. но лучше конечно у него спросить. MasterZivтаблица простая, (ид матрицы, номер строки, номер столбца => значение ) и индексы (ид матрицы, номер строки, номер столбца) и (ид матрицы, номер столбца) - и все будет просто летать.SpinifexУ нас сейчас так и реализовано (таблица с двумя ID узлов и индексы на ней в обе стороны). Например база с 65 тыс. узлов, где все связанны со всеми занимает порядка 10 Гб. Странно, почему у ТС не летает. Наверное, всё-таки MSSQL и Sybase были по-разному "приготовлены". а кто говорил про MSSQL и Sybase ? хотя на самом деле это все равно, хоть mysql. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.03.2015, 11:52 |
|
СУБД для хранения графов/матрицы связности
|
|||
---|---|---|---|
#18+
MasterZivа кто говорил про MSSQL и Sybase ?Про MSSQL - ТСSpinifexСейчас храним данные в SQL сервер, про Sybase - это было моё предположение, исходя из Вашего профиля. И всё же, каков будет размер БД в Вашей СУБД для озвученных размеров матрицы? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.03.2015, 12:09 |
|
СУБД для хранения графов/матрицы связности
|
|||
---|---|---|---|
#18+
servit про Sybase - это было моё предположение, исходя из Вашего профиля. Предположение было неверное. Матрица у меня в БД на Oracle. Но ещё раз -- это всё равно. Там будут незначительные нюансы, но в общем, всё равно. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.03.2015, 15:40 |
|
СУБД для хранения графов/матрицы связности
|
|||
---|---|---|---|
#18+
Spinifex, Есть такая база данных Distributed Graph Database Titan - http://thinkaurelius.github.io/titan/ С уважением, Вадим. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2015, 20:16 |
|
СУБД для хранения графов/матрицы связности
|
|||
---|---|---|---|
#18+
Neo4j ... |
|||
:
Нравится:
Не нравится:
|
|||
07.04.2015, 09:01 |
|
СУБД для хранения графов/матрицы связности
|
|||
---|---|---|---|
#18+
OrientDB ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2015, 12:56 |
|
СУБД для хранения графов/матрицы связности
|
|||
---|---|---|---|
#18+
WinnipuhNeo4j Кто-нибудь из русскоговорящих остался в коммньюнити neo4j? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.06.2018, 10:21 |
|
СУБД для хранения графов/матрицы связности
|
|||
---|---|---|---|
#18+
SpinifexКоллеги, Ищу СУБД для хранения графа. Граф не направленный, не взвешенный, размерность графа не более 100 000 узлов. По факту нужно хранить матрицу 100 000 на 100 000, где каждый бит указывает на наличие связи. Такую СУБД в принципе не долго и самому написать, но есть проблема, что пользоваться ей должны из нескольких приложений, написанных на разных языках. Так что какое-то готовое решение - предпочтительнее. Сейчас храним данные в SQL сервер, для каждой связи - запись в таблице. Не устраивает скорость проверки наличия связи и скорость добавления новой связи, размер БД. Очевидно, что в случае с матрицей можно добиться наилучшей производительности. Есть ли что-то похожее? P.S. Сейчас смотрю в сторону графовых БД, но насколько понимаю они хранят данные не как матрицу... Могу ошибаться. Также стоит отметить, что у нас нет задач поиска кратчайших путей и т.п., так что этот функционал для нас избыточен. SQL Server 2017? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2018, 17:15 |
|
СУБД для хранения графов/матрицы связности
|
|||
---|---|---|---|
#18+
Ролг Хупин, Посмотрела документацию MS по SQL Graph-у - даже там внизу несколько негативных отзывов: MS всего лишь создал "синтаксический сахар" поверх реляционной по сути реализации. В результате получатся ровно те же таблицы, что у ТС, с похожим размером и похожей производительностью. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.06.2018, 19:10 |
|
СУБД для хранения графов/матрицы связности
|
|||
---|---|---|---|
#18+
EleanorРолг Хупин, Посмотрела документацию MS по SQL Graph-у - даже там внизу несколько негативных отзывов: MS всего лишь создал "синтаксический сахар" поверх реляционной по сути реализации. В результате получатся ровно те же таблицы, что у ТС, с похожим размером и похожей производительностью. мэм, что-то я про сахар не нашел там, однако, хорошая фича. Негативные отзывы будут всегда и обо всём, я, например, могу вам написать десяток матерных негативных отзывов про FTS, и даже для 2017. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2018, 11:18 |
|
СУБД для хранения графов/матрицы связности
|
|||
---|---|---|---|
#18+
Ролг Хупинчто-то я про сахар не нашел там 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. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2018, 13:12 |
|
СУБД для хранения графов/матрицы связности
|
|||
---|---|---|---|
#18+
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. про сахар там вопрос, но в принципе многие возможности в скл сервер можно обозвать сахаром. Да и хранение - в базе, традиционно, но тут нао определиться, а что - это не устраивает? Они , например, и иерархию сделали через сахар+реализацию, очень неплохо. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2018, 14:20 |
|
СУБД для хранения графов/матрицы связности
|
|||
---|---|---|---|
#18+
Ролг ХупинДа и хранение - в базе, традиционно, но тут надо определиться, а что - это не устраивает? Они, например, и иерархию сделали через сахар+реализацию, очень неплохо. Скорее всего пользователи ждали специализированное решение, увидев громкое название Graph Database - высокую производительность, запросы в несколько раз быстрее. Ожидания не оправдались. 10 – 15 percent performance advantage, как в ссылке выше... подозреваю, это не то, на что надеялся ТС. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2018, 15:57 |
|
|
start [/forum/topic.php?fid=48&fpage=3&tid=1856616]: |
0ms |
get settings: |
12ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
50ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
61ms |
get tp. blocked users: |
2ms |
others: | 258ms |
total: | 416ms |
0 / 0 |