需要一个可嵌入的NoSQL数据库来处理~1Gb数据集,并保存在磁盘

时间:2016-09-20 16:07:58

标签: database electron embeddable nedb nosql

我正在构建一个Electron应用程序,我需要选择一个可嵌入的NoSQL数据库。实际上,该数据库应该包含存储在ArangoDB远程后端上的本地数据子集。我一直在互联网上搜索很多,但到目前为止还没有收敛到最终的候选人。我希望有人能从经验中为我提供建议。

典型的数据集可能达到数万个文档,我可以想象这个集合随着时间的推移会达到〜1Gb的情况。此外,我需要二级索引。

我看过PouchDB,UnQlite,LokiJS,LevelDB,NeDB,LinvoDB ......

最后,NeDB和LinvoDB似乎是合理的候选者,具有持久性到磁盘(类似SQlite),其中NeDB无法处理大型数据集; LinDBDB(NeDB的一个分支)似乎能够处理的东西。 LinvoDB不会将整个数据库加载到内存中,但默认情况下会将“所有内容”编入索引,并将其保留在内存中。

另一方面,我试图跟踪几个关于他们的索引的对话,其中NeDB似乎在他们的文档中建议它们被保存到磁盘(https://github.com/louischatriot/nedb#indexing),一旦构建,然后再次出现被LinvoDB否定了(对不起,我在大量的标签打开中丢失了许多引用/来源......),建议索引在发布时从头开始构建。 (也可能是我误解了NeDB的文档。)

基本上,我需要的是一个针对Electron应用程序的JS数据库解决方案,它可能包含“相当多”但不是“巨大”的数据量。应用程序的加载时间应该是合理的(即不要阻止使用),同时响应(即数据库应包含二级索引)并尽可能地尊重用户的资源。

问题:

  1. 是否有任何人对上述或其他嵌入式NoSQL数据库有任何经验,可以根据我的用例推荐这些或其他数据库?
  2. 如果确实每次启动应用程序时都需要从头开始重建LinvoDB的索引,那么这可能是一次重大的性能损失(加载时间为几秒)? (当然我必须对此进行基准测试......)
  3. ArangoDB不可嵌入,但也许我应该考虑将其作为服务与我的原生应用程序一起部署?此链接NoSQL database: ArangoDB似乎表明开发人员本身并不鼓励这样做。这会是矫枉过正和/或用户友好吗?表现受到了打击?
  4. 任何建议都会非常感激。

1 个答案:

答案 0 :(得分:0)

考虑过sqlite? 有一个npm package,它适用于电子,我自己尝试过。 你只需要rebuild electron,这可能会产生一些问题。

在这里你的答案:

  1. 是的我有,但不多
  2. 不,我从未尝试过LinvoDB
  3. 不,我从未尝试过ArangoDB