LokiJS 1.4發布,帶來性能提升和NativeScript適配器

MarvinDunn 8年前發布 | 7K 次閱讀 NativeScript

LokiJS是一個性能優先的內存數據庫,其1.4版本已經發布,帶來了NativeScript適配器。

Loki這個名字源于北歐神話的惡作劇之神。它支持集合,方式和MongoDB類似。它還支持字段索引,提供更快地文檔訪問速度。此外,它使用JSON格式將數據保存到磁盤,使數據具備了可移植性。

項目自述中的“首席”開發者Joe Minichino在接受InfoQ采訪時表示,這個主要版本修復了“許多Bug,并帶來了巨大的性能提升。”Minichino指出:

該版本新增或改進了若干查詢操作符,如 $where、$ne、$len、$keyin、$nkeyin、$type、$contains 和 $containsAny 。存活時間(TTL)特性也十分方便,它會自動刪除一定時間間隔內沒有被訪問的對象。舉例來說,這在存儲會話或游戲中非常有用。

Loki最初是作為一個在phonegap/cordova應用上存儲數據的解決方案,但相對于他對Loki的需求而言,Minichino認為SQLite“太笨重”。如果你在使用JavaScript,對于JavaScript對象和對象字面量,將它們轉化為表格會很痛苦,Minichino表示,這就是為什么Loki被創建成了一個組件,它接收對象,然后在本地文件系統上序列化為JSON。這樣,開發人員就可以在接下來的工作環節中重新加載數據。

1.4版本新增了NativeScript應用適配器。請看下面的示例代碼:

// 基本要求
var fs = require("file-system");
var Loki = require("./node_modules/lokijs/src/lokijs.js");
var LokiNativeScriptAdapter = require("./node_modules/loki-nativescript-adapter/loki-nativescript-adapter.js");

// 配置Loki
var path = fs.path.join(fs.knownFolders.currentApp().path, "database.db");
var db = new Loki(path, {
    adapter: new LokiNativeScriptAdapter()
});

//保存一些影片
var movies = db.addCollection("movies");
movies.insert({ title: "Ghost Busters", year: 1984 });
movies.insert({ title: "Ghost Busters II", year: 1989 });
movies.insert({ title: "Ghost Busters", year: 2016 });
console.log(movies.data);
db.saveDatabase();

//加載并找出部分影片
db.loadDatabase({}, function() {
    var movies = db.getCollection("movies");
    console.log(movies.find({ title: "Ghost Busters" }));
});

Minichino將這個主要版本說成是三個開發人員“精雕細琢的工作成果”,包括 obeliskosaleandernstVladimirTechMan 。他們一起改進了查詢和動態視圖的內部構件,進一步提升了性能。

在LokiJS的路線圖上,有一個服務器端持久化適配器。目前,其存在形式是整個db序列化成了一個文件,每當保存時文件會被重寫。

有些開發人員將LokiJS用于一個大小幾GB的db,每次他們更新一條記錄,文件就會被重寫。當db大小只有幾MB時,不管在瀏覽器端,還是在移動設備上,這都沒有問題,因為保存操作是毫秒級的。但Minichino指出,對于后端,就需要增量持久化適配器了,并且要有用于網絡操作和復制的http/tcp封裝器。

LokiJS遵循MIT許可協議。愿意為項目做貢獻的InfoQ讀者可以在 GitHub 上注冊,并提交pull request或開放問題。LokiJS團隊樂意聽取任何具有負面經驗的用戶的建設性批評。

查看英文原文: LokiJS 1.4 Release Brings Performance Improvement, NativeScript Adapter

 

閱讀原文

 

 本文由用戶 MarvinDunn 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!