HarmonyOS开发者限时福利来啦!最高10w+现金激励等你拿~ 了解详情
写点什么

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

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

关注

评论

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

数据探索

南湖职业技术学院机械狗

十大排序算法--堆排序

Ayue、

排序算法 8月日更

架构实战营-学习总结

泄矢的呼啦圈

架构实战营

Druid 使用 Kafka 将数据载入到 Kafka

HoneyMoose

Druid 加载 Kafka 数据时通过控制台来提交一个 supervisor

HoneyMoose

Druid 加载 Kafka 数据后查询和清理数据

HoneyMoose

🏆【Java技术之旅】「编译器专题」重塑认识Java编译器的执行过程(消除数组边界检查+公共子表达式)!

洛神灬殇

Java 编译器 8月日更 JIT编译器

【Vue2.x 源码学习】第二十八篇 - diff算法-问题分析与patch优化

Brave

源码 vue2 8月日更

Druid 加载 Kafka 数据时直接提交一个 supervisor

HoneyMoose

如何从 0 到 1 设计 B 端产品?

蒋川

后台开发 产品开发 后台 后台管理系统 tob产品

Go并发之CSP并发模型、协程并发

Regan Yue

协程 CSP Go 语言 8月日更

netty系列之:Event、Handler和Pipeline

程序那些事

Java Netty nio 程序那些事

模块四作业

俊杰

架构实战营

Druid 使用 Kafka 数据加载教程——下载和启动 Kafka

HoneyMoose

Vue进阶(十四):config/index.js 配置文件详解

No Silver Bullet

Vue 8月日更 配置文件

学习总结

青鸟飞鱼

FastApi-07-查询参数校验

Python研究所

FastApi 8月日更

阿里云-云开发平台存储篇——给应用接上后端存储能力

若尘

阿里云 云开发 8月日更

【Flutter 专题】75 图解基本 TabBar 标签导航栏 (一)

阿策小和尚

Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 8月日更

kubernetes入门:harbor个人私有仓库傻瓜式搭建

小鲍侃java

8月日更

SpringCloud微服务日志经kafka缓冲写入到ELK

Rubble

kafka Spring Cloud ELK 8月日更

oeasy教您玩转vim - 7 - # 从头插入

o

oeasy教您玩转vim - 8 - # 追加文本

o

Vue进阶(十三):MOCK

No Silver Bullet

Vue Mock 8月日更

软通动力 OpenHarmony 师资培训班隆重开启,聚焦高校教师赋能

开放原子开源基金会

北鲲云超算接入GPUA100,让AlphaFold2轻松使用

北鲲云

oeasy教您玩转vim - 9 - # 换行插入

o

番外2. OpenCV 中摄像头捕获与视频处理与常见问题解决方案

梦想橡皮擦

8月日更

模块4作业

青鸟飞鱼

花几天时间肝了一个在线制作词云图网站

Python研究者

Python 可视化 词云图 Python JSON 8月日更

Java 操作 Office:POI之word图片处理

程序员架构进阶

Java 架构 自我提升 实战问题 8月日更

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