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 字符串转化成数字的代码
Jun 29 Javascript
使用jquery菜单插件HoverTree仿京东无限级菜单
Dec 18 Javascript
js控制div弹出层实现方法
May 11 Javascript
JS实现漂亮的淡蓝色滑动门效果代码
Sep 23 Javascript
JQUERY的AJAX请求缓存里的数据问题处理
Feb 23 Javascript
Vue项目中跨域问题解决方案
Jun 05 Javascript
vue translate peoject实现在线翻译功能【新手必看】
Jun 07 Javascript
原生JS+HTML5实现的可调节写字板功能示例
Aug 30 Javascript
JavaScript ES6箭头函数使用指南
Dec 30 Javascript
详解如何使用webpack打包多页jquery项目
Feb 01 jQuery
antd日期选择器禁止选择当天之前的时间操作
Oct 29 Javascript
vue封装数字翻牌器
Apr 20 Vue.js
浅谈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的中问验证码
2006/11/25 PHP
PHP 缓存实现代码及详细注释
2010/05/16 PHP
php中用加号与用array_merge合并数组的区别深入分析
2013/06/03 PHP
6个超实用的PHP代码片段
2015/08/10 PHP
非集成环境的php运行环境(Apache配置、Mysql)搭建安装图文教程
2016/04/12 PHP
thinkPHP中验证码的简单实现方法
2016/12/05 PHP
百度地图api应用标注地理位置信息(js版)
2013/02/01 Javascript
JQuery中$.each 和$(selector).each()的区别详解
2015/03/13 Javascript
JS+CSS实现的日本门户网站经典选项卡导航效果
2015/09/27 Javascript
实例解析jQuery插件EasyUI最常用的表单验证规则
2015/11/29 Javascript
JavaScript对象参数的引用传递
2016/01/14 Javascript
jQuery模仿京东/天猫商品左侧分类导航菜单效果
2016/06/29 Javascript
jquery精度计算代码 jquery指定精确小数位
2017/02/06 Javascript
新手vue构建单页面应用实例代码
2017/09/18 Javascript
vue-cli3+typescript初体验小结
2019/02/28 Javascript
js form表单input框限制20个字符,10个汉字代码实例
2019/04/12 Javascript
怎样在vue项目下添加ESLint的方法
2019/05/16 Javascript
JS求解两数之和算法详解
2020/04/28 Javascript
[04:26]2014DOTA2国际邀请赛-Newbee顺利进入胜者组决赛 独家专访战神7
2014/07/19 DOTA
介绍Python中的__future__模块
2015/04/27 Python
python访问类中docstring注释的实现方法
2015/05/04 Python
Python中input与raw_input 之间的比较
2017/08/20 Python
Python 实现子类获取父类的类成员方法
2019/01/11 Python
python下载微信公众号相关文章
2019/02/26 Python
Python Django2 model 查询介绍(条件、范围、模糊查询)
2020/03/16 Python
Keras自动下载的数据集/模型存放位置介绍
2020/06/19 Python
Black Halo官方网站:购买连衣裙、礼服和连体裤
2018/06/13 全球购物
匡威爱尔兰官网:Converse爱尔兰
2019/06/09 全球购物
《夏夜多美》教学反思
2014/02/17 职场文书
勿忘国耻9.18演讲稿(经典篇)
2014/09/14 职场文书
2019学校请假条格式及范文
2019/06/25 职场文书
PHP中国际化的字符串排序和比较对象详解
2021/08/23 PHP
JavaWeb Servlet开发注册页面实例
2022/04/11 Java/Android
Win11显卡控制面板打开显卡设置方法
2022/04/20 数码科技
Android studio 简单计算器的编写
2022/05/20 Java/Android
el-form每行显示两列底部按钮居中效果的实现
2022/08/05 HTML / CSS