Loki.js

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

LokiJS支持索引和更快的文档访问,执行性能非常好(近50万OPS/秒)。其内置DynamicView类可以用于数据子集的索引,甚至获取更快的性能。

LokiJS支持collections(数据集),跟MongoDB的很像,并且以JSON格式将数据保存到磁盘,所以你的数据是可移植的。

LokiJS即可运行在Node.js端和浏览器端。

JavaScript是一种简单易学,通用的语言,所以在javascript数据库开发非常很容易且非常高效。如果你的MongoDB还没有退休,在下面这些情况,您可能会发现LokiJS是更理想的解决方案:

1.移动应用-特别是HTML应用。(Cordova, Phonegap)
2.Node.js内置的为小到中型应用设计的数据存储
3.内置在桌面中的应用(Node Webkit)

LokiJS正在支持独立服务器,可使用http/tcp客户端访问。

选择你最喜欢的范式

LokiJS的功能完全利用了JavaScript的力量。
如果函数式编程是您的首选风格,那么你肯定会喜欢使用视图来查询数据。

LokiJS 是:

1、浏览器的 NoSQL 数据库,包括同步和持久化特性
2、一个 Redis 类型的 npm 安装方式存储 store an npm install away
3、Cordova 的持久化 NoSQL 数据库
4、可嵌入的 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 版本,计划未来加入以下特性:
1、精确搜索(exactIndex)
2、键值存储(key-value)
3、MRU 缓存
4、MongoDB API 兼容
5、独立服务器 (tcp 和 http 服务器和客户端)
6、复制和横向扩展

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


安装

npm install lokijs

或z

bower install lokijs

创建数据库:

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

传入你需要保存数据的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);
 });

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章