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实现点击图片在当前页面放大并可关闭的漂亮效果
Oct 18 Javascript
js 日期比较相关天数代码
Apr 02 Javascript
再谈javascript原型继承
Nov 10 Javascript
html的DOM中Event对象onabort事件用法实例
Jan 21 Javascript
JS实现简洁、全兼容的拖动层实例
May 13 Javascript
js判断移动端是否安装某款app的多种方法
Dec 18 Javascript
javascript容错处理代码(屏蔽js错误)
Jan 20 Javascript
利用HBuilder打包前端开发webapp为apk的方法
Nov 13 Javascript
angular6的响应式表单的实现
Oct 10 Javascript
js自定义input文件上传样式
Oct 26 Javascript
手把手教你 CKEDITOR 4 实现Dialog 内嵌 IFrame操作详解
Jun 18 Javascript
深入解析微信小程序开发中遇到的几个小问题
Jul 11 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
WINDOWS 2000下使用ISAPI方式安装PHP
2006/09/05 PHP
PHP网站安装程序制作的原理、步骤、注意事项和示例代码
2010/08/01 PHP
php中时间轴开发(刚刚、5分钟前、昨天10:23等)
2011/10/03 PHP
利用php实现禁用IE和火狐的缓存问题
2012/12/03 PHP
PHP删除指定目录中的所有目录及文件的方法
2015/02/26 PHP
thinkphp下MySQL数据库读写分离代码剖析
2017/04/18 PHP
Yii2中添加全局函数的方法分析
2017/05/04 PHP
PHP实现的最大正向匹配算法示例
2017/12/19 PHP
Laravel的Auth验证Token验证使用自定义Redis的例子
2019/09/30 PHP
php 使用 __call实现重载功能示例
2019/11/18 PHP
js 浮动层菜单收藏
2009/01/16 Javascript
如何使Chrome控制台支持多行js模式——意外发现
2013/06/13 Javascript
js模拟点击以提交表单为例兼容主流浏览器
2013/11/29 Javascript
jquery 提示信息显示后自动消失的具体实现
2013/12/18 Javascript
随鼠标移动的时钟非常漂亮遗憾的是只支持IE
2014/08/12 Javascript
php简单数据库操作类的封装
2017/06/08 Javascript
Vue.js学习记录之在元素与template中使用v-if指令实例
2017/06/27 Javascript
JS实现数组深拷贝的方法分析
2019/03/06 Javascript
[51:11]2014 DOTA2国际邀请赛中国区预选赛5.21 LGD-CDEC VS DT
2014/05/22 DOTA
[02:15]2015国际邀请赛选手档案IG.Ferrari 430
2015/07/30 DOTA
Python回调函数用法实例详解
2015/07/02 Python
Python原始字符串与Unicode字符串操作符用法实例分析
2017/07/22 Python
Python实现的对一个数进行因式分解操作示例
2019/06/27 Python
解决Python3下map函数的显示问题
2019/12/04 Python
python实现粒子群算法
2020/10/15 Python
python3处理word文档实例分析
2020/12/01 Python
html5自带表单验证体验优化及提示气泡修改功能
2017/09/12 HTML / CSS
美国最大的珠宝首饰网上商城:Jewelry.com
2016/07/22 全球购物
您的网上新华书店:文轩网
2016/08/24 全球购物
会议接待欢迎词
2014/01/12 职场文书
网上书店创业计划书
2014/01/12 职场文书
车间主任岗位职责
2014/03/16 职场文书
2015年见习期个人工作总结
2015/05/28 职场文书
导游词之韩国济州岛
2019/10/28 职场文书
世界十大儿童漫画书排名,法国国宝漫画排第五,第二是轰动日本连环
2022/03/18 欧美动漫
mysql数据库隔离级别详解
2022/06/16 MySQL