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 控制非法字符的输入代码
Dec 04 Javascript
JavaScript 对象模型 执行模型
Oct 15 Javascript
Jvascript学习实践案例(开发常用)
Jun 25 Javascript
iframe 上下滚动条如何默认在下方实现原理
Dec 10 Javascript
Javascript selection的兼容性写法介绍
Dec 20 Javascript
浅谈重写window对象的方法
Dec 29 Javascript
javascript引用类型指针的工作方式
Apr 13 Javascript
Node.js模块封装及使用方法
Mar 06 Javascript
Angular ui.bootstrap.pagination分页
Jan 20 Javascript
phantomjs导出html到pdf的方法总结
Oct 19 Javascript
浅谈Vue2.0父子组件间事件派发机制
Jan 08 Javascript
layui对工具条进行选择性的显示方法
Sep 19 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中把错误日志保存在系统日志中(Windows系统)
2015/06/23 PHP
分享php邮件管理器源码
2016/01/06 PHP
thinkphp3.2实现跨控制器调用其他模块的方法
2017/03/14 PHP
Jquery优化效率 提升性能解决方案
2010/09/06 Javascript
基于jquery实现的可编辑下拉框实现代码
2014/08/02 Javascript
jQuery中add()方法用法实例
2015/01/08 Javascript
js中unicode转码方法详解
2015/10/09 Javascript
JavaScript lodash常见用法系列小结
2016/08/24 Javascript
JavaScript中push(),join() 函数 实例详解
2016/09/06 Javascript
jQuery插件zTree实现删除树节点的方法示例
2017/03/08 Javascript
jQuery实现frame之间互通的方法
2017/06/26 jQuery
使用travis-ci如何持续部署node.js应用详解
2017/07/30 Javascript
element ui里dialog关闭后清除验证条件方法
2018/02/26 Javascript
关于Google发布的JavaScript代码规范你要知道哪些
2018/04/04 Javascript
Node.js创建HTTP文件服务器的使用示例
2018/05/11 Javascript
JQuery模拟实现网页中自定义鼠标右键菜单功能
2018/11/14 jQuery
python list 合并连接字符串的方法
2013/03/09 Python
python实现红包裂变算法
2016/02/16 Python
详解python运行三种方式
2019/05/13 Python
在python Numpy中求向量和矩阵的范数实例
2019/08/26 Python
在 Windows 下搭建高效的 django 开发环境的详细教程
2020/07/27 Python
python 基于opencv 绘制图像轮廓
2020/12/11 Python
python复合条件下的字典排序
2020/12/18 Python
Pretty Little Thing爱尔兰:时尚女性服饰
2017/03/27 全球购物
苏格兰在线威士忌商店:The Whisky Barrel
2019/05/07 全球购物
医药营销专业个人自荐信
2013/09/29 职场文书
党员创先争优公开承诺书
2014/03/28 职场文书
道路运输企业安全生产责任书
2014/07/28 职场文书
预备党员考察表党小组意见
2015/06/01 职场文书
2019班干部竞选演讲稿范本!
2019/07/08 职场文书
Java中try catch处理异常示例
2021/12/06 Java/Android
20180830晚上第一届KSL半决赛 雨神vs解冻(二龙 三炮解说)
2022/04/01 星际争霸
Golang 对es的操作实例
2022/04/20 Golang
Spring Boot接口定义和全局异常统一处理
2022/04/20 Java/Android
MySQL 数据库 增删查改、克隆、外键 等操作
2022/05/11 MySQL
MySQL数据库查询之多表查询总结
2022/08/05 MySQL