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 EasyUI 中文API Layout(Tabs)
Apr 27 Javascript
Javascript中 关于prototype属性实现继承的原理图
Apr 16 Javascript
js左侧三级菜单导航实例代码
Sep 13 Javascript
浅谈javascript获取元素transform参数
Jul 24 Javascript
Angular中$cacheFactory的作用和用法实例详解
Aug 19 Javascript
js实现手机web图片左右滑动效果
Dec 29 Javascript
jQuery 防止相同的事件快速重复触发方法
Feb 08 jQuery
Vue.js实现的计算器功能完整示例
Jul 11 Javascript
通过微信公众平台获取公众号文章的方法示例
Dec 25 Javascript
js实现点击按钮随机生成背景颜色
Sep 05 Javascript
原生JavaScript实现弹幕组件的示例代码
Oct 12 Javascript
Echarts.js无法引入问题解决方案
Oct 30 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中cookies使用指南
2007/03/16 PHP
2014年最新推荐的10款 PHP 开发框架
2014/08/01 PHP
10款实用的PHP开源工具
2015/10/23 PHP
学习php设计模式 php实现原型模式(prototype)
2015/12/07 PHP
PHP中通过getopt解析GNU C风格命令行选项
2019/11/18 PHP
在VS2008中使用jQuery智能感应的方法
2010/12/30 Javascript
jQuery EasyUI API 中文文档 - ComboBox组合框
2011/10/07 Javascript
使用jquery实现以post打开新窗口
2014/03/19 Javascript
深入php面向对象、模式与实践
2016/02/16 Javascript
原生JS实现图片左右轮播
2016/12/30 Javascript
深入理解在JS中通过四种设置事件处理程序的方法
2017/03/02 Javascript
基于zepto.js实现手机相册功能
2017/07/11 Javascript
完美解决iview 的select下拉框选项错位的问题
2018/03/02 Javascript
JS获取本地地址及天气的方法实例小结
2019/05/10 Javascript
详解element-ui表格中勾选checkbox,高亮当前行
2019/09/02 Javascript
浅谈如何优雅处理JavaScript异步错误
2019/11/12 Javascript
JS Generator 函数的含义与用法实例总结
2020/04/08 Javascript
[02:25]DOTA2英雄基础教程 虚空假面
2014/01/02 DOTA
基于python编写的微博应用
2014/10/17 Python
Python创建xml的方法
2015/03/10 Python
Windows系统下使用flup搭建Nginx和Python环境的方法
2015/12/25 Python
python Pygame的具体使用讲解
2017/11/03 Python
python3+PyQt5实现自定义窗口部件Counters
2018/04/20 Python
python操作excel文件并输出txt文件的实例
2018/07/10 Python
python中pip的使用和修改下载源的方法
2019/07/08 Python
python程序 创建多线程过程详解
2019/09/23 Python
Python 解析pymysql模块操作数据库的方法
2020/02/18 Python
Python实现aes加密解密多种方法解析
2020/05/15 Python
pycharm中leetcode插件使用图文详解
2020/12/07 Python
高校自主招生自荐信2015
2015/03/04 职场文书
高校自主招生校长推荐信
2015/03/23 职场文书
大学班长竞选稿
2015/11/20 职场文书
《曾国藩家书》读后感——读家书,立家风
2019/08/21 职场文书
python绘图subplots函数使用模板的示例代码
2021/04/30 Python
剑指Offer之Java算法习题精讲二叉树专项训练
2022/03/21 Java/Android
PostgreSQL数据库去除重复数据和运算符的基本查询操作
2022/04/12 PostgreSQL