Node-tiny(超小さなnode.jsデータベース)

2987 ワード

最近の書き込み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を使用してデータを操作します.});説明:最初のパラメータは、データを格納するために使用されるファイル名です.このファイルは、最初の使用時に作成されます.第2のパラメータは、データベースの作成に成功した後に実行されるコールバック関数です.3、使用例.
Tiny('articles.tiny', function(err, db) {
db.set('doc001', {
  title: 'the title',
  content: 'the content'
}, function(err) {
console.log(err)
  console.log('set!');
});
});

説明:ドキュメントオブジェクトを保存します.第1のパラメータはデータを格納するkeyであり、第2のパラメータは格納する内容であり、第3のパラメータはコールバック関数である.4、関数大全:
set:レコードを追加し、パラメータは上記の通りです.
remove:レコードを削除し、パラメータはsetと同じです.
update:レコードを更新し、第1パラメータはset(格納key)と同じで、第2パラメータはコールバック関数です.
get:レコードを取得します.第1パラメータはsetと同じで、第2パラメータはコールバック関数です.
all:すべてのデータを取得します.パラメータはコールバック関数ですが、この関数は破棄されました.
each:データベース内の各オブジェクトを反復します.第1パラメータは反復関数(第1パラメータは記録対象、第2パラメータは記録key)である.第2のパラメータは反復終了後のコールバック関数である.第3のパラメータはブール値であり、trueの場合は128バイト以上もメモリ反復にロードされ、デフォルトfalseではデフォルトを維持することを推奨します.
fetch:データを取得し、第1パラメータはコンストレイントオブジェクト、第2、3パラメータは関数であり、前者はデータのフィルタリングに用いられ、後者は検索終了後のコールバック関数である.
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');
	});
	*/
});