写点什么

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

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

关注

评论

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

什么时候 MySQL 查询会变慢?

江南一点雨

MySQL 数据库

慢 SQL 优化之索引的作用是什么? | 京东云技术团队

京东科技开发者

MySQL 数据库 innodb 慢SQL 企业号 6 月 PK 榜

软件测试/测试开发丨学习笔记Allure2添加用例标题、用例步骤

测试人

程序员 软件测试 测试开发 测试报告 Allure

Adobe 构建 IDP 之路的经验与教训

SEAL安全

IdP adobe 平台工程

Github127k点赞!堪称最强 Java面试指南!已跳槽字节涨15K

Java java面试 Java八股文 Java面试题 Java面试八股文

什么是CAS和ABA问题?如何解决?

javacn.site

美国同事的那些离职类型

HoneyMoose

不止于快!巨湾技研发布凤凰电池技术,可实现全气候全电压平台极速充电

科技热闻

深入理解Java线程池:线程池参数调优与技巧

xfgg

Java 线程池 6 月 优质更文活动

Flink实例:处理IoT事件流

TiAmo

IoT Flink实例 事件流 6 月 优质更文活动

跨端框架的兴起:WePY(微信小程序容器技术)

没有用户名丶

当“代码农”遇上“码农”:揭秘主干开发的那些事儿 | 京东云技术团队

京东科技开发者

敏捷开发 单元测试 代码评审 主干开发 企业号 6 月 PK 榜

Java面试卷到家了?分享经典Java万字笔记,查漏补缺,备战面试

Java java面试 Java八股文 Java面试题 Java面试八股文

线程池性能提升之道:核心线程数选择与定制实战

Java 多线程 线程池

GreatSQL删除分区慢的跟踪

GreatSQL

greatsql greatsql社区

Maxcompute数据上云一致性比对

阿里云大数据AI技术

大数据 数据集 企业号 6 月 PK 榜

直播平台源码画面质量功能的实现

山东布谷科技

软件开发、 云算力模式系统开发源码 源码解读 直播系统 直播平台源码

AntDB数据库入选艾媒金榜《2023年中国信创数据库企业TOP15》,位列前三

亚信AntDB数据库

AntDB 数据库· AntDB数据库 企业号 6 月 PK 榜

聊聊那些奇葩的代码规范 —— 所有 IntelliJ 的警告必须要处理

HoneyMoose

如何从抓包文件中分析慢请求

蓝胖子的编程梦

Wireshark tcpdump 抓包 网络抓包 抓包分析

进阶篇丨链路追踪(Tracing)很简单:链路成本指南

阿里巴巴云原生

阿里云 云原生 链路追踪

jvm中类和对象定义存储基础知识 | 京东云技术团队

京东科技开发者

Java JVM 虚拟机 企业号 6 月 PK 榜 对象定义存储

山东淄博市具有资质的等保测评机构有几家?咨询电话多少?

行云管家

等保 等级测评 淄博

【堡垒机】北京堡垒机品牌哪家好?优势有哪些?

行云管家

堡垒机 IT运维 北京

BH1750 传感器实战教学 —— 驱动移植篇

矜辰所致

传感器 I2C 6 月 优质更文活动

基于STM32+RC522设计的门禁系统

DS小龙哥

6 月 优质更文活动

MobPush 配置应用包名

MobTech袤博科技

Serverless: AI everywhere的下一块拼图

华为云开发者联盟

云计算 后端 华为云 华为云开发者联盟 企业号 6 月 PK 榜

“古老”编程语言的最新选择!华为云发布CodeArts IDE for C/C++

华为云开发者联盟

云计算 后端 华为云 华为云开发者联盟 企业号 6 月 PK 榜

面试官:什么时候 MySQL 查询会变慢?

Java MySQL 数据库

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