【问题标题】:Lightweight Javascript DB for use in Node.js [closed]用于 Node.js 的轻量级 Javascript DB [关闭]
【发布时间】:2011-08-29 16:38:11
【问题描述】:

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

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

要求:

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

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

谢谢

【问题讨论】:

标签: javascript database key-value-store


【解决方案1】:

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

这就是我创建 NeDB 的原因,它是一个用于 Node.js 项目的无依赖嵌入式数据库。您可以将它与一个简单的require() 一起使用,它是持久的,它的 API 是众所周知的 MongoDB API 中最常用的子集。

https://github.com/louischatriot/nedb

【讨论】:

  • nedb 很棒,但请注意,您不能在多个进程中使用它 - 每个进程在启动时都有自己的副本。
  • 提醒一下,NeDB 可能已经被放弃了。
  • 我不明白为什么 1.5 年前的最新提交意味着该项目已被放弃。绝对不是,它只是实现了它的目标,我认为特征蠕变没有任何价值......
  • 考虑有一个简单的脚本,每 3 个月更新一次 README,替换最后一行“这个项目仍然活跃为 - NeDB (c) 2013- Louis聊天者”;提交消息应该类似于“声明该项目在 仍然处于活动状态”,这将是人们在 github 顶部看到的第一件事。
  • @LouisChatriot 我必须同意。你有 107 个问题,32 个 PR 坐在那里,最后一次更改代码是 3 年前。只是看到这一点,它是我不想引入并处理不兼容性的软件(在 js 开发中的 3 年是永恒的),被忽略的问题等等。适量的星星,但它不会尖叫新鲜。
【解决方案2】:

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

  • 具有持久性的内存中 Javascript 数据存储
  • 具有同步和持久化功能的浏览器内 NoSQL 数据库
  • 一个 Redis 风格的存储,一个 npm 安装就可以了
  • 用于 Cordova 的持久 NoSQL 数据库
  • 用于 node-webkit 的具有持久性的嵌入式 NoSQL 数据库

LokiJS 是理想的解决方案:

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

https://github.com/techfort/LokiJS

【讨论】:

  • 如果我清除本地存储,我在 lokiJS 中的数据会被清除吗?
  • @LeonardoDaCodinchi - 取决于你如何使用它,但在 Node 中它会保存到一个 json 文件以保持持久性。
  • 数据库在启动时仍然存储在内存中。据我了解。
【解决方案3】:

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

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

【讨论】:

  • @Deilan 我不明白为什么 1.5 年前的最新提交意味着该项目已被放弃。绝对不是,它只是实现了它的目标,我认为特征蠕变没有任何价值......
  • @LouisChatriot 我同意到目前为止我的任何判断都是错误的。所以我把它从我最初的 cmets 中删除了。
  • 自 2021 年 7 月 8 日起正式“不再维护”
【解决方案4】:

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

https://github.com/sergeyksv/tingodb

【讨论】:

  • 与 MongoDB 的完全兼容性是一个非常好的功能 - 开发您的应用程序以使用小型本地数据库,然后如果需要,扩展到 MongoDB....谢谢!
  • ...但绝对不要忘记与同样兼容 MongoDB 的 nedb 进行比较,看看哪个更适合您
  • 2016 年 12 月 26 日的最新提交。
【解决方案5】:

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

【讨论】:

  • 您还会认为这是一个解决方案吗?上次提交是 7 年前。
  • 2010 年 3 月 31 日的最新提交。
  • 我认为您正在寻找更新的PersistenceJS
  • 怎么可能更好@Chamilyan
【解决方案6】:

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

【讨论】:

  • 2013 年 4 月 2 日的最新提交。
【解决方案7】:

我在使用 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}"

【讨论】:

  • 感谢您的分享,我一直在寻找类似的东西。这与小型网站结合使用效果很好!
  • @DieterGoetelen 欢迎您!我最近也很高兴使用更强大的 EJDB,它具有类似 MongoDB 的语法,并且在 Node.js 及其他 github.com/Softmotions/ejdb-node 中具有绑定
【解决方案8】:

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

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

您还可以查看 UnQLite。使用 node.js 绑定 node-unqlite

https://github.com/symisc/unqlite

【讨论】:

    【解决方案9】:

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

    https://github.com/btwael/locallydb

    【讨论】:

    • 感谢 Wael Amine Boutglay LocallyDB 刚刚为节点 js 做了我的事。以前我使用 php,我创建了自己的平面文件数据库github.com/sguha-work/LifeDB
    • LocallyDB 非常适合 locally 测试!请注意,它使用块 IO。不要不要在生产中使用它。
    • 链接失效。这是一个域名停放页面。
    • @rsp 链接已修复,检查http://boutglay.com/locallydb/
    • 2016 年 8 月 1 日的最新提交。
    【解决方案10】:

    【讨论】:

      【解决方案11】:

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

      https://github.com/hectorcorrea/jaguarDb

      【讨论】:

      • 2013 年 4 月 3 日的最新提交。
      猜你喜欢
      • 2011-05-19
      • 2012-01-25
      • 2011-10-22
      • 2011-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-02
      • 1970-01-01
      相关资源
      最近更新 更多