AICon 上海站|日程100%上线,解锁Al未来! 了解详情
写点什么

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

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

关注

评论

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

阿里顶级大佬整理出十六个专题的Java面试指南,金九银十不用愁!

Java 编程 架构 面试 架构师

人在年轻的时候,最核心的能力是什么?

非著名程序员

认知提升 个人提升 提升自我 8月日更

PostgreSQL正强势回归!

数据库 大数据 时序数据库 tsdb 数据智能

云原生时代,腾讯如何做好容器安全体系建设?

腾讯安全云鼎实验室

腾讯云 容器

专访融云 CTO 任杰:构建通信云全能力

融云 RongCloud

外包三年给整废了,备战两月终拿到4家大厂offer,阿里P6+这回稳了

Java架构师迁哥

Black Hat 2021上的七大网络威胁趋势

百度开发者中心

最佳实践 方法论

区块链技术改进身份和访问管理(IAM)的10种用例

CECBC

明道实施与需求的耦合

明道云

Java操作Office:POI之word生成

程序员架构进阶

Java Apache POI 技术应用 8月日更 代码实战

这是一次鸡肋的代码审计

网络安全学海

网络安全 信息安全 计算机 渗透测试 安全漏洞

hbase运维故障案例分析

GrowingIO技术专栏

大数据 运维 HBase

Druid 集群方式部署 —— 配置 Zookeeper 连接

HoneyMoose

架构实战营模块四作业

maybe

getInteger还是getIntValue,这是一个问题

FunTester

Java json Groovy

架构实战营毕业设计

Saber

架构实战营

分布式认知工业互联网平台如何赋能企业数字化转型?

CECBC

101道经典JavaScript面试题总结(附答案,建议收藏)

前端依依

面试 大前端 JavaScrip

使用 MVC 架构构建 Flask CRUD 应用程序

吴脑的键客

Python flask

【前端 · 面试 】HTTP 总结(六)—— HTTP 版本区别

编程三昧

面试 HTTP 8月日更 http版本

Druid 集群方式部署 —— 端口调整

HoneyMoose

MQTT-消息传输协议

一个大红包

8月日更

浅谈限流组件的应用和设计原则

xiaoxi666

redis sentinel 分布式限流 redisson redis-cell

Druid 集群方式部署 —— 配置调整

HoneyMoose

趁着课余时间学点Python(五)用课余时间提升自己关于高级数据类型的知识

ベ布小禅

8月日更

基于 HLS 创建 Golang 视频流服务器

声网

音视频 HLS

Druid 集群方式部署 —— 启动服务

HoneyMoose

强推!华为内部都在用的783页大数据处理系统:Hadoop源代码pdf

Java 编程 架构 面试 架构师

如何洞察出推荐的关键时刻

石云升

推荐 用户体验 体验设计 8月日更

双证在手,运维无忧!明道云通过两项国家级质量认证

明道云

在明道云上搭建的应用维护管理的几点建议

明道云

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