LokiJS 是純 JavaScript 實現的內存數據庫,面向文檔,支持 Node.js,瀏覽器和 Cordova。LokiJS 堅持的信條就是性能永遠是第一考慮因素。node
LokiJS 是:git
-
瀏覽器的 NoSQL 數據庫,包括同步和持久化特性github
-
一個 Redis 類型的 npm 安裝方式存儲 store an npm install awayweb
-
Cordova 的持久化 NoSQL 數據庫數據庫
-
可嵌入的 NoSQL 數據庫,支持 node-webkit 持久化存儲npm
LokiJS 理想的應用場景:json
-
客戶端內存數據庫,好比 session 存儲瀏覽器
-
性能優先的應用緩存
-
cordova/phonegap 移動應用,利用 JavaScript 的特性來避免與原生數據庫的交互服務器
-
瀏覽器頁面加載的數據集
-
node-webkit 桌面應用
LokiJS 支持索引和視圖,經過維護數據的惟一和二次索引來達到高性能。
LokiJS 支持集合,跟 MongoDB 很像,將數據以 JSON 的格式保存,數據可移植。
LokiJS 的主要特性:
-
超高性能的 NoSQL 內存數據庫,惟一索引 (1.1M ops/s) 和二次索引 (500k ops/s) 集合
-
能夠在多種環境下運行
-
提供快速訪問數據子集的動態視圖
-
內置持久性適配器,支持用戶定義
-
API 修改
-
Joins
LokiJS 當前是 1.3.16 版本,計劃將來加入如下特性:
-
精確搜索(exactIndex)
-
鍵值存儲(key-value)
-
MRU 緩存
-
MongoDB API 兼容
-
獨立服務器 (tcp 和 http 服務器和客戶端)
-
複製和橫向擴展
LokiJS 遵循 MIT 開源受權協議,但也提供商業支持,請看 Demo:Sandbox / Playground。
安裝:
npm install lokijs
或者
bower install lokijs
使用
建立數據庫:
var db = new loki('loki.json')
經過文件名保存數據
建立集合:
var children = db.addCollection('children')
插入文檔:
children.insert({name:'Sleipnir', legs: 8})
children.insert({name:'Jormungandr', legs: 0})
children.insert({name:'Hel', legs: 2})
檢索文檔:
children.get(1); // returns Sleipnir
children.find( {'name':'Sleipnir'} )
children.find( { legs: { '$gt' : 2 } } )
建立動態視圖:
var legs = children.addDynamicView('legs');
legs.applyFind( { legs: { '$gt' : 2 } )
legs.applySimpleSort('legs');
legs.data();
MapReduce:
children.mapReduce(
function( obj ){ return obj.legs; } ,
function( array ) {
var sum = 0;
for (var i=0; i < array.length; i++ ){
sum += array[i];
}
return ( sum / array.length ).toFixed(2);
});
GitHub 地址:https://github.com/techfort/LokiJS