node-tiny 非关系型数据库开源项目

我要开发同款
匿名用户2014年10月08日
51阅读
开发技术JavaScript
所属分类数据库相关、NoSQL数据库
授权协议MIT

作品详情

node.js下的一个非常简单的非关系型数据库,适合数据量不大,数据结构简单的数据存储。理论上,任何可以用json来保存的数据都可以用tiny来保存。

node.js可以使用的数据库很多,但对于很多简单的数据存储,mongodb、MySQL就有些大材小用了,更主要的是麻烦。于是便有了node-tiny,一个非关系型的数据库,有点类似于mongodb。

tiny的文档中讲述了这样一个事实,当我们在数据库中搜索数据的时候我们会根据id、名字、类别、标签、日期等这些内容简短的属性来搜索,极少的时候根据全文信息等这样的超长的字段来搜索。所以在创建一个tiny数据库的时候tiny会将小于128字节的属性加载到内存中,这样检索速度会非常快,当检索结束时tiny根据检索的结果加载对于记录超过128字节的字段。

安装npminstalltiny

使用例子:

var Tiny = require('tiny');/**创建数据库实例。说明:第一参数为存储数据使用的文件名,该文件会在第一次使用时创建。第二参数为数据库创建成功后执行的回调函数。**/Tiny('articles.tiny', function(err, db) {/**set:保存文档对象。第一参数为存储数据的key,第二参数为要存储的内容,第三参数为回调函数。**/ /* 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!');   }  }); } *//**get:获取一条记录,第一参数同set,第二参数为回调函数。remove:删除记录,参数同set。update:更新记录,第一参数同set(存储的key),第二参数为回调函数。**/ /* db.get("doc0", function(err, data){  console.log(arguments) }); */ /**each:迭代数据库中的每一个对象。第一参数为迭代的函数(第一参数为记录对象,第二参数为记录的key);第二参数为迭代结束后的回调函数;第三参数为一个布尔值,若为true则会将大于128字节的也加载到内存迭代,默认false,建议保持默认。 **/ /* db.each(function(obj, key){  console.log(arguments);   }, function(){ }, false); */ /**fetch:检索数据,第一参数为约束对象,第二三参数为函数,前者用于筛选数据,后者为检索结束后的回调函数。 **/ /* db.fetch({  limit: 3 }, function(obj, key){  return true; }, function(err, datas){  console.log(arguments) });*/ /**compact:将多余的数据在文件中删除。对于tiny来说增删改都是向文件中写数据,注意是直接追加到文件末尾,所以update方法和remove方法只是在文件的末尾追加内容。之所以可以这样设计是因为JavaScript对象属性是唯一的,赋值操作会覆盖掉之前的值,所以tiny只需按照文件的顺序解析文件即可得到正确的数据。这样设计的弊端是删除掉的数据还会占用存储空间,compact方法就是将多余的数据在文件中删除 **/ /* db.compact(function(err) {    console.log('done'); }); */ /**  数据修改和回调函数。 **/ /* db.update("doc0" ,{'title':{b:true,"c":0,e:"sssd",f:{g:'hello world',h:12200,f:"中文中文"}},b:[0,1,2,3,4,5] } ,function(err){if(!err){db.get("doc0", function(err, data){console.log(data['title']["f"]["f"])});} }) */});
声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论