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 相关文章推荐
JavaScript 函数式编程的原理
Oct 16 Javascript
让div层随鼠标移动的实现代码 ie ff
Dec 18 Javascript
ListBox实现上移,下移,左移,右移的简单实例
Feb 13 Javascript
点击button获取text内容并改变样式的js实现
Sep 09 Javascript
jquery性能优化高级技巧
Aug 24 Javascript
基于Node.js实现nodemailer邮件发送
Jan 26 Javascript
JS留言功能的简单实现案例(推荐)
Jun 23 Javascript
vue开发调试神器vue-devtools使用详解
Jul 13 Javascript
JavaScript简单实现合并两个Json对象的方法示例
Oct 16 Javascript
js动态设置select下拉菜单的默认选中项实例
Aug 21 Javascript
微信小程序实现星星评价效果
Nov 02 Javascript
js实现树形数据转成扁平数据的方法示例
Feb 27 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操作memcache缓存方法分享
2015/06/03 PHP
详解WordPress中提醒安装插件以及隐藏插件的功能实现
2015/12/25 PHP
php实现购物车功能(下)
2016/01/05 PHP
combox改进版 页面原型参考dojo的,比网上jQuery的那些combox功能强,代码更小
2010/04/15 Javascript
jQuery 获取对象 基本选择与层级
2010/05/31 Javascript
很好用的js日历算法详细代码
2013/03/07 Javascript
Node.js中如何合并两个复杂对象详解
2016/12/31 Javascript
详解PHP中pathinfo()函数导致的安全问题
2017/01/05 Javascript
jquery Easyui Datagrid实现批量操作(编辑,删除,添加)
2017/02/20 Javascript
JavaScript 数据类型详解
2017/03/13 Javascript
jquery实现tab键进行选择后enter键触发click行为
2017/03/29 jQuery
vue实现全选和反选功能
2017/08/31 Javascript
JavaScript定义及输出螺旋矩阵的方法详解
2017/12/01 Javascript
如何使用vuex实现兄弟组件通信
2018/11/02 Javascript
vue学习笔记之给组件绑定原生事件操作示例
2020/02/27 Javascript
JavaScript定时器使用方法详解
2020/03/26 Javascript
[54:10]完美世界DOTA2联赛PWL S2 Magma vs FTD 第二场 11.29
2020/12/03 DOTA
在Python 2.7即将停止支持时,我们为你带来了一份python 3.x迁移指南
2018/01/30 Python
python批量读取txt文件为DataFrame的方法
2018/04/03 Python
Python中那些 Pythonic的写法详解
2019/07/02 Python
django-filter和普通查询的例子
2019/08/12 Python
python运用sklearn实现KNN分类算法
2019/10/16 Python
Python3 使用selenium插件爬取苏宁商家联系电话
2019/12/23 Python
Python将列表中的元素转化为数字并排序的示例
2019/12/25 Python
给ubuntu18安装python3.7的详细教程
2020/06/08 Python
python的help函数如何使用
2020/06/11 Python
python Yaml、Json、Dict之间的转化
2020/10/19 Python
Gucci法国官方网站:意大利奢侈品牌
2018/07/25 全球购物
英国皇家造币厂:The Royal Mint
2018/10/05 全球购物
买卖正宗运动鞋:GOAT
2019/12/06 全球购物
个人函授自我鉴定
2014/03/25 职场文书
爱心捐款倡议书范文
2014/05/12 职场文书
面试自我评价范文
2014/09/17 职场文书
2014年青年志愿者工作总结
2014/12/09 职场文书
学生会生活部工作总结2015
2015/03/31 职场文书
Spring this调用当前类方法无法拦截的示例代码
2022/03/20 Java/Android