node-tiny非關(guān)系型數(shù)據(jù)庫
node.js下的一個(gè)非常簡(jiǎn)單的非關(guān)系型數(shù)據(jù)庫,適合數(shù)據(jù)量不大,數(shù)據(jù)結(jié)構(gòu)簡(jiǎn)單的數(shù)據(jù)存儲(chǔ)。理論上,任何可以用json來保存的數(shù)據(jù)都可以用tiny來保存。
node.js可以使用的數(shù)據(jù)庫很多,但對(duì)于很多簡(jiǎn)單的數(shù)據(jù)存儲(chǔ),mongodb、MySQL就有些大材小用了,更主要的是麻煩。于是便有了node-tiny,一個(gè)非關(guān)系型的數(shù)據(jù)庫,有點(diǎn)類似于mongodb。
tiny的文檔中講述了這樣一個(gè)事實(shí),當(dāng)我們?cè)跀?shù)據(jù)庫中搜索數(shù)據(jù)的時(shí)候我們會(huì)根據(jù)id、名字、類別、標(biāo)簽、日期等這些內(nèi)容簡(jiǎn)短的屬性來搜索,極少的時(shí)候根據(jù)全文信息等這樣的超長(zhǎng)的字段來搜索。所以在創(chuàng)建一個(gè)tiny數(shù)據(jù)庫的時(shí)候tiny會(huì)將小于128字節(jié)的屬性加載到內(nèi)存中,這樣檢索速度會(huì)非???,當(dāng)檢索結(jié)束時(shí)tiny根據(jù)檢索的結(jié)果加載對(duì)于記錄超過128字節(jié)的字段。
安裝 npm install tiny
使用例子:
var Tiny = require('tiny');
/**
創(chuàng)建數(shù)據(jù)庫實(shí)例。
說明:第一參數(shù)為存儲(chǔ)數(shù)據(jù)使用的文件名,該文件會(huì)在第一次使用時(shí)創(chuàng)建。第二參數(shù)為數(shù)據(jù)庫創(chuàng)建成功后執(zhí)行的回調(diào)函數(shù)。
**/
Tiny('articles.tiny', function(err, db) {
/**
set:保存文檔對(duì)象。第一參數(shù)為存儲(chǔ)數(shù)據(jù)的key,第二參數(shù)為要存儲(chǔ)的內(nèi)容,第三參數(shù)為回調(diào)函數(shù)。
**/
/*
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:獲取一條記錄,第一參數(shù)同set,第二參數(shù)為回調(diào)函數(shù)。
remove:刪除記錄,參數(shù)同set。
update:更新記錄,第一參數(shù)同set(存儲(chǔ)的key),第二參數(shù)為回調(diào)函數(shù)。
**/
/*
db.get("doc0", function(err, data){
console.log(arguments)
});
*/
/**
each:迭代數(shù)據(jù)庫中的每一個(gè)對(duì)象。第一參數(shù)為迭代的函數(shù)(第一參數(shù)為記錄對(duì)象,第二參數(shù)為記錄的key);第二參數(shù)為迭代結(jié)束后的回調(diào)函數(shù);第三參數(shù)為一個(gè)布爾值,若為true則會(huì)將大于128字節(jié)的也加載到內(nèi)存迭代,默認(rèn)false,建議保持默認(rèn)。
**/
/*
db.each(function(obj, key){
console.log(arguments);
}, function(){
}, false);
*/
/**
fetch:檢索數(shù)據(jù),第一參數(shù)為約束對(duì)象,第二三參數(shù)為函數(shù),前者用于篩選數(shù)據(jù),后者為檢索結(jié)束后的回調(diào)函數(shù)。
**/
/*
db.fetch({
limit: 3
}, function(obj, key){
return true;
}, function(err, datas){
console.log(arguments)
});*/
/**
compact:將多余的數(shù)據(jù)在文件中刪除。
對(duì)于tiny來說增刪改都是向文件中寫數(shù)據(jù),注意是直接追加到文件末尾,所以u(píng)pdate方法和remove方法只是在文件的末尾追加內(nèi)容。之所以可以這樣設(shè)計(jì)是因?yàn)镴avaScript對(duì)象屬性是唯一的,賦值操作會(huì)覆蓋掉之前的值,所以tiny只需按照文件的順序解析文件即可得到正確的數(shù)據(jù)。這樣設(shè)計(jì)的弊端是刪除掉的數(shù)據(jù)還會(huì)占用存儲(chǔ)空間,compact方法就是將多余的數(shù)據(jù)在文件中刪除
**/
/*
db.compact(function(err) {
console.log('done');
});
*/
/**
數(shù)據(jù)修改和回調(diào)函數(shù)。
**/
/*
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"])
});
}
})
*/
});評(píng)論
圖片
表情
