内存数据库(lokiJS)与常规索引数据库

Posted

技术标签:

【中文标题】内存数据库(lokiJS)与常规索引数据库【英文标题】:in-memory DB (lokiJS) vs regular indexedDB 【发布时间】:2019-08-09 12:18:21 【问题描述】:

我正在寻找一个可以存储数据的 indexedDB 包装库。

(具体用途是 javascript cordova 应用程序,但也可以在浏览器中运行)

我找到了LokiJS,这似乎是可行的。然而,LokiJS 说这是一个:

具有持久性的内存中 JavaScript 数据存储

但我不明白“内存中”是什么意思。我尝试谷歌搜索,环顾四周,但找不到简明的解释......

“in-memory”indexedDB 与常规 indexedDB 有何不同?

【问题讨论】:

在内存中意味着不持久化到磁盘。这意味着它只会在加载时持续。 @Josh 这很奇怪,如果“内存中”的意思是“不持久”,那么“内存中的持久性”是什么意思? o_O 根据您的信息,我会觉得他们自相矛盾...?还是我错了。 ?????? @Josh (and mesqueeb) in-memory 表示整个数据加载到内存中并从内存中查询。持久化到磁盘实际上无关。 LokiJS 提供持久性,使您能够跨会话或在错误/崩溃的情况下恢复状态。传统数据库将数据保存到磁盘并查询文件以返回数据(它们使用内存进行某种级别的查询缓存)。 LokiJS 的价值在于您可以查询数据的方式,但它可以使用 indexedDB 作为持久性机制。 @JoeMinichino 非常感谢您的评论!!没想到会在这里见到你????我非常感谢您使用 LokiJS 所做的一切。 @mesqueeb 谢谢!祝你工作顺利! 【参考方案1】:

LokiJS 是一个内存数据库,这意味着它可以让您加载、查询等所有内存数据。由于它是用 Javascript 编写的,因此可以在多种环境中运行,包括浏览器、NodeJS 应用程序、Cordova 应用程序等。

如果您在浏览器应用程序中使用它,它可以使用 localstorage 或 indexedDB 来存储数据。

如果您在 NodeJS 应用程序中使用它,它可以使用文件系统或其他数据库(mysql、mssql 等)来存储数据。

如果您在 Cordova 应用程序中使用它,它可以使用 SQLite 来存储数据。

基本上,取决于您在哪里运行应用程序以及该平台上可用的存储选项,它将使用它来持久化数据。

您可以查看here 以查看可用于在不同平台上存储数据的不同适配器-

【讨论】:

【参考方案2】:

您也可以查看 PouchDBhttps://github.com/pouchdb/pouchdb

它比 Locki.js 有双星和分叉,而且似乎也是如此。

【讨论】:

以上是关于内存数据库(lokiJS)与常规索引数据库的主要内容,如果未能解决你的问题,请参考以下文章

索引 Apache Ignite 缓存与优化的内存 CassandraDB

实习生常规技术面试题(数据库)

实习生常规技术面试题(数据库)

MySQL的B树索引与索引优化

常规问题总结之大并发

内存数据库索引