LokiJS:性能优先的 JavaScript 内存数据库

LokiJS 是纯 JavaScript 实现的内存数据库,面向文档,支持 Node.js,浏览器和 Cordova。LokiJS 坚持的信条就是性能永远是第一考虑因素。

LokiJS:性能优先的 JavaScript 内存数据库

LokiJS 是:

  • 浏览器的 NoSQL 数据库,包括同步和持久化特性

  • 一个 Redis 类型的 npm 安装方式存储 store an npm install away

  • Cordova 的持久化 NoSQL 数据库

  • 可嵌入的 NoSQL 数据库,支持 node-webkit 持久化存储

LokiJS 理想的应用场景:

  1. 客户端内存数据库,比如 session 存储

  2. 性能优先的应用

  3. cordova/phonegap 移动应用,利用 JavaScript 的特性来避免与原生数据库的交互

  4. 浏览器页面加载的数据集

  5. node-webkit 桌面应用

LokiJS 支持索引和视图,通过维护数据的唯一和二次索引来达到高性能。

LokiJS 支持集合,跟 MongoDB 很像,将数据以 JSON 的格式保存,数据可移植。

LokiJS 的主要特性:

  1. 超高性能的 NoSQL 内存数据库,唯一索引 (1.1M ops/s) 和二次索引 (500k ops/s) 集合

  2. 可以在多种环境下运行

  3. 提供快速访问数据子集的动态视图

  4. 内置持久性适配器,支持用户定义

  5. API 修改

  6. Joins

LokiJS 当前是 1.3.16 版本,计划未来加入以下特性:

  • 精确搜索(exactIndex)

  • 键值存储(key-value)

  • MRU 缓存

  • MongoDB API 兼容

  • 独立服务器 (tcp 和 http 服务器和客户端)

  • 复制和横向扩展

LokiJS 遵循 MIT 开源授权协议,但也提供商业支持,请看 Demo:Sandbox / Playground。

安装:

npm install lokijs

或者

bower install lokijs

使用

创建数据库:

var db = new loki('loki.json')

通过文件名保存数据

创建集合:

var children = db.addCollection('children')

插入文档:

children.insert({name:'Sleipnir', legs: 8})

children.insert({name:'Jormungandr', legs: 0})

children.insert({name:'Hel', legs: 2})

检索文档:

children.get(1); // returns Sleipnir

children.find( {'name':'Sleipnir'} )

children.find( { legs: { '$gt' : 2 } } )

创建动态视图:

var legs = children.addDynamicView('legs');

legs.applyFind( { legs: { '$gt' : 2 } )

legs.applySimpleSort('legs');

legs.data();

MapReduce:

children.mapReduce(

function( obj ){ return obj.legs; } ,

function( array ) {

var sum = 0;

for (var i=0; i < array.length; i++ ){

sum += array[i];

}

return ( sum / array.length ).toFixed(2);

});

GitHub 地址:https://github.com/techfort/LokiJS

转载于:https://my.oschina.net/u/3015045/blog/810827

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值