写点什么

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

  • 2016-07-14
  • 本文字数:1323 字

    阅读完需:约 4 分钟

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 将这个主要版本说成是三个开发人员“精雕细琢的工作成果”,包括 obeliskos aleandernst VladimirTechMan 。他们一起改进了查询和动态视图的内部构件,进一步提升了性能。

在 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

2016-07-14 19:002474
用户头像

发布了 1008 篇内容, 共 422.4 次阅读, 收获喜欢 346 次。

关注

评论

发布
暂无评论
发现更多内容

DBS

陈皓07

数字化转型提速,DataPipeline助力中石油产业大数据实时共享能力再提升

DataPipeline数见科技

数据融合

Java中的String类型到底占用多大的内存空间?

冰河

Java 性能优化 string 高并发 内存空间

聊聊前端日志库在SaaS产品中的应用与设计

元三

大前端 SaaS

常见加密方式及Python实现

行者AI

加密

android开发视频教程!移动开发者升职加薪的8项技能,成功定级腾讯T3-2

欢喜学安卓

android 程序员 面试 移动开发

写给管理者的睡前故事

每天读本书

读书笔记 每天读本书

MyCat集成MySQL完成数据库集群建设

831143

Java MySQL mycat

如何通过事务消息保障抢购业务的分布式一致性?

阿里巴巴中间件

阿里云 云原生 电商 消息队列 分布式柔性事务‘’

买基金赔掉一条裤衩之后,我又回来更文了

Java_若依框架教程

投资 理财 基金 茅台

Kafka 中所谓的 ‘零拷贝’ 技术到底是什么?

李尚智

Java kafka 程序员 架构 微服务

荟聚·沉淀——百度大脑AI开放平台的2020年

百度大脑

我看JAVA 之 AbstractStringBuilder & StringBuffer & StringBuilder

awen

Java 源码 jdk string

区块链打造“红娘链”,婚姻上链让爱更“牢固”

CECBC

婚姻

区块链与数字货币的发展到底有什么意义

CECBC

金融

我决定输出一篇文章用于记录一个足足花了四小时才找到的BUG

LSJ

Java spring aop ProxyFactory proxyTargetClass

Docker安装

Sakura

Docker

产品经理第五周:如何绘制流程图?

克比

医者,智也:智慧医院破茧时,翻开转型新一页

脑极体

android开源!字节跳动Android岗经典面试真题,含泪整理面经

欢喜学安卓

android 程序员 面试 移动开发

Aspose word 转换为pdf 排版错位和数据丢失

blues199

Java Apache POI

LeetCode题解:120. 三角形最小路径和,动态规划(从上到下),JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

单例设计模式

桃子

技术干货 | mPaaS 小程序高玩带你起飞:客户端预置小程序无视网络质量

蚂蚁集团移动开发平台 mPaaS

小程序 网络环境 mPaaS

中核携手北京天源迪科完成电子商城二期项目,开创集团数字化采购新局面

DT极客

正月十五吃汤圆CountDownLatch

叫练

AQS join 共享锁 CountDownLatch 多线程高并发

341 万考生,除了图书馆他们去了这样一个地方

IoT云工坊

小程序 人工智能 物联网 云平台 24小时无人自习室

【得物技术】Web Components 初探

得物技术

Web API 得物技术 Web Component 组件

未来赚钱的行业大预测

ES_her0

28天写作

用 Selenium 搞定自动化测试项目,途牛搜机票。

梦想橡皮擦

28天写作 2月春节不断更

区块链能否一劳永逸地结束痛苦的选票争端?

CECBC

区块链

LokiJS 1.4发布,带来性能提升和NativeScript适配器_开源_James Chesters_InfoQ精选文章