Нужна встраиваемая база данных NoSQL, которая обрабатывает наборы данных объемом около 1 Гб, сохраняемые на диске.

Я создаю приложение Electron, для которого мне нужно выбрать встраиваемую базу данных NoSQL. На самом деле эта база данных должна содержать локальное подмножество данных, хранящихся на удаленном бэкэнде ArangoDB. Я много искал в Интернете, но пока не смог сойтись с окончательным кандидатом. Я надеюсь, что кто-то может посоветовать мне из опыта.

Типичные наборы данных составляют, возможно, ~ десятки тысяч документов, и я могу представить случаи, когда набор со временем будет составлять ~ 1 Гб. Кроме того, мне нужны вторичные индексы.

Я просмотрел PouchDB, UnQlite, LokiJS, LevelDB, NeDB, LinvoDB...

В конце концов, NeDB и LinvoDB кажутся разумными кандидатами с сохранением на диск (подобно SQlite), где NeDB не может обрабатывать большие наборы данных; что-то, с чем LinvoDB, форк NeDB, кажется, может справиться. LinvoDB не загружает всю базу данных в память, а по умолчанию индексирует «все» и сохраняет это в памяти.

С другой стороны, я пытался следить за несколькими разговорами об их индексах, где NeDB, кажется, предполагает в своей документации, что они сохраняются на диск (https://github.com/louischatriot/nedb#indexing), после того, как он был создан, который, по-видимому, снова отвергается LinvoDB (извините, я потерял многие цитаты/источники в огромное количество открытых вкладок...), предполагая, что индексы должны создаваться с нуля при запуске. (И, возможно, я вообще неправильно понимаю документацию NeDB.)

По сути, мне нужно решение базы данных JS для приложения Electron, которое может содержать «значительные», но не «огромные» объемы данных. Время загрузки приложения должно быть разумным (т. е. не препятствовать его использованию), в то же время быть отзывчивым (т. е. база данных должна содержать вторичные индексы) и максимально бережно относиться к ресурсам пользователя.

Вопросы:

  1. Есть ли у кого-нибудь опыт работы с вышеуказанными или другими встроенными базами данных NoSQL, с помощью которых можно было бы порекомендовать какую-либо из этих или других для моего варианта использования?
  2. Если действительно индексы LinvoDB нужно перестраивать с нуля каждый раз, когда я запускаю приложение, может ли это быть значительным ударом по производительности (время загрузки порядка секунд)? (Конечно, мне придется сравнить это...)
  3. ArangoDB не встраивается, но, возможно, мне следует просто развернуть его как сервис вместе с моим родным приложением? Эта ссылка база данных NoSQL: ArangoDB предполагает, что сами разработчики не препятствуют этому. Будет ли это излишним и/или не удобным для пользователя? Хит производительности?

Любые советы будут действительно оценены.


person Willem van Gerven    schedule 20.09.2016    source источник


Ответы (2)


Имейте ту же потребность, кажется, linvodb3 - лучший выбор в настоящее время. Он находится в стадии положительного развития, и цель посвящена среде рабочего стола Electron.

person 029xue    schedule 05.12.2016
comment
У меня очень хороший опыт работы с LokiJS. Чрезвычайно быстрый и пара приятных функций! - person Willem van Gerven; 27.02.2017
comment
Но разве LokiJS не является базой данных в памяти? - person Muizz Mahdy; 11.12.2018

Обдумали sqlite? Существует пакет npm, и он работает с электроном, я пробовал это сам. Вам просто нужно перестроить электрон, это может создать некоторые проблемы .

Вот ваши ответы:

  1. да есть, но не сильно
  2. нет, я никогда не пробовал LinvoDB
  3. нет, я тоже никогда не пробовал ArangoDB
person jflepp    schedule 22.09.2016
comment
Да, но, как видно из названия, я ищу базу данных NoSQL, чтобы я мог хранить документы JSON и индексировать атрибуты. - person Willem van Gerven; 22.09.2016