暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

【NeDB】轻巧的 NoSQL 数据库

鸿蒙开天斧 2021-09-23
525

点击蓝字关注未来

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 暂停了维护,但其小巧完善便捷的开发方式可以帮助次要项目节省不少成本开支。 

鸿蒙开天斧

天地混沌如鸡子,盘古生其中,万八千岁,天地开辟,阳清为天,阴浊为地,辨阴阳而演万物,其功于开天斧。


文章转载自鸿蒙开天斧,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论