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 callBack 返回前一页的js方法
Nov 30 Javascript
javaScript 判断字符串是否为数字的简单方法
Jul 25 Javascript
一个简单的弹性返回顶部JS代码实现介绍
Jun 09 Javascript
js 自动播放的实例代码
Nov 19 Javascript
jQuery的DOM操作之删除节点示例
Jan 03 Javascript
基于javascript实现简单的抽奖系统
Apr 15 Javascript
EasyUi combotree 实现动态加载树节点
Apr 01 Javascript
Servlet实现文件上传,可多文件上传示例
Dec 05 Javascript
javaScript嗅探执行神器-sniffer.js
Feb 14 Javascript
JavaScript创建对象的七种方式全面总结
Aug 21 Javascript
js实现QQ面板拖拽效果(慕课网DOM事件探秘)(全)
Sep 19 Javascript
AngularJS动态生成select下拉框的方法实例
Nov 17 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汉字转拼音的示例
2014/02/27 PHP
一个简洁实用的PHP缓存类完整实例
2014/07/26 PHP
浅谈COOKIE和SESSION区别
2015/07/19 PHP
php中分页及SqlHelper类用法实例
2017/01/12 PHP
laravel model 两表联查示例
2019/10/24 PHP
PHP编程一定要改掉的5个不良习惯
2020/09/18 PHP
javascript 面向对象编程基础:继承
2009/08/21 Javascript
IE 条件注释详解总结(附实例代码)
2009/08/29 Javascript
使用jquery解析XML的方法
2014/09/05 Javascript
javascript中new关键字详解
2015/12/14 Javascript
深入理解Javascript中的自执行匿名函数
2016/06/03 Javascript
jQuery购物网页经典制作案例
2016/08/19 Javascript
JS封装的选项卡TAB切换效果示例
2016/09/20 Javascript
js仿淘宝评价评分功能
2017/02/28 Javascript
详解vuejs之v-for列表渲染
2017/06/22 Javascript
VueJs单页应用实现微信网页授权及微信分享功能示例
2017/07/26 Javascript
jQuery实现鼠标移到某个对象时弹出显示层功能
2018/08/23 jQuery
vue component 中引入less文件报错 Module build failed
2019/04/17 Javascript
jquery.pager.js实现分页效果
2019/07/29 jQuery
JS数组进阶示例【数组的几种函数用法】
2020/01/16 Javascript
js实现图片上传到服务器和回显
2020/01/19 Javascript
[13:55]Newbee vs Team Spirit
2018/06/07 DOTA
python爬取亚马逊书籍信息代码分享
2017/12/09 Python
python实现聚类算法原理
2018/02/12 Python
Python面向对象基础入门之设置对象属性
2018/12/11 Python
详解Django中CBV(Class Base Views)模型源码分析
2019/02/25 Python
django 中使用DateTime常用的时间查询方式
2019/12/03 Python
eBay德国站:eBay.de
2017/09/14 全球购物
印尼第一大家居、生活和家具电子商务:Ruparupa
2019/11/25 全球购物
Android面试题及答案
2015/09/04 面试题
会计出纳员的自我评价
2014/01/15 职场文书
酒店秘书求职信范文
2014/02/17 职场文书
个人收入证明格式
2015/06/24 职场文书
教导处教学工作总结
2015/08/12 职场文书
劳务派遣管理制度(样本)
2019/08/23 职场文书
Vue实现跑马灯样式文字横向滚动
2021/11/23 Vue.js