|
Хранение деревьев в MongoDB
|
|||
---|---|---|---|
#18+
Добрый день! Прошу совета, решил попробовать использовать в проекте документоориентированную БД. В БД необходимо хранить дерево (каталог). Конечным элементам дерева будут соответствовать некоторые коллекции. Скриптовым языком был выбран node.js. Если у кого есть опыт, поделитесь, как лучше хранить дерево? каждый узел=отдельный документ с собственным id и указанием родительского id? Или хранить все дерево единым объектом со вложенными массивами объектов в качестве дочерних узлов? Какие в таком случае ограничения на документ? И как все это будет парситься? (интересует скорость и наличие готовых npm), спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.09.2016, 09:51 |
|
Хранение деревьев в MongoDB
|
|||
---|---|---|---|
#18+
Храним единым объектом со вложенными массивами. Элемент массива - это объект, что содержит только необходимую для отображения информацию. Детальная информация хранится в отдельной колекции, а элемент дерева тупо хранит идентификатор документа из данной коллекции. Ограничения на документ в MongoDB - это не больше 16 мегабайт и 100 уровней вложенности. Об остальных читайте в документации . ... |
|||
:
Нравится:
Не нравится:
|
|||
06.09.2016, 11:20 |
|
Хранение деревьев в MongoDB
|
|||
---|---|---|---|
#18+
prog_130Прошу совета, решил попробовать использовать в проекте документоориентированную БД. ... В БД необходимо хранить деревоа, простите, чем был обусловлен выбор документарной БД (монга) кроме как "попробовать"? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.09.2016, 11:54 |
|
Хранение деревьев в MongoDB
|
|||
---|---|---|---|
#18+
Дедушкаprog_130Прошу совета, решил попробовать использовать в проекте документоориентированную БД. ... В БД необходимо хранить деревоа, простите, чем был обусловлен выбор документарной БД (монга) кроме как "попробовать"? Стркутура БД. Статические данные, по которым не будет вестись какого то детального поиска - лишь связь коллекция - узел дерева. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.09.2016, 13:31 |
|
Хранение деревьев в MongoDB
|
|||
---|---|---|---|
#18+
prog_130Стркутура БД. Статические данные, по которым не будет вестись какого то детального поиска - лишь связь коллекция - узел дерева. А чем не подходит PostgreSQL, MySQL и любая другая современная СУБД с эффективным хранением того же json? Оно и надежнее монги и, скорее всего, быстрее ) ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2016, 03:44 |
|
Хранение деревьев в MongoDB
|
|||
---|---|---|---|
#18+
DPH3prog_130Стркутура БД. Статические данные, по которым не будет вестись какого то детального поиска - лишь связь коллекция - узел дерева. А чем не подходит PostgreSQL, MySQL и любая другая современная СУБД с эффективным хранением того же json? Оно и надежнее монги и, скорее всего, быстрее ) Это Ваше субъективное мнение, или тесты какие есть? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2016, 09:17 |
|
Хранение деревьев в MongoDB
|
|||
---|---|---|---|
#18+
skyANADPH3пропущено... А чем не подходит PostgreSQL, MySQL и любая другая современная СУБД с эффективным хранением того же json? Оно и надежнее монги и, скорее всего, быстрее ) Это Ваше субъективное мнение, или тесты какие есть? По производительности, например, https://habrahabr.ru/post/274313/ Но при этом в Postgre 9.6 уже есть изменение внутри документа, так что на update там все должно быть лучше. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.09.2016, 02:48 |
|
Хранение деревьев в MongoDB
|
|||
---|---|---|---|
#18+
DPH3, в комментариях к статье правильно написали, что тесты там - это полный треш. Смотрим другие https://www.arangodb.com/2015/10/benchmark-postgresql-mongodb-arangodb/ И видим совершенно другую картину. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.09.2016, 09:45 |
|
Хранение деревьев в MongoDB
|
|||
---|---|---|---|
#18+
skyANA, ну, там тесты еще больший шлак. Mongo в режиме по умолчанию, насколько я помню, данные на диск скидывает "когда придется", а у PostreSQL при этом не выставлен fsync=off (и прочие аналогичные настройки). Но вообще как только нужны хоть какие-то гарантии, производительность на запись сводится к IOPSам и умению работать с диском, а этого у PostgreSQL побольше, чем у Монги. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2016, 00:52 |
|
Хранение деревьев в MongoDB
|
|||
---|---|---|---|
#18+
DPH3, а ТСу важна производительность записи? Допустим в Postgres она будет на пару миллисекунд быстрее, и что? Вангую что у него гораздо больше чтений планируется, чем записи. А по чтению Mongo быстрее Postgres. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2016, 07:34 |
|
Хранение деревьев в MongoDB
|
|||
---|---|---|---|
#18+
skyANADPH3, а ТСу важна производительность записи? Допустим в Postgres она будет на пару миллисекунд быстрее, и что? Вангую что у него гораздо больше чтений планируется, чем записи. А по чтению Mongo быстрее Postgres. откуда такая уверенность? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2016, 10:00 |
|
Хранение деревьев в MongoDB
|
|||
---|---|---|---|
#18+
MasterZivskyANADPH3, а ТСу важна производительность записи? Допустим в Postgres она будет на пару миллисекунд быстрее, и что? Вангую что у него гораздо больше чтений планируется, чем записи. А по чтению Mongo быстрее Postgres. откуда такая уверенность? Уверенность в чём? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2016, 10:09 |
|
Хранение деревьев в MongoDB
|
|||
---|---|---|---|
#18+
DPH3skyANA, ну, там тесты еще больший шлак. Mongo в режиме по умолчанию, насколько я помню, данные на диск скидывает "когда придется" Сразу видно, что с MongoDB не работал, зато кучу рекомендаций уже написал. Нет, ты не прав, MongoDB пишет данные и журнал и флашит на диск. Есть широкие возможности управлением WriteConcern https://docs.mongodb.com/manual/reference/write-concern/ DPH3а у PostreSQL при этом не выставлен fsync=off (и прочие аналогичные настройки). Монгу значит для тестов берем в режиме по умолчанию, а у постгриса отключаем флаш? Из тебя бы отменный тестер получился. DPH3Но вообще как только нужны хоть какие-то гарантии, производительность на запись сводится к IOPSам и умению работать с диском, а этого у PostgreSQL побольше, чем у Монги. Чего именно там побольше? По подробнее пожалуйста. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2016, 13:29 |
|
Хранение деревьев в MongoDB
|
|||
---|---|---|---|
#18+
HettСразу видно, что с MongoDB не работал, зато кучу рекомендаций уже написал. Нет, ты не прав, MongoDB пишет данные и журнал и флашит на диск. Есть широкие возможности управлением WriteConcern https://docs.mongodb.com/manual/reference/write-concern/ Хм, по умолчанию j:true не выставлено, в этом случае для WhiteTiger журнал пишется на диск раз в 50ms, а не на каждую запись. HettМонгу значит для тестов берем в режиме по умолчанию, а у постгриса отключаем флаш? Из тебя бы отменный тестер получился. Да, так как у Постре по умолчанию более "надежные" установки, нежели у Монги. Для тестирования нужно их привести к общему знаменателю. В общем случае, увы, это можно сделать только при работе непосредственно с кодом обоих систем. Чего именно там побольше? По подробнее пожалуйста. Опыта работы с разным уровнем граблей и общей заточенности на надежное хранение (как традиционное для классических СУБД). ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2016, 19:21 |
|
Хранение деревьев в MongoDB
|
|||
---|---|---|---|
#18+
DPH3Хм, по умолчанию j:true не выставлено, в этом случае для WhiteTiger журнал пишется на диск раз в 50ms, а не на каждую запись. Вообще-то пишет. Код: plaintext
DPH3Да, так как у Постре по умолчанию более "надежные" установки, нежели у Монги. Для тестирования нужно их привести к общему знаменателю. В общем случае, увы, это можно сделать только при работе непосредственно с кодом обоих систем. У обоих по умолчанию журнал включен, как мы выяснили. Одну СУБД тестировали так, другую сяк, - как следствие тесты можно выкинуть. DPH3Опыта работы с разным уровнем граблей и общей заточенности на надежное хранение (как традиционное для классических СУБД). Что-то существенно можешь сказать, какие-то конкретные механизмы, алгоритмы, подходы и т.п.? Иначе это какой-то пук в лужу, уж извините. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2016, 20:24 |
|
|
start [/forum/topic.php?fid=48&msg=39304303&tid=1856730]: |
0ms |
get settings: |
12ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
164ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
67ms |
get tp. blocked users: |
2ms |
others: | 237ms |
total: | 523ms |
0 / 0 |