Loki.js

LokiJS 是純 JavaScript 實現的內存數據庫,面向文檔,支持 Node.js,瀏覽器和 Cordova。LokiJS 堅持的信條就是性能永遠是第一考慮因素。

LokiJS支持索引和更快的文檔訪問,執行性能非常好(近50萬OPS/秒)。其內置DynamicView類可以用於數據子集的索引,甚至獲取更快的性能。

LokiJS支持collections(數據集),跟MongoDB的很像,並且以JSON格式將數據保存到磁盤,所以你的數據是可移植的。

LokiJS即可運行在Node.js端和瀏覽器端。

JavaScript是一種簡單易學,通用的語言,所以在javascript數據庫開發非常很容易且非常高效。如果你的MongoDB還沒有退休,在下面這些情況,您可能會發現LokiJS是更理想的解決方案:

1.移動應用-特別是HTML應用。(Cordova, Phonegap)
2.Node.js內置的爲小到中型應用設計的數據存儲
3.內置在桌面中的應用(Node Webkit)

LokiJS正在支持獨立服務器,可使用http/tcp客戶端訪問。

選擇你最喜歡的範式

LokiJS的功能完全利用了JavaScript的力量。
如果函數式編程是您的首選風格,那麼你肯定會喜歡使用視圖來查詢數據。

LokiJS 是:

1、瀏覽器的 NoSQL 數據庫,包括同步和持久化特性
2、一個 Redis 類型的 npm 安裝方式存儲 store an npm install away
3、Cordova 的持久化 NoSQL 數據庫
4、可嵌入的 NoSQL 數據庫,支持 node-webkit 持久化存儲

LokiJS 理想的應用場景:
1、客戶端內存數據庫,比如 session 存儲
2、性能優先的應用
3、cordova/phonegap 移動應用,利用 JavaScript 的特性來避免與原生數據庫的交互
4、瀏覽器頁面加載的數據集
5、node-webkit 桌面應用

LokiJS 支持索引和視圖,通過維護數據的唯一和二次索引來達到高性能。

LokiJS 支持集合,跟 MongoDB 很像,將數據以 JSON 的格式保存,數據可移植。

LokiJS 的主要特性:
1、超高性能的 NoSQL 內存數據庫,唯一索引 (1.1M ops/s) 和二次索引 (500k ops/s) 集合
2、可以在多種環境下運行
3、提供快速訪問數據子集的動態視圖
4、內置持久性適配器,支持用戶定義
5、API 修改
6、Joins

LokiJS 當前是 1.3.16 版本,計劃未來加入以下特性:
1、精確搜索(exactIndex)
2、鍵值存儲(key-value)
3、MRU 緩存
4、MongoDB API 兼容
5、獨立服務器 (tcp 和 http 服務器和客戶端)
6、複製和橫向擴展

LokiJS 遵循 MIT 開源授權協議,但也提供商業支持,請看 Demo:Sandbox / Playground。


安裝

npm install lokijs

或z

bower install lokijs

創建數據庫:

var db = new loki('loki.json')

傳入你需要保存數據的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);
 });

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章