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


130

任何人都知道可以用Node.js使用Java编写的轻量级但持久的数据库。

我不希望Mongo或Couch之类的(伟大)解决方案具有“重量”。一个简单的内存JS数据库具有将文件作为文件持久存储的能力就足够了。我只会用它来存储少量数据。

要求:

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

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

谢谢


Answers:



103

我有与您相同的要求,但找不到合适的数据库。nStore很有前途,但API不够完善且不够统一。

这就是为什么我制作NeDB的原因,它是Node.js项目的无依赖嵌入式数据库。您可以将它与简单的require(),持久的一起使用,并且它的API是非常著名的MongoDB API的最常用子集。

https://github.com/louischatriot/nedb


8
nedb很棒,但是请注意,您不能在多个进程中使用它-每个进程在启动时都会获得自己的副本。
Meekohi 2014年

12
作为一个单挑的人,看起来NeDB可能已经被放弃了。
Guy

3
我不明白为什么1.5年前的最新承诺意味着该项目被放弃了。绝对不是,它只是实现了目标,我认为功能爬坡没有任何价值……
Louis Chatriot

7
考虑使用一个简单的脚本,该脚本每3个月更新一次README,替换最后一行显示“该项目在<today's date>-NeDB(c)2013- <today's year> Louis Chatriot时仍处于活动状态”。提交消息应该类似于“声明该项目截至<今天的日期>仍在活动中”之类的内容,这将是人们在github顶部看到的第一件事。
Giacomo Lacava

6
@LouisChatriot我必须同意。您有107个问题,那里有32个PR,最后一次更改代码是3年前。只是看到这一点,它是我不想引入并处理不兼容问题的软件(在js dev中工作3年是永恒的),被忽略的问题,等等。适量的星星,但它并没有让人尖叫。
卡尔斯·阿尔科利亚

18

NeDB似乎就是您想要的。从简介:

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


@Deilan我不明白为什么1.5年前的最新提交意味着该项目被放弃了。绝对不是,它只是实现了目标,我认为功能
爬升

@LouisChatriot我同意,到目前为止,我通常对任何判断都是错误的。所以我从最初的评论中删除了它。
Deilan '18

16

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

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

LokiJS是理想的解决方案:

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

https://github.com/techfort/LokiJS


如果我清除本地存储,lokiJS中的数据会被清除吗?
HIRA THAKUR

@LeonardoDaCodinchi-取决于您的使用方式,但是在Node中,它保存到json文件中以保持持久性。
BryanGrezeszak

虽然数据库仍然在启动时存储在内存中。从我所了解的。
mjwrazor

14

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

https://github.com/sergeyksv/tingodb


1
与MongoDB完全兼容是一个非常不错的功能-开发您的应用程序以与小型本地数据库一起使用,然后根据需要扩展到MongoDB...。谢谢!
布莱德·帕克斯

......但绝对不要忘记比较nedb,这也是MongoDB的兼容,看看哪一种适合你
布拉德公园

最新提交于2016
。– Deilan


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}"

感谢您的分享,一段时间以来,我一直在寻找类似的东西。结合小型网站可以很好地工作!
Dieterg 2014年

1
@DieterGoetelen不客气!最近我也很高兴使用功能更强大的EJDB,它具有类似于MongoDB的语法,并且在Node.js和github.com/Softmotions/ejdb-node中
Radek


5

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

https://github.com/btwael/locallydb


谢谢Wael Amine Boutglay LocallyDB刚刚为node js做了我的事情。以前,我使用php并创建了自己的平面文件数据库github.com/sguha-work/LifeDB
Angshu Guha

LocallyDB非常适合本地测试!请注意,它使用块IO。千万不能在生产中使用它。
Junle Li

1
链接无效。这是域名停放页面。
rsp

@rsp链接已修复,请检查http://boutglay.com/locallydb/
Wael Boutglay

最近一次提交于2016
。– Deilan


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.