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 相关文章推荐
Firebug入门指南(Firefox浏览器)
Aug 21 Javascript
小结Node.js中非阻塞IO和事件循环
Sep 18 Javascript
JS随机调用指定函数的方法
Jul 01 Javascript
jQuery实现带渐显效果的人物多级关系图代码
Oct 16 Javascript
JS组件中bootstrap multiselect两大组件较量
Jan 26 Javascript
JavaScript中两个字符串的匹配
Jun 08 Javascript
基于vue的下拉刷新指令和滚动刷新指令
Dec 23 Javascript
用director.js实现前端路由使用实例
Jan 27 Javascript
在js中做数字字符串补0(js补零)
Mar 25 Javascript
ES6新特性一: let和const命令详解
Apr 20 Javascript
AngularJS实现图片上传和预览功能的方法分析
Nov 08 Javascript
JavaScript enum枚举类型定义及使用方法
May 15 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
apache+mysql+php+ssl服务器之完全安装攻略
2006/09/05 PHP
使用swoole扩展php websocket示例
2014/02/13 PHP
PHP集成百度Ueditor 1.4.3
2014/11/23 PHP
简单实现php上传文件功能
2017/09/21 PHP
PHP实现合并两个排序链表的方法
2018/01/19 PHP
搜索附近的人PHP实现代码
2018/02/11 PHP
代码生成器 document.write()
2007/04/15 Javascript
javascript 主动派发事件总结
2011/08/09 Javascript
Vue.js 递归组件实现树形菜单(实例分享)
2016/12/21 Javascript
jquery实现数字输入框
2017/02/22 Javascript
关于Bootstrap按钮组件消除黄框的方法
2017/05/19 Javascript
AngularJS实用基础知识_入门必备篇(推荐)
2017/07/10 Javascript
提高Node.js性能的应用技巧分享
2017/08/10 Javascript
Node.js Koa2使用JWT进行鉴权的方法示例
2018/08/17 Javascript
[45:32]Liquid vs LGD 2018国际邀请赛淘汰赛BO3 第二场 8.23
2018/08/24 DOTA
举例讲解Django中数据模型访问外键值的方法
2015/07/21 Python
详解Python3中的Sequence type的使用
2015/08/01 Python
Python实现的科学计算器功能示例
2017/08/04 Python
Django原生sql也能使用Paginator分页的示例代码
2017/11/15 Python
NLTK 3.2.4 环境搭建教程
2018/09/19 Python
pandas中DataFrame修改index、columns名的方法示例
2019/08/02 Python
Python3如何对urllib和urllib2进行重构
2019/11/25 Python
python中matplotlib实现随鼠标滑动自动标注代码
2020/04/23 Python
Numpy数组的广播机制的实现
2020/11/03 Python
西班牙英格列斯百货英国官网:El Corte Inglés英国
2017/10/30 全球购物
BookOutlet加拿大:在网上书店购买廉价折扣图书和小说
2018/10/05 全球购物
澳洲的UGG雪地靴超级市场:Uggs.com.au
2020/04/06 全球购物
Java软件工程师综合面试题笔试题
2013/09/08 面试题
小学教师师德演讲稿
2014/05/06 职场文书
计算机应用专业自荐信
2014/07/05 职场文书
股份合作协议书
2014/09/10 职场文书
信用卡工作证明模板
2014/09/14 职场文书
中韩经贸翻译专业大学生职业生涯规划范文
2014/09/18 职场文书
群众路线四风问题整改措施
2014/09/27 职场文书
评先进个人材料
2014/12/29 职场文书
在校证明模板
2015/06/17 职场文书