node-tiny(一个超小的node.js数据库)
来源:互联网 发布:淘宝店长工资多少 编辑:程序博客网 时间:2024/05/16 15:42
Email:longsu2010 at yeah dot net
最近写程序node.js程序的时候需要用到数据存储,node.js可以使用的数据库中的很多,mongodb、MySQL等等,但是我还是觉得这些数据库太大了,大材小用,更主要的是麻烦。于是我找到了node-tiny,一个非关系型的数据库,有点类似于mongodb。
tiny的文档中讲述了这样一个事实,当我们在数据库中搜索数据的时候我们会根据id、名字、类别、标签、日期等这些内容简短的属性来搜索,极少的时候根据全文信息等这样的超长的字段来搜索。所以在创建一个tiny数据库的时候tiny会将小于128字节的属性加载到内存中,这样检索速度会非常快,当检索结束时tiny根据检索的结果加载对于记录超过128字节的字段。使用方法:
1、安装 npm install tiny
var Tiny = require('tiny');
Tiny('articles.tiny', function(err, db) {
// 使用数据库实例db来操作数据。
});
说明:第一参数为存储数据使用的文件名,该文件会在第一次使用时创建。第二参数为数据库创建成功后执行的回调函数。
3、使用例子。
Tiny('articles.tiny', function(err, db) {db.set('doc001', { title: 'the title', content: 'the content'}, function(err) {console.log(err) console.log('set!');});});说明:保存文档对象。第一参数为存储数据的key,第二参数为要存储的内容,第三参数为回调函数。
4、函数大全:
set:增加记录,参数如上。
remove:删除记录,参数同set。
update:更新记录,第一参数同set(存储的key),第二参数为回调函数。
get:获取一条记录,第一参数同set,第二参数为回调函数。
all:获取所有数据,参数为回调函数,不过该函数已经被弃用了。
each:迭代数据库中的每一个对象。第一参数为迭代的函数(第一参数为记录对象,第二参数为记录的key);第二参数为迭代结束后的回调函数;第三参数为一个布尔值,若为true则会将大于128字节的也加载到内存迭代,默认false,建议保持默认。
fetch:检索数据,第一参数为约束对象,第二三参数为函数,前者用于筛选数据,后者为检索结束后的回调函数。
find:mongodb风格的检索。
close:关闭数据库,关闭打开的文件。
kill:删除所有数据。
compact:清理数据库文件中无用的数据。
5、补充,对于tiny来说增删改都是向文件中写数据,注意是直接追加到文件末尾,所以update方法和remove方法只是在文件的末尾追加内容。之所以可以这样设计是因为JavaScript对象属性是唯一的,赋值操作会覆盖掉之前的值,所以tiny只需按照文件的顺序解析文件即可得到正确的数据。这样设计的弊端是删除掉的数据还会占用存储空间,compact方法就是将多余的数据在文件中删除的方法。
6、各方法使用演示。
Tiny('articles.tiny', function(err, db) {/*for(var i = 0; i < 10; i++){db.set('doc' + i, { title: 'a document ' + i, content: 'hello world ' + i}, function(err) {if(err){console.log(err);}else{console.log('set!');}});}*//*db.get("doc0", function(err, data){console.log(arguments)});*//*db.each(function(obj, key){console.log(arguments);}, function(){}, false);*//*db.fetch({limit: 3}, function(obj, key){return true;}, function(err, datas){console.log(arguments)});*//*db.compact(function(err) { console.log('done');});*/});
- node-tiny(一个超小的node.js数据库)
- Node.js建立一个超简单的HTTP服务器
- node.js 中 emit() 和 on() 的一个小发现
- node.js 小爬虫
- Node.js小示例
- node js 小爬虫
- node.js 小功能
- node笔记---node基础的一个小实例
- node.js的一点小花边
- 小白学习node.js的心得
- Node.js的首次应用小案例
- Node.js HelloWorld的小细节
- 《超实用的Node.js代码段》连载三:Node.js深受欢迎的六大原因
- Node.js连接数据库
- node.js数据库相关
- node.js 连接数据库
- Node.JS连接数据库
- Node.js挖掘之一"一个小例子浅析Node.JS架构"
- HDU1496--Equations
- NSXMLParser和dom详解
- CDN总结之一
- 获取LayoutInflater的三种方法
- smack 源码分析- PacketWriter (android上实现长连接)【2】
- node-tiny(一个超小的node.js数据库)
- WIN7下权限问题分析与解答
- IPhone之NSXMLParser的使用
- linux find prune exec 排除某目录或文件 执行
- Bloom Filter-大规模数据处理利器
- smack 源码分析- PacketReader (android上实现长连接)【3】
- jquery1.8.2 在线中文手册
- 友元类...
- (译)OpenGL ES2.0 – Iphone开发指引