JavaScript实现的内存数据库LokiJS介绍和入门实例


Posted in Javascript onNovember 17, 2014

LokiJS是一个内存数据库,将性能考虑放在第一位。
LokiJS支持索引和更快的文档访问,执行性能非常好(近50万OPS/秒)。其内置DynamicView类可以用于数据子集的索引,甚至获取更快的性能。

*阅读这篇文章来看一看LokiJS的性能表现。

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的力量。
如果函数式编程是您的首选风格,那么你肯定会喜欢使用视图来查询数据。
您也可以使用您偏爱的MongoDB的shell来查询文本对象。

快速入门

安装

LokiJS 可在npm和bower中安装. 运行:

npm install lokijs


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);

 });
Javascript 相关文章推荐
Jquery Ajax.ashx 高效分页实现代码
Oct 20 Javascript
javascript 当前日期转化为中文的实现代码
May 13 Javascript
利用JS自动打开页面上链接的实现代码
Sep 25 Javascript
再谈Jquery Ajax方法传递到action(补充)
May 12 Javascript
在Javascript中处理字符串之big()方法的使用
Jun 08 Javascript
javascript实现根据iphone屏幕方向调用不同样式表的方法
Jul 13 Javascript
很棒的一组js图片轮播特效
Jan 12 Javascript
JavaScript限定范围拖拽及自定义滚动条应用(3)
May 17 Javascript
vue 实现模糊检索并根据其他字符的首字母顺序排列
Sep 19 Javascript
JavaScript实现飞舞的泡泡效果
Feb 07 Javascript
jquery实现穿梭框功能
Jan 19 jQuery
JS前端宏任务微任务及Event Loop使用详解
Jul 23 Javascript
浅谈jQuery异步对象(XMLHttpRequest)
Nov 17 #Javascript
node.js中watch机制详解
Nov 17 #Javascript
z-blog SyntaxHighlighter 长代码无法换行解决办法(jquery)
Nov 16 #Javascript
js构造函数、索引数组和属性的实现方式和使用
Nov 16 #Javascript
JQuery表单验证插件EasyValidator用法分析
Nov 15 #Javascript
不到30行JS代码实现Excel表格的方法
Nov 15 #Javascript
Node.js中HTTP模块与事件模块详解
Nov 14 #Javascript
You might like
解析php根据ip查询所在地区(非常有用,赶集网就用到)
2013/07/01 PHP
学习PHP的数组总结【经验】
2016/05/05 PHP
jQuery中(function(){})()执行顺序的理解
2013/03/05 Javascript
jquery获取自定义属性(attr和prop)实例介绍
2013/04/21 Javascript
JavaScript语言对Unicode字符集的支持详解
2014/12/30 Javascript
浅谈JavaScript中的String对象常用方法
2015/02/25 Javascript
浅谈jQuery.easyui的datebox格式化时间
2015/06/25 Javascript
jQuery+css实现的tab切换标签(兼容各浏览器)
2016/01/28 Javascript
详解jQuery UI库中文本输入自动补全功能的用法
2016/04/23 Javascript
jQuery简单实现仿京东分类导航层效果
2016/06/07 Javascript
最全面的JS倒计时代码
2016/09/17 Javascript
AngularJS定时器的使用与移除操作方法【interval与timeout】
2016/12/14 Javascript
Angular.js 4.x中表单Template-Driven Forms详解
2017/04/25 Javascript
js实现移动端编辑添加地址【模仿京东】
2017/04/28 Javascript
Angular实现双向折叠列表组件的示例代码
2017/11/21 Javascript
原生JS实现ajax与ajax的跨域请求实例
2017/12/01 Javascript
使用ngrok+express解决本地环境中微信接口调试问题
2018/02/26 Javascript
详解Vue.js中.native修饰符
2018/04/24 Javascript
Vue页面骨架屏的实现方法
2018/05/22 Javascript
[05:06]2017亚洲邀请赛DAC回顾片
2017/04/19 DOTA
[01:23:45]DOTA2-DPC中国联赛 正赛 CDEC vs Dragon BO3 第一场 1月22日
2021/03/11 DOTA
Python中str.join()简单用法示例
2018/03/20 Python
python 对类的成员函数开启线程的方法
2019/01/22 Python
python科学计算之numpy——ufunc函数用法
2019/11/25 Python
浅谈keras中Dropout在预测过程中是否仍要起作用
2020/07/09 Python
python通用数据库操作工具 pydbclib的使用简介
2020/12/21 Python
详解CSS3中Media Queries的相关使用
2015/07/17 HTML / CSS
linux面试题参考答案(8)
2016/04/19 面试题
如何开发一个JQuery插件
2016/07/28 面试题
电气工程及其自动化学生实习自我鉴定
2013/09/19 职场文书
机械电子工程专业推荐信范文
2013/11/20 职场文书
微信营销策划方案
2014/02/24 职场文书
大学应届生的自我评价
2014/03/06 职场文书
篮球赛口号
2014/06/18 职场文书
民主评议党员自我评价材料
2014/09/18 职场文书
学生未请假就回家检讨书
2014/09/22 职场文书