zoukankan      html  css  js  c++  java
  • nodetiny(一个超小的node.js数据库)

    最近写程序node.js程序的时候需要用到数据存储,node.js可以使用的数据库中的很多,mongodb、MySQL等等,但是我还是觉得这些数据库太大了,大材小用,更主要的是麻烦。于是我找到了node-tiny,一个非关系型的数据库,有点类似于mongodb。
    tiny的文档中讲述了这样一个事实,当我们在数据库中搜索数据的时候我们会根据id、名字、类别、标签、日期等这些内容简短的属性来搜索,极少的时候根据全文信息等这样的超长的字段来搜索。所以在创建一个tiny数据库的时候tiny会将小于128字节的属性加载到内存中,这样检索速度会非常快,当检索结束时tiny根据检索的结果加载对于记录超过128字节的字段。
    使用方法:

    1、安装 npm install tiny

    2、创建数据库实例。
    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');
    	});
    	*/
    });
    
    
  • 相关阅读:
    正则表达式
    python 多线程编程之threading模块(Thread类)创建线程的三种方法
    python 多线程编程之_thread模块
    python 多线程编程之使用进程和全局解释器锁GIL
    python 多线程编程之进程和线程基础概念
    python操作文件——序列化pickling和JSON
    python操作文件和目录查看、创建、删除、复制
    python同步IO编程——StringIO、BytesIO和stream position
    python同步IO编程——基本概念和文件的读写
    python单元测试unittest、setUp、tearDown()
  • 原文地址:https://www.cnblogs.com/jiangu66/p/3017572.html
Copyright © 2011-2022 走看看