我正在构建一个 Electron 应用程序,我需要为此选择一个可嵌入的 NoSQL 数据库。事实上,这个数据库应该包含存储在 ArangoDB 远程后端的本地数据子集。我一直在互联网上搜索了很多,但到目前为止未能收敛到最终的候选人。我希望有人可以根据经验给我建议。
典型的数据集可能有大约数万个文档,我可以想象随着时间的推移该集合将达到大约 1Gb 的情况。此外,我需要二级索引。
我看过 PouchDB、UnQlite、LokiJS、LevelDB、NeDB、LinvoDB ......
最后,NeDB 和 LinvoDB 似乎是具有持久性到磁盘(类似 SQlite)的合理候选者,其中 NeDB 无法处理大型数据集;NeDB 的一个分支 LinvoDB 似乎能够处理的东西。LinvoDB 不会将整个数据库加载到内存中,但默认情况下似乎会索引“所有内容”并将其保存在内存中。
另一方面,我尝试关注关于他们的索引的几个对话,其中 NeDB 似乎在他们的文档中建议它们一旦构建就被持久化到磁盘(https://github.com/louischatriot/nedb#indexing),其中然后似乎再次被 LinvoDB 否定(对不起,我在打开的大量选项卡中丢失了许多引号/来源......),表明索引将在启动时从头开始构建。(而且我也可能完全误解了 NeDB 的文档。)
基本上,我需要的是一个适用于 Electron 应用程序的 JS 数据库解决方案,它可能包含“相当多”但不是“大量”数据。应用程序的加载时间应该是合理的(即,不妨碍使用),同时是响应式的(即,数据库应该包含二级索引)并尽可能尊重用户的资源。
问题:
- 有没有人对上述或其他嵌入式 NoSQL 数据库有任何经验,可以为我的用例推荐这些或其他数据库中的任何一个?
- 如果每次我启动应用程序时确实需要从头开始重建 LinvoDB 的索引,那会不会对性能造成重大影响(加载时间大约为秒)?(当然我必须对此进行基准测试......)
- ArangoDB 不可嵌入,但也许我应该考虑将它作为服务部署在我的原生应用程序旁边?此链接NoSQL 数据库:ArangoDB似乎建议开发人员自己不要阻止这一点。这会矫枉过正和/或对用户不友好吗?性能受到打击?
任何建议将不胜感激。