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 相关文章推荐
js getElementsByTagName的简写方式
Jun 27 Javascript
对于Form表单reset方法的新认识
Mar 05 Javascript
jQuery中outerWidth()方法用法实例
Jan 19 Javascript
Node.js中的process.nextTick使用实例
Jun 25 Javascript
iScroll.js 使用方法参考
May 16 Javascript
Javascript DOM事件操作小结(监听鼠标点击、释放,悬停、离开等)
Jan 20 Javascript
详解vue-router和vue-cli以及组件之间的传值
Jul 04 Javascript
使用vue制作探探滑动堆叠组件的实例代码
Mar 07 Javascript
vue自定义一个v-model的实现代码
Jun 21 Javascript
node.js环境搭建图文详解
Sep 19 Javascript
基于javascript的拖拽类封装详解
Apr 19 Javascript
ES6顶层对象、global对象实例分析
Jun 14 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生成图片验证码
2015/06/09 PHP
php中Redis的应用--消息传递
2017/03/28 PHP
各种常用浏览器getBoundingClientRect的解析
2009/05/21 Javascript
JQuery 国际象棋棋盘 实现代码
2009/06/26 Javascript
遍历jquery对象的代码分享
2011/11/02 Javascript
extJS中常用的4种Ajax异步提交方式
2014/03/07 Javascript
JavaScript中的公有、私有、特权和静态成员用法分析
2014/11/20 Javascript
纯JavaScript实现获取onclick、onchange等事件的值
2014/12/29 Javascript
JS DOM实现鼠标滑动图片效果
2020/09/17 Javascript
JavaScript中对JSON对象的基本操作示例
2016/05/21 Javascript
深入浅析Nodejs的Http模块
2017/06/20 NodeJs
详解如何使用 vue-cli 开发多页应用
2017/12/16 Javascript
vue页面跳转后返回原页面初始位置方法
2018/02/11 Javascript
layui select动态添加option的实例
2018/03/07 Javascript
详解Vue 多级组件透传新方法provide/inject
2018/05/09 Javascript
详解webpack import()动态加载模块踩坑
2018/07/17 Javascript
jQuery实现的响应鼠标移动方向插件用法示例【附源码下载】
2018/08/28 jQuery
angular将html代码输出为内容的实例
2018/09/30 Javascript
layui富文本编辑器前端无法取值的解决方法
2019/09/18 Javascript
Angular8 实现table表格表头固定效果
2020/01/03 Javascript
Vue 请求传公共参数的操作
2020/07/31 Javascript
[01:50:49]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Aster BO3 第三场 1月24日
2021/03/11 DOTA
python使用装饰器和线程限制函数执行时间的方法
2015/04/18 Python
Python错误提示:[Errno 24] Too many open files的分析与解决
2017/02/16 Python
python3爬取各类天气信息
2018/02/24 Python
详解flask入门模板引擎
2018/07/18 Python
HTML5+CSS3网页加载进度条的实现,下载进度条的代码实例
2016/12/30 HTML / CSS
使用iframe+postMessage实现页面跨域通信的示例代码
2020/01/14 HTML / CSS
自荐信的基本格式
2014/02/22 职场文书
幼儿园小班家长寄语
2014/04/02 职场文书
爱耳日宣传活动总结
2014/07/05 职场文书
放飞梦想演讲稿600字
2014/08/26 职场文书
升职自我推荐信范文
2015/03/25 职场文书
2015年保洁员工作总结
2015/05/04 职场文书
党员廉政准则心得体会
2016/01/20 职场文书
优秀范文:读《红岩》有感3篇
2019/10/14 职场文书