JavaScript实现的内存数据库LokiJS介绍和入门实例

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);
 });

(0)

相关推荐

  • JavaScript操作Oracle数据库示例

    我还是IT界的一只小菜鸟,参加工作时间不长,不过凭着自己的一颗好学的心还有自己永不停止的学习脚步,自己在编程方面也是收获颇丰~~ 一直以为JavaScript想和数据库交互必须通过AJAX来调用服务器端代码(C#或JAVA)才行,但最近才发现JavaScript可以直接与数据库进行交互...下面是一个简单的从数据库中调取数据加载到界面的小例子(有关JS操作数据方面的知识大家如有什么好的建议希望您能留下,我们相互学习,共同进步)~~ <!DOCTYPE HTML PUBLIC "-//W3C

  • JavaScript使用ActiveXObject访问Access和SQL Server数据库

    JS操作 Access 数据库 复制代码 代码如下: <SCRIPT LANGUAGE="JavaScript">  <!--  var filePath = location.href.substring(0, location.href.indexOf("实例197.连接Access数据库.html"));    //以当前页面文件为基础,找到文件所在的绝对路径  var path = filePath + "197.mdb"

  • JavaScript数据库TaffyDB用法实例分析

    本文实例讲述了JavaScript数据库TaffyDB用法.分享给大家供大家参考.具体如下: TaffyDB 是一个免费开源的 JavaScript 库,用于在 Web 上实现一个轻量级的数据访问层,也就是一个简单的数据库. 数据定义: var friends = new TAFFY( [ {name:"Bob", gender:"M", married:"No", age:25, state:"NY", favorite_f

  • JavaScript中连接操作Oracle数据库实例

    前言 无论是b/s还是c/s的开发中,基本上不使用javascript来对数据库进行操作.而我了印证我的一个想法,需要往数据库增加大量的新闻类信息,因此,我想从各个rss站点上获取信息并将信息导入到数据库里去.其实我也可以选择使用java,c++,或者是c#等编译语言,不过,使用javascript语言对这项工作来说是效率最高的.那我又何乐而不为呢? 环境 操作系统:winxp sp2 使用工具:cscript.exe,批处理文件 数据库:oracle 10g作为目标数据库(还可以使用其他的数据

  • js+html5操作sqlite数据库的方法

    本文实例讲述了js+html5操作sqlite数据库的方法.分享给大家供大家参考,具体如下: //copyright by lanxyou lanxyou[at]gmail.com var lanxDB=function(dbname){ var db=openDatabase(dbname,'1.0.0','',65536); return{ //返回数据库名 getDBName:function(){ return dbname; }, //初始化数据库,如果需要则创建表 init:func

  • javascript封装的sqlite操作类实例

    本文实例讲述了javascript封装的sqlite操作类.分享给大家供大家参考.具体如下: function sql(name,v,desc,size,tables){ this.db=null; this.name=name; this.v=v; this.desc=desc; this.size=size; this.tables=tables; this.ini(); } sql.prototype.ini=function(){ var self=this; self.db=openD

  • Javascript连接Access数据库完整实例

    本文实例讲述了Javascript连接Access数据库的方法.分享给大家供大家参考.具体实现方法如下: var roc = roc || {}; roc.db = roc.db ||{}; //创建一个连接 roc.db.createDb = function(){ var conn = new ActiveXObject("ADODB.Connection"), fso = new ActiveXObject("Scripting.FileSystemObject&quo

  • JavaScript中操作Mysql数据库实例

    //创建数据库连接对象 var conn = new ActiveXObject("ADODB.Connection"); //创建数据集对象 var rs = new ActiveXObject("ADODB.Recordset"); try{ //数据库连接串,具体配置请参考:http://www.connectionstrings.com/ //如果不知道如何配置连接串,可以通过配置UDL文件后用文本编辑器打开获得 var connectionstring =

  • JavaScript实现的内存数据库LokiJS介绍和入门实例

    LokiJS是一个内存数据库,将性能考虑放在第一位. LokiJS支持索引和更快的文档访问,执行性能非常好(近50万OPS/秒).其内置DynamicView类可以用于数据子集的索引,甚至获取更快的性能. *阅读这篇文章来看一看LokiJS的性能表现. LokiJS支持collections(数据集),跟MongoDB的很像,并且以JSON格式将数据保存到磁盘,所以你的数据是可移植的. LokiJS即可运行在Node.js端和浏览器端. JavaScript是一种简单易学,通用的语言,所以在ja

  • JavaScript中的this关键字介绍与使用实例

    当创建一个类的时候,如果希望下面new出来的每个类都拥有一些通用的变量或者其他的函数,这个this关键字这是最好的方式. 当然,既然是面向对象的语言,必然存在访问权限的问题,这里也和this关键字息息相关.下面我们来演示一个例子来说明一下这个类的访问权限的问题. 复制代码 代码如下: //Person类     function Person(){     var name="abc";//var声明的都是类内部的私有变量,外部无法访问      var age = 20; this.

  • JavaScript可视化与Echarts详细介绍

    目录 一.可视化介绍 二.可视化库介绍 三.Echarts Echarts引入和使用 了解基础配置 一.可视化介绍 可视化:将数据用图表展示出来,让数据更加直观.让数据特点更加突出 应用场景:营销数据.生产数据.用户数据 二.可视化库介绍 常见的数据可视化库: D3.js:目前 Web 端评价最高的 Javascript 可视化工具库(入手难) ECharts.js:百度出品的一个开源 Javascript 数据可视化库 Highcharts.js:国外的前端数据可视化库,非商用免费,被许多国外

  • javascript面向对象快速入门实例

    本文深入浅出的讲述了javascript面向对象快速入门实例.分享给大家供大家参考.具体如下: javascript面向对象入门案例: 复制代码 代码如下: <script language="javascript" type="text/javascript"> function Cat(){//js中对象的定义与函数一样,不同点在于怎么样调用. } var cat1 = new Cat();//创建类实例 //js中类属性可以动态添加,并不需要写在原

  • javascript运算符——位运算符全面介绍

    前面的话 位运算符是非常底层的运算,由于其很不直观,所以并不常用.但是,其速度极快,且合理使用能达到很好的效果.本文将介绍javascript中常常被忽视的运算符--位运算符 二进制表示 ECMAScript中的所有数值都以IEEE-754 64位格式存储,但位操作符并不直接操作64位的值,而是以32位带符号的整数进行运算的,并且返回值也是一个32位带符号的整数 这种位数转换使得在对特殊的NaN和Infinity值应用位操作时,这两个值都会被当成0来处理 如果对非数值应用位操作符,会先使用Num

  • struts2入门介绍及代码实例

    Struts2的控制器是一个过滤器,Struts中的Action就相当于在基本MVC设计模式当中一个个独立的servlet,并由Action调用模型层(JavaBean)完成一个个具体的业务功能. 在struts2中创建一个例子 新建WEB工程,然后在工程上右键选择Myeclipse–>addstrutsCapabilities,界面中选择struts2,然后点击finish,结束后你会在src文件下面看到struts的配置文件struts.xml. 然后就是在web.xml文件中配置过滤器,配

  • PyQT5速成教程之Qt Designer介绍与入门

    Qt Designer的介绍 在PyQt中编写UI界面可以直接通过代码来实现,也可以通过Qt Designer来完成.Qt Designer的设计符合MVC的架构,其实现了视图和逻辑的分离,从而实现了开发的便捷.Qt Designer中的操作方式十分灵活,其通过拖拽的方式放置控件可以随时查看控件效果.Qt Designer生成的.ui文件(实质上是XML格式的文件)也可以通过pyuic5工具转换成.py文件. Qt Designer随PyQt5-tools包一起安装,其安装路径在 "Python

  • JavaScript的function函数详细介绍

    通过函数来封装任意多条语句,而且可以在任何地方.任何时间调用执行. 而我们的JavaScript脚本语言比较特殊,相对于C语言,它的参数是不需要数据类型加持的.返回值return,我就不过多描述,他是和 C语言通的,如果没写他就会自动返回undefined function fun(x,y){ } //写成这样就可以声明一个函数 以我的理解他就是以对象的形式来传入参数,通过对象的各项属性值(引用类型的值),来作为我的实际参数, 例如我有以下做法: function fun(x, y) { //

  • JavaScript可迭代对象详细介绍

    目录 1.迭代器 2.迭代器接口与可迭代对象 3.自定义可迭代对象 3.1.可迭代的Range对象 3.2.使用Generator函数作为迭代器接口 3.3.可迭代的List 3.3.可迭代的迭代器 4.可迭代对象的意义 5.使用可迭代对象 6.后记 1.迭代器 迭代器是借鉴C++等语言的概念,迭代器的原理就像指针一样,它指向数据集合中的某个元素,你可以获取它指向的元素,也可以移动它以获取其它元素.迭代器类似于数组中下标的拓展,各种数据结构,如链表(List).集合(Set).映射(Map)都有

  • JavaScript reduce方法使用方法介绍

    目录 1. reduce方法的使用 2. reduce数组的使用场景 2.1 扁平化数组 2.2 数组去重 2.3 计算数组最大/最小值 2.4 数组求和 2.5 计算数组中元素的出现次数 3. 操作对象 4. 使用reduce代替.filter().map() 5. 按顺序执行promise 6. 使用compose函数组合实现管道 1. reduce方法的使用 Array.prototype.reduce(callBack(previousValue, currentValue, curre

随机推荐