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 相关文章推荐
Display SQL Server Login Mode
Jun 21 Javascript
JQuery.uploadify 上传文件插件的使用详解 for ASP.NET
Jan 22 Javascript
网站页面自动跳转实现方法PHP、JSP(上)
Aug 01 Javascript
js中scrollHeight,scrollWidth,scrollLeft,scrolltop等差别介绍
May 16 Javascript
获取数组中最大最小值方法js代码(自写)
Aug 12 Javascript
JavaScript中的toLocaleDateString()方法使用简介
Jun 12 Javascript
基于jquery实现页面滚动到底自动加载数据的功能
Dec 19 Javascript
javascript中数组和字符串的方法对比
Jul 20 Javascript
BootStrap TreeView使用实例详解
Nov 01 Javascript
用React-Native+Mobx做一个迷你水果商城APP(附源码)
Dec 25 Javascript
chosen实现省市区三级联动
Aug 16 Javascript
js实现简单抽奖功能
Nov 24 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循环输出数据库内容的代码
2008/05/24 PHP
PHP 上传文件大小限制
2009/07/05 PHP
php入门学习知识点二 PHP简单的分页过程与原理
2011/07/14 PHP
openflashchart 2.0 简单案例php版
2012/05/21 PHP
使用PHP遍历文件目录与清除目录中文件的实现详解
2013/06/24 PHP
php生成固定长度纯数字编码的方法
2015/07/09 PHP
phpcms的分类名称和类别名称的调用
2017/01/05 PHP
php使用Jpgraph创建折线图效果示例
2017/02/15 PHP
基于PHP实现的多元线性回归模拟曲线算法
2018/01/30 PHP
js中判断用户输入的值是否为空的简单实例
2013/12/23 Javascript
浅谈javascript中字符串String与数组Array
2014/12/31 Javascript
javascript实现table选中的行以指定颜色高亮显示的方法
2015/05/13 Javascript
JavaScript使ifram跨域相互访问及与PHP通信的实例
2016/03/03 Javascript
Angular2 (RC4) 路由与导航详解
2016/09/21 Javascript
利用jQuery解析获取JSON数据
2017/04/08 jQuery
Jquery中.bind()、.live()、.delegate()和.on()之间的区别详解
2017/08/01 jQuery
vue 添加vux的代码讲解
2017/11/30 Javascript
vue history 模式打包部署在域名的二级目录的配置指南
2019/07/02 Javascript
微信小程序用户盒子、宫格列表的实现
2020/07/01 Javascript
vue-quill-editor的使用及个性化定制操作
2020/08/04 Javascript
vue 项目中当访问路由不存在的时候默认访问404页面操作
2020/08/31 Javascript
Python自动化开发学习之三级菜单制作
2017/07/14 Python
python抓取文件夹的所有文件
2018/02/27 Python
Django项目中model的数据处理以及页面交互方法
2018/05/30 Python
对python sklearn one-hot编码详解
2018/07/10 Python
Django代码性能优化与Pycharm Profile使用详解
2018/08/26 Python
对python读取CT医学图像的实例详解
2019/01/24 Python
Python判断对象是否为文件对象(file object)的三种方法示例
2019/04/26 Python
python操作excel让工作自动化
2019/08/09 Python
Python使用gluon/mxnet模块实现的mnist手写数字识别功能完整示例
2019/12/18 Python
有针对性的求职自荐信
2013/11/14 职场文书
公民代理授权委托书
2014/09/24 职场文书
先进班组材料范文
2014/12/25 职场文书
项目安全员岗位职责
2015/02/15 职场文书
浅谈克隆 JavaScript
2021/11/02 Javascript
攻略丨滑雪究竟该选哪款对讲机?
2022/02/18 无线电