6大Node.js非关系型小型数据库
最近想用node.js做一个爬虫,涉及到数据的保存和读取。之前我的做法是自己写代码使用文件系统储存,今天突发奇想,现在node.js的npm成千上百万,有没有一些非常简单的数据库?不用像moogodb那么复杂,更不用像mysql那样麻烦。我的要求很简单:数据能够增删查改,使用简单,不用安装一大堆东西,不用写任何配置。
经过一番搜索,我找到了6个符合我要求的Node.js上可用的非关系型小型数据库:
NeDB
NeDB可以让数据存储在内存中,也可以存储在文件中,而且它不仅可以配合node.js使用,还可以在浏览器端使用。
- 安装:
npm install nedb --save
npm test
bower install nedb
- API
- 浏览器端用法
<script src="nedb.min.js"></script>
<script>
var db = new Nedb(); // Create an in-memory only datastore
db.insert({ planet: 'Earth' }, function (err) {
db.find({}, function (err, docs) {
// docs contains the two planets Earth and Mars
});
});
</script>
Lowdb
lowdb同样支持node.js和浏览器端的使用。
为什么选择Lowdb?
- 和Lodash API一致。如果你之前用过Lodash,那么lowdb的用法你就很熟悉了;
- 体积小,简单易用;
灵活性和可扩展性高:
- 自定义存储方式:文件类型存储、内存存储和浏览器端存储都可以;
- 自定义格式:(JSON, BSON, YAML, XML, ...)
- 支持只读和只写模式
- 可加密
- 不支持多核
LokiJS
LokiJS可以运行在下列环境:
- node (including cordova/phonegap and node-webkit)
- javascript
- 浏览器端
LokiJS的特点:
- 高性能(110万 读写/秒) and binary-index (500k ops/s)
- 支持多种环境运行
- 动态视图,用于快速访问数据子集
- 内置持久适配器,以及支持用户定义适配器的能力
node-dirty
node-dirty是一个快速小型的数据,适用于小于100万条记录的使用场景。其特点是:
- 文件格式是换行符分隔的JSON
- 数据库与应用程序在同一个进程中,共享内存
- 没有查询语言,通过forEach查询记录
tiny
tiny是运行在node.js中的文档/对象存储型数据库。
它主要是受nStore的启发,然而,它的目标是实现真正的内存查询。
Tiny是很简单的,没有数据库模型,它只是存储你的对象。它支持mongo风格的查询,或者类似于CouchDB的视图的“mapreduce样”界面。
TinyDB
TinyDB是基于NodeJS的使用json文件存储的数据库。它比较适合在一些小型项目中使用。它具有如下特点:
- 在添加或删除条目后自动在内存中保存数据到本地文件;
- 所有API都有一个用于数据处理的回调函数;
- API风格参考Mongoose;
- 没有第三方依赖。