非关系型数据库 node-tiny

MIT
JavaScript
跨平台
2014-10-08
jininij

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

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

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

安装 npm install tiny

使用例子:

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"])
		});
	}
 })
 */
});
的码云指数为
超过 的项目
加载中

评论(0)

暂无评论

暂无资讯

2
回答
请问,了解tiny这个框架从什么开始!

@悠悠然然 你好,想跟你请教个问题: 请问,了解tiny这个框架从什么开始!在git上分享了您的源码,可是不知道从哪里开始?请指教

2014/11/02 08:50

没有更多内容

加载失败,请刷新页面

没有更多内容

perl操作MongoDB

安装MongoDB驱动支持perl 参考 vim packages.txt Data::Types DateTime DateTime::Tiny ExtUtils::MakeMaker File::Slurp File::Temp FileHandle JSON Test::Exception Test::Warn Tie::IxHa...

2017/03/28 16:13
43
0
应用配置方面的思考

在项目开发过程中,无论是使用当前市面上流行的各种框架,还是自己公司内部开发的业务针对性框架,配置是一个永远绕不过的坎。当然,不少框架为了减少配置,引入了各种类型诸如类名、包名潜规...

2016/05/23 10:54
958
6
lbaas及heat-autoscaling(juno)

实例模板: https://github.com/openstack/heat-templates/tree/master/hot key是keypair 其中下述命令中各参数可以用nova net-list nova flavor-list获取: heat stack-create -f autoscali...

2016/03/29 10:15
50
1
基于graphql的微服务基础框架

基于graphql的小而美业务框架 base是一个小而美的业务基础框架,它使用graphql作为api通信协议基础。然后提供了一些可以直接使用的后端存储服务。 基础特性 只支持graphql协议通信;提供了g...

2018/12/25 11:23
15
0
【原创】MySQL Proxy - 内部结构

【15.7.4.2. Internal Structures】 在 MySQL Proxy 的脚本元素中有一些基本的内部结构需要知道。其中最主要的结构就是 proxy ,其提供了访问贯穿脚本中的许多公共结构的接口,例如连接列表和...

2013/03/05 13:34
334
0
【TencentOS tiny】又有一个操作系统开源

新闻 2019年9月18日,腾讯宣布将开源 自主研发的轻量级物联网实时操作系统TencentOS tiny。相比市场上其它系统,腾讯TencentOS tiny在资源占用、设备成本、功耗管理以及安全稳定等层面极具竞...

昨天 08:56
4
0
【TencentOS tiny】又有一个操作系统开源

新闻 2019年9月18日,腾讯宣布将开源 自主研发的轻量级物联网实时操作系统TencentOS tiny。相比市场上其它系统,腾讯TencentOS tiny在资源占用、设备成本、功耗管理以及安全稳定等层面极具竞...

前天 22:25
1
0
【TencentOS tiny】 超详细的TencentOS tiny移植到STM32F103全教程

移植前的准备工作 1. 获取STM32的裸机工程模板 STM32的裸机工程模板直接使用野火STM32开发板配套的固件库例程即可。可以从我github上获取https://github.com/jiejieTop/TencentOS-Demo 下载T...

昨天 08:56
1
0
【TencentOS tiny】 超详细的TencentOS tiny移植到STM32F103全教程

移植前的准备工作 1. 获取STM32的裸机工程模板 STM32的裸机工程模板直接使用野火STM32开发板配套的固件库例程即可。可以从我github上获取https://github.com/jiejieTop/TencentOS-Demo 下载T...

前天 22:28
2
0

没有更多内容

加载失败,请刷新页面

返回顶部
顶部