144

任何人都知道可以与 Node.js 一起使用的用 Javascript 编写的轻量级但耐用的数据库。

我不想要像 Mongo 或 Couch 这样的(伟大的)解决方案的“重量”。一个简单的、内存中的 JS 数据库能够以文件的形式保存到磁盘就足够了。我只会用它来存储少量数据。

要求:

  • 可以在 node.js 服务器应用程序的进程中运行
  • 可以将整个数据库保存到磁盘并在发生故障后恢复
  • 不需要原子写入或事务支持
  • 快速查询和排序会很好
  • 只需要支持小数据量,总共最大1MB

到目前为止,我遇到过 TAFFY db,但它似乎并没有针对在 Node.js 中的使用进行优化。有人看到我在外面找什么吗?

谢谢

4

11 回答 11

120

我和你有同样的要求,但找不到合适的数据库。nStore 很有希望,但 API 还不够完整,也不是很连贯。

这就是我制作NeDB的原因,它是一个用于 Node.js 项目的无依赖嵌入式数据库。你可以用一个简单的require(),它是持久的,它的 API 是非常著名的 MongoDB API 中最常用的子集。

https://github.com/louischatriot/nedb

于 2013-05-24T16:00:45.973 回答
25

Lokijs:用于 node.js、浏览器和 cordova 的快速、内存中的面向文档的数据存储。

  • 具有持久性的内存中 Javascript 数据存储
  • 具有同步和持久性的浏览器内 NoSQL 数据库
  • 一个 Redis 风格的商店 npm install away
  • Cordova 的持久 NoSQL 数据库
  • 用于 node-webkit 的具有持久性的可嵌入 NoSQL 数据库

LokiJS 是理想的解决方案:

  • 移动应用程序——尤其是基于 HTML5 的(Cordova、Phonegap 等)
  • 适用于中小型应用程序的 Node.js 嵌入式数据存储
  • 使用 Node Webkit 嵌入桌面应用程序

https://github.com/techfort/LokiJS

于 2015-06-03T16:15:21.150 回答
18

NeDB似乎是您正在寻找的东西。从简介:

Node.js 的嵌入式持久数据库,用 Javascript 编写,没有依赖关系(当然除了 npm 模块)。您可以将其视为 Node.js 项目的 SQLite,可以与简单的 require 语句一起使用。API 是 MongoDB 的一个子集。您可以将其用作持久性或仅内存中的数据存储。

于 2013-11-20T14:15:53.977 回答
16

看看http://www.tingodb.com。我相信它可以满足您的需求。此外,它与 MongoDB API 完全兼容。这降低了实施风险,并让您可以选择随着应用程序的增长切换到重型解决方案。

https://github.com/sergeyksv/tingodb

于 2013-06-07T15:20:03.740 回答
11

我只熟悉 Mongo 和 Couch,但也有一个名为Persistence

于 2011-08-29T18:16:00.597 回答
9

试试 nStore,它似乎是一个不错的节点键/值轻量级嵌入式数据库。见https://github.com/creationix/nstore

于 2012-05-18T22:31:06.470 回答
8

LevelUP 旨在以对 Node.js 友好的方式公开 LevelDB 的功能。

https://github.com/rvagg/node-levelup

你也可以看看 UnQLite。使用 node.js 绑定 node-unqlite

https://github.com/symisc/unqlite

于 2013-10-11T09:55:09.563 回答
8

我在使用 SQLite3、nStore 和 Alfred 时遇到了麻烦。

对我有用的是node-dirty

path = "#{__dirname}/data/messages.json"
messages = db path

message = 'text': 'Lorem ipsum dolor sit...'

messages.on "load", ->    
    messages.set 'my-unique-key', message, ->
        console.log messages.get('my-unique-key').text

    messages.forEach (key, value) ->
        console.log "Found key: #{key}, val: %j", value

messages.on "drain", ->
    console.log "Saved to #{path}"
于 2012-06-19T14:56:12.183 回答
7

也许您应该尝试LocallyDB,它除了具有类似于 javascript 条件表达式的高级选择系统外,还易于使用且轻量级...

https://github.com/btwael/locallydb

于 2014-08-18T21:44:34.983 回答
2

UeberDB 为各种数据库提供抽象

https://github.com/pita/ueberDB

https://www.npmjs.org/package/ueberDB

于 2014-04-03T23:59:59.603 回答
1

我编写了 jaguarDb 来处理您提到的一些事情,因为我有时也需要一个“小”数据库来进行演示或测试项目,而且我不想依赖 mongoDB 或其他真正的数据库。

https://github.com/hectorcorrea/jaguarDb

于 2013-03-04T03:15:47.463 回答