1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        node-tiny非關(guān)系型數(shù)據(jù)庫

        聯(lián)合創(chuàng)作 · 2023-10-01 01:20

        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"])
        		});
        	}
         })
         */
        });
        瀏覽 13
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        編輯 分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        編輯 分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            亚洲中文女同 | 操逼色 | 婷婷无码成人精品俺来俺去 | 少妇性l交大片免费观看冫 | 男人日女人的网站 | 国产妍妍女王chinese 国产又黄的a级鬼片色鬼投胎 | 午夜精品老牛av一区二区三区 | 潘金莲一级淫片免费放动漫 | 日日噜噜噜噜夜夜爽亚洲精品 | 羞羞涩涩视频 |