用于Node.js的轻量级Javascript数据库

Con*_*oob 125 javascript database key-value-store

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

我不想要像Mongo或Couch这样的(伟大的)解决方案的"重量".一个简单的内存JS数据库,能够作为文件持久存储到磁盘就足够了.我只会用它来存储少量数据.

要求:

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

到目前为止,我遇到了TAFFY db,但它似乎并没有在Node.js中使用.有人看到我在那里寻找的东西吗?

谢谢

Lou*_*iot 102

我有与您相同的要求,但找不到合适的数据库.nStore很有希望,但API不够完整,不够连贯.

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

https://github.com/louischatriot/nedb

  • @LouisChatriot 我必须同意。你有 107 个问题,32 个 PR 坐在那里,最后一次更改代码是在 3 年前。看到这一点,这是我不想引入并处理不兼容性的软件(在 js 开发中 3 年是永恒的),被忽略的问题等。适量的星星,但它不会尖叫。 (10认同)
  • nedb很棒,但请注意,您不能在多个进程中使用它 - 每个进程在启动时都会获得自己的副本. (8认同)
  • 作为单挑局,看起来NeDB可能已被抛弃. (8认同)
  • 考虑使用一个简单的脚本每3个月更新一次README,替换最后一行说"这个项目仍然活跃为<今天的日期> - NeDB(c)2013- <今天的年份> Louis Chatriot"; 提交消息应该类似于"声明项目在<今天的日期>时仍处于活动状态",这将是人们在github顶部看到的第一件事. (6认同)
  • 自 2021 年 7 月 8 日起正式“不再维护” (4认同)
  • 我不明白为什么1.5年前的最新提交意味着该项目被放弃了.它绝对不是,它只是实现了它的目标,我没有看到功能蠕变的任何价值...... (2认同)

Chr*_*ans 18

NeDB似乎正是您所寻找的.从模糊:

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


Dam*_*ran 15

Lokijs:面向node.js,browser和cordova的快速,内存中面向文档的数据存储.

  • 内存中的Javascript数据存储区,具有持久性
  • 具有同步和持久性的浏览器NoSQL数据库
  • 一个Redis风格的商店安装npm
  • 适用于Cordova的可持久NoSQL数据库
  • 使用Persistence for node-webkit嵌入NoSQL数据库

LokiJS是理想的解决方案:

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

https://github.com/techfort/LokiJS


Ser*_*kov 13

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

https://github.com/sergeyksv/tingodb


Guy*_*and 9

尝试nStore,它似乎是一个很好的键/值轻量级嵌入式数据库节点.请参阅https://github.com/creationix/nstore

  • 2013 年 4 月 2 日的最新提交。 (2认同)

Rad*_*dek 7

我在SQLite3,nStore和Alfred方面遇到了麻烦.

对我有用的是节点脏:

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}"
Run Code Online (Sandbox Code Playgroud)


小智 7

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

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

你也可以看看UnQLite.与node.js绑定node-unqlite

https://github.com/symisc/unqlite


Ste*_*eve 6

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

  • 你还会考虑这个解决方案吗?最后一次提交是7年前. (13认同)
  • 这怎么可能更好@Chamiyan (3认同)
  • 最新提交时间为2010年3月31日。 (2认同)
  • 我认为您正在寻找更新的 [PersistenceJS](https://github.com/coresmart/persistencejs) (2认同)

Wae*_*lay 5

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

https://github.com/btwael/locallydb

  • 2016 年 8 月 1 日的最新提交。 (2认同)