2011-08-29 64 views
108

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

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

要求:

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

到目前为止,我已经遇到过TAFFY db,但它在Node.js中似乎并没有被优化。有人看到我在那里寻找什么?

感谢

+0

尝试使用https://github.com/rvagg/node-levelup – hellboy

回答

9

我只熟悉蒙戈和沙发,但也有一个命名为Persistence

+8

你还会认为这是一个解决方案吗?最后一次提交是7年前。 – mjwrazor

+0

最新提交于2010年3月31日。 – Deilan

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

感谢您的分享,我一直在寻找类似的东西。这与小网站相结合的工作很好! – Dieterg

+0

@DieterGoetelen欢迎您!我最近也很高兴使用功能更强大的EJDB,它具有类似MongoDB的语法,并且具有Node.js和更高版本的绑定功能https://github.com/Softmotions/ejdb-node – Radek

2

我写jaguarDb处理一些,你都在提,因为我有时需要进行演示或测试项目中的“小”数据库太的东西,我不不想依赖mongoDB或其他真实数据库。

https://github.com/hectorcorrea/jaguarDb

+0

2013年4月3日最新提交。 – Deilan

89

我有同样的要求,你也没有找到合适的数据库。 nStore很有前途,但API并不够完整,也不是非常一致。

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

https://github.com/louischatriot/nedb

+6

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

+6

作为单挑,它看起来像NeDB可能已被放弃。 – Guy

+1

我不明白为什么1.5年前的最新承诺意味着项目被放弃。它绝对不是,它只是实现了它的目标,我没有看到功能蠕变的任何价值... –

10

看看http://www.tingodb.com。我相信它符合你的要求。另外它完全兼容MongoDB API。这可以降低实施风险,并可让您随着应用程序的增长切换到繁重的解决方案。

https://github.com/sergeyksv/tingodb

+0

与MongoDB完全兼容是一个非常不错的功能 - 开发您的应用程序与小型本地数据库一起工作,然后如果需要,可扩展到MongoDB ....谢谢! –

+0

...但绝对不要忘记与[nedb](https://github.com/louischatriot/nedb)相比,它也是MongoDB兼容的,看看哪些适合你 –

+0

最新提交于2016年12月26日 – Deilan

18

NeDB似乎是你在找什么。从blurb:

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

+0

@Deilan我不明白为什么1.5年前的最新承诺意味着项目被放弃。它绝对不是,它只是实现了它的目标,我没有看到功能蠕变的任何价值... –

+0

@LouisChatriot我同意,一般来说我是错误的任何判决到目前为止。所以我从最初的评论中删除了它。 – Deilan

5

提供一个抽象也许你应该尝试LocallyDB它易于使用,重量轻,除了有类似的JavaScript高级遴选制度条件表达式...

https://github.com/btwael/locallydb

+0

感谢Wael Amine Boutglay LocallyDB只是为节点j做了我的事情。以前我使用php,并创建了自己的平面文件数据库https://github.com/sguha-work/LifeDB –

+0

LocallyDB非常适合*本地*测试!请注意它使用块IO。不要**在生产中使用它。 –

+1

链接不起作用。这是一个域名停放页面。 – rsp

12

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

  • 在内存中的Javascript数据存储王氏持久
  • 在浏览器中的NoSQL数据库与同步,持续
  • 一个Redis的风格店的NPM安装远
  • 持久化的NoSQL数据库的科尔多瓦
  • 嵌入的NoSQL db with persistence for node-webkit

LokiJS成为理想的解决方案:

  • 移动应用 - 尤其是基于HTML5(科尔多瓦的PhoneGap, 等),用于在桌面应用程序的嵌入式与节点的Webkit
小到中等的应用程序
  • Node.js的嵌入式数据存储

    https://github.com/techfort/LokiJS

  • +0

    我的数据在lokiJS会被清除,如果我清除我的本地存储? –

    +0

    @LeonardoDaCodinchi - 取决于你如何使用它,但在节点它保存到一个JSON文件的持久性。 – BryanGrezeszak

    +0

    虽然启动时数据库仍然保存在内存中。从我所了解的东西开始。 – mjwrazor