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复选框CHECKBOX全选、反选
Aug 30 Javascript
修改jquery里的dialog对话框插件为框架页(iframe) 的方法
Sep 14 Javascript
java和javascript获取word文档的书签位置对比
Jun 19 Javascript
jQueryUI 拖放排序遇到滚动条时有可能无法执行排序的小bug及解决方案
Dec 19 Javascript
详解如何在 vue 项目里正确地引用 jquery 和 jquery-ui的插件
Jun 01 jQuery
深入理解ES6的迭代器与生成器
Aug 19 Javascript
浅析node应用的timing-attack安全漏洞
Feb 28 Javascript
基于vue中对鼠标划过事件的处理方式详解
Aug 22 Javascript
解决angularJS中input标签的ng-change事件无效问题
Sep 13 Javascript
vue使用rem实现 移动端屏幕适配
Sep 26 Javascript
微信小程序实现左右列表联动
May 19 Javascript
JavaScript控制台的更多功能
Apr 28 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自动加载的两种实现方法
2010/06/21 PHP
PHP 计算代码执行耗时的代码修正网上普遍错误
2011/05/14 PHP
PHP输出九九乘法表代码实例
2015/03/27 PHP
CodeIgniter针对lighttpd服务器URL重写的方法
2015/06/10 PHP
thinkphp5框架扩展redis类方法示例
2019/05/06 PHP
jscript之List Excel Color Values
2007/06/13 Javascript
extjs 为某个事件设置拦截器
2010/01/15 Javascript
JQuery,Extjs,YUI,Prototype,Dojo 等JS框架的区别和应用场景简述
2010/04/15 Javascript
confirm的用法示例用于按钮操作时确定是否执行
2014/06/19 Javascript
Node.js实现简单聊天服务器
2014/06/20 Javascript
node.js中的fs.symlinkSync方法使用说明
2014/12/15 Javascript
jQuery Validate表单验证插件 添加class属性形式的校验
2016/01/18 Javascript
浅谈jquery的map()和each()方法
2016/06/12 Javascript
详解js中常规日期格式处理、月历渲染和倒计时函数
2016/12/28 Javascript
webpack 1.x升级过程中的踩坑总结大全
2017/08/09 Javascript
详解基于Angular4+ server render(服务端渲染)开发教程
2017/08/28 Javascript
js中的reduce()函数讲解
2019/01/18 Javascript
详解vue组件中使用路由方法
2019/02/12 Javascript
非常漂亮的js烟花效果
2020/03/10 Javascript
JavaScript常用工具函数大全
2020/05/06 Javascript
python 正则式 概述及常用字符
2009/05/07 Python
python二分法实现实例
2013/11/21 Python
Python实现提取文章摘要的方法
2015/04/21 Python
Python xlrd模块导入过程及常用操作
2020/06/10 Python
详解Python多线程下的list
2020/07/03 Python
继承时候类的执行顺序问题,一般都是选择题,问你将会打印出什么?
2015/11/18 面试题
求职简历自荐信范文
2013/10/21 职场文书
语文教学随笔感言
2014/02/18 职场文书
毕业生个人求职自荐信
2014/02/26 职场文书
聚美优品恶搞广告词
2014/03/14 职场文书
小学六年级学生评语
2014/04/22 职场文书
2015自愿离婚协议书范本
2015/01/28 职场文书
装饰技术负责人岗位职责
2015/04/13 职场文书
放飞理想主题班会
2015/08/14 职场文书
护士岗前培训心得体会
2016/01/08 职场文书
CSS实现章节添加自增序号的方法
2021/06/23 HTML / CSS