2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

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:002646
用户头像

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

关注

评论

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

查找算法系列文(一)一文入门二叉树

淡蓝色

Java 数据结构 算法 二叉树

SpringBean的生命周期

编号94530

Java spring Spring Boot 生命周期

多个maven项目启动顺序

terrytian

maven

游戏夜读 | 《老残游记》很有趣

game1night

区块链目前实际的应用场景汇总

CECBC

区块链技术 去中心化 应用场景

【在云端 002】云时代,何以安放我的个人数据

Bora.Don

云计算 云存储

线性表(数组、链表、队列、栈)详细总结

淡蓝色

Java 数据结构 算法 链表 线性表

工作那么久,才知道的 SOLID 设计原则

闻人

架构师 极客大学架构师训练营

别兜售你自己不会购买的东西

Neco.W

创业 销售管理 销售

基于业务表 Binlog 的事件驱动设计

理帆

MySQL 事件驱动 Binlog

ARTS Week5

丽子

十五年后苹果再次变心

池建强

apple 苹果 芯片 wwdc

Redis系列(三):缓存过期该如何剔除?RDB和AOF又是什么?

z小赵

Java redis 高并发 高并发系统设计

每日一题-翻转字符串里的单词

程序员老王

LeetCode

网络性能篇 (13讲)

程序员老王

循序渐进的中台研发

理帆

中台 业务中台

设计模式之单例模式和组合模式

dapaul

极客大学架构师训练营

食堂就餐卡系统设计

John

极客大学架构师训练营

wee1作业总结

牛珈羽

极客大学架构师训练营

centos7 操作

InfoQ_1c4a1f813eb1

【极客大学】【架构师训练营】【第二周】总结:设计原则

NieXY

极客大学架构师训练营

iOS & Android 去马赛克处理

liu_liu

ios android 去马赛克

LeetCode 655. Print Binary Tree

liu_liu

算法 LeetCode

RabbitMQ跨机房迁移数据零丢失

心平气和

RabbitMQ 消息队列

【极客大学】【架构师训练营】【第二周】依赖倒置原则和接口隔离原则

NieXY

极客大学架构师训练营

就餐卡系统架构设计文档

牛珈羽

极客大学架构师训练营

MySQL InnoDB存储引擎 - 事务

Axe

好奇心, 优秀软件工程师的内核品质

亚伦碎语

读书感悟 随笔杂谈

架构师训练营 - 第三周学习总结

清风徐徐

设计原则与设计模式

dapaul

极客大学架构师训练营

第四周 学习总结

冯凯

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