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 常见学习网站与参考书
Nov 09 Javascript
通过百度地图获取公交线路的站点坐标的js代码
May 11 Javascript
jQuery怎么解析Json字符串(Json格式/Json对象)
Aug 09 Javascript
httpclient模拟登陆具体实现(使用js设置cookie)
Dec 11 Javascript
javascript实现仿IE顶部的可关闭警告条
May 05 Javascript
JavaScript中this详解
Sep 01 Javascript
Bootstrap显示与隐藏简单实现代码
Mar 06 Javascript
angularjs ui-router中路由的二级嵌套
Mar 10 Javascript
简单实现JS上传图片预览功能
Apr 14 Javascript
Nuxt.js实现校验访问浏览器类型的中间件
Aug 24 Javascript
详解webpack的文件监听实现(热更新)
Sep 11 Javascript
关于better-scroll插件的无法滑动bug(2021通过插件解决)
Mar 01 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使用XMLWriter读写xml文件操作详解
2018/07/31 PHP
Yii2语言国际化自动配置详解
2018/08/22 PHP
js用图作提交按钮或超连接
2008/03/26 Javascript
AppBaseJs 类库 网上常用的javascript函数及其他js类库写的
2010/03/04 Javascript
Javascript 判断Flash是否加载完成的代码
2010/04/12 Javascript
SyntaxHighlighter语法高亮插件使用说明
2011/08/14 Javascript
jQuery表单获取和失去焦点输入框提示效果的实例代码
2013/08/01 Javascript
一个JavaScript获取元素当前高度的实例
2014/10/29 Javascript
jQuery晃动层特效实现方法
2015/03/09 Javascript
浅谈js中的闭包
2015/03/16 Javascript
JavaScript中的cacheStorage使用详解
2015/07/29 Javascript
浅谈jquery上下滑动的注意事项
2016/10/13 Javascript
Vue.js第三天学习笔记(计算属性computed)
2016/12/01 Javascript
JS及JQuery对Html内容编码,Html转义
2017/02/17 Javascript
Vue.js中兄弟组件之间互相传值实例
2017/06/01 Javascript
node.js用fs.rename强制重命名或移动文件夹的方法
2017/12/27 Javascript
angular4 JavaScript内存溢出问题
2018/03/06 Javascript
JavaScript 接口原理与用法实例详解
2020/05/12 Javascript
vue实现标签云效果的示例
2020/11/09 Javascript
[57:47]Fnatic vs Winstrike 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Python中的日期时间处理详解
2016/11/17 Python
python 判断网络连通的实现方法
2018/04/22 Python
Python-Flask:动态创建表的示例详解
2019/11/22 Python
Django Form设置文本框为readonly操作
2020/07/03 Python
Python基于pillow库实现生成图片水印
2020/09/14 Python
关于Python错误重试方法总结
2021/01/03 Python
印尼最大的在线购物网站:MatahariMall.com
2016/08/26 全球购物
TripAdvisor斯洛伐克:阅读评论、比较价格和酒店预订
2018/04/25 全球购物
数据库面试要点基本概念
2013/10/31 面试题
个人找工作求职简历的自我评价
2013/10/20 职场文书
大学专科生推荐信范文
2013/11/23 职场文书
元旦促销方案
2014/03/15 职场文书
2014优秀党员事迹材料
2014/08/14 职场文书
2014年办公室工作总结范文
2014/11/12 职场文书
小学英语教师2015年度个人工作总结
2015/10/14 职场文书
分析SQL窗口函数之排名窗口函数
2022/04/21 Oracle