BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

LokiJS 1.4发布,带来性能提升和NativeScript适配器

| 作者 James Chesters 关注 1 他的粉丝 ,译者 谢丽 关注 11 他的粉丝 发布于 2016年7月15日. 估计阅读时间: 5 分钟 | QCon上海2018 关注大数据平台技术选型、搭建、系统迁移和优化的经验。

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

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT