点击蓝字关注未来
NeDB 是使用 Nodejs 实现的 NoSQL 嵌入式数据库,可以充当内存数据库,也可以用来实现本地存储,甚至可以在浏览器中使用。
NeDB 嵌入到应用程序进程中,消除了与客户机服务器配置相关的开销,在运行时,也只需要较少的内存开销,使用精简代码编写,速度更快。其 API 是 MongoDB 的一个子集,可以通过这些接口轻松管理应用程序数据,而不依靠原始的文档文件。
NeDB 查询方式比较灵活,支持使用正则、比较运算符、逻辑运算符、索引以及 JSON 深度查询等。具有简单、轻量、速度快等特点,由于嵌入式数据库存储总数据量最好要控制在 1GB 以内,所以适合在不需要大量数据处理的应用系统中使用(比如使用 nw.js 等实现的桌面应用程序、并发量不大的系统等)。
如何
使用
”在node安装Nedb
npm install nedb --save
Nedb安装在全局环境中
npm install -g nedb
浏览器中安装
浏览器版本及其缩小版位于 browser-version/out 目录中,只需要在 HTML 文件中使用 nedb.js 或 nedb.min.js ,Nedb 即可立即注册全局对象,其 API 与服务器版本相同。
如果指定 filename ,则数据库将是持久的,并根据浏览器自动选择可用的最佳存储方法( IndexedDB 、 WebSQL 或 localStorage )。在大多数情况下,这意味着可以存储大量数据,通常为数百 MB。
NeDB 兼容所有主流浏览器:Chrome、Safari、Firefox、IE9+,可以从源代码构建浏览器版本,构建脚本是 browser-version/build.js 。
// 加载模块
const nedb = require('nedb');
// 实例化连接对象(不带参数默认为内存数据库)
const db = new nedb({
filename: '/data/save.db',
autoload: true
});
性能
表现
”在普通机器上,对于1万条记录,NeDB吞吐量(带索引):
Insert: 5950 ops
Find: 25440 ops
Update: 4490 ops
Remove: 6620 ops
功能
介绍
”插入单项
db.insert({
name: 'tom'
}, (err, ret) => {});
插入多项
db.insert(
[
{ name: 'tom' },
{ name: 'jerry' }
]
, (err, ret) => {});
查询单项
db.findOne({
name: 'tom'
}, (err, ret) => {});
查询多项
db.find({
name: {
$in: ['tom', 'jerry']
}
})
.sort({
_id: -1
})
.exec((err, ret) => {});
更新单项
db.update({
_id: '1'
}, {
$set: {
name: 'kitty'
}
}, (err, ret) => {});
更新多项
db.update({}, {
$set: {
name: 'kitty'
}
}, {
multi: true
}, (err, ret) => {});
删除单项
db.remove({
_id: '1'
}, (err, ret) => {})
删除多项
db.remove({
name: 'kitty'
}, {
multi: true
}, (err, ret) => {});
项目
开源
”遗憾的是,作者于 2021 年 7 月明确表示项目不再进行维护,可能有错误和安全问题,也许接下来会有其他组织或机构接手相关工作。
GitHub:
https://github.com/louischatriot/nedb
虽然 NeDB 暂停了维护,但其小巧完善便捷的开发方式可以帮助次要项目节省不少成本开支。
鸿蒙开天斧