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 JavaScript获取Url参数,src属性参数
Mar 09 Javascript
javascript学习笔记之10个原生技巧
May 21 Javascript
JS作用域闭包、预解释和this关键字综合实例解析
Dec 16 Javascript
js判断iframe中元素是否存在的实现代码
Dec 24 Javascript
JavaScript如何一次性展示几万条数据
Mar 30 Javascript
ionic 3.0+ 项目搭建运行环境的教程
Aug 09 Javascript
JavaScript 隐性类型转换步骤浅析
Mar 15 Javascript
Vuex 使用 v-model 配合 state的方法
Nov 13 Javascript
微信小程序使用wxParse解析html的方法示例
Jan 17 Javascript
原生js代码能实现call和bind吗
Jul 31 Javascript
Layui 解决表格异步调用后台分页的问题
Oct 26 Javascript
vue.js的状态管理vuex中store的使用详解
Nov 08 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使用PDO抽象层获取查询结果的方法示例
2018/05/10 PHP
PHP 获取客户端 IP 地址的方法实例代码
2018/11/11 PHP
PHP获取访问设备信息的方法示例
2019/02/20 PHP
jQuery学习基础知识小结
2010/11/25 Javascript
基于jquery的地址栏射击游戏代码
2011/03/10 Javascript
关于onScroll事件在IE6下每次滚动触发三次bug说明
2011/09/21 Javascript
浅析jQuery对select操作小结(遍历option,操作option)
2013/07/04 Javascript
javascript读取xml实现javascript分页
2013/12/13 Javascript
javascript中CheckBox全选终极方案
2015/05/20 Javascript
原生js页面滚动延迟加载图片
2015/12/20 Javascript
D3.js实现直方图的方法详解
2016/09/25 Javascript
纯JavaScript手写图片轮播代码
2016/10/20 Javascript
js+html5实现侧滑页面效果
2017/07/15 Javascript
javascript实现最长公共子序列实例代码
2018/02/05 Javascript
vue实现tab切换外加样式切换方法
2018/03/16 Javascript
vue-router路由懒加载的实现(解决vue项目首次加载慢)
2018/08/28 Javascript
灵活使用console让js调试更简单的方法步骤
2019/04/23 Javascript
vue-cli webpack配置文件分析
2019/05/20 Javascript
微信小程序开发之map地图组件定位并手动修改位置偏差
2019/08/17 Javascript
vue实现跳转接口push 转场动画示例
2019/11/01 Javascript
redux处理异步action解决方案
2020/03/22 Javascript
Vue 实例中使用$refs的注意事项
2021/01/29 Vue.js
[03:21]【TI9纪实】Old Boys
2019/08/23 DOTA
Python正则获取、过滤或者替换HTML标签的方法
2016/01/28 Python
python web框架学习笔记
2016/05/03 Python
python函数的5种参数详解
2017/02/24 Python
python hook监听事件详解
2018/10/25 Python
python TF-IDF算法实现文本关键词提取
2019/05/29 Python
Python opencv相机标定实现原理及步骤详解
2020/04/09 Python
django form和field具体方法和属性说明
2020/07/09 Python
css背景图片的背景裁切、背景透明度、背景变换等效果运用
2012/12/24 HTML / CSS
道路运输企业安全生产责任书
2014/07/28 职场文书
2015年家长学校工作总结
2015/04/22 职场文书
导游词之台湾安平古堡
2019/12/25 职场文书
Python一行代码实现自动发邮件功能
2021/05/30 Python
小程序与后端Java接口交互实现HelloWorld入门
2021/07/09 Java/Android