LokiJS:性能优先的 JavaScript 内存数据库
来源:互联网 发布:python 字典嵌套 list 编辑:程序博客网 时间:2024/05/15 20:25
LokiJS 是纯 JavaScript 实现的内存数据库,面向文档,支持 Node.js,浏览器和 Cordova。LokiJS 坚持的信条就是性能永远是第一考虑因素。
LokiJS 是:
浏览器的 NoSQL 数据库,包括同步和持久化特性
一个 Redis 类型的 npm 安装方式存储 store an npm install away
Cordova 的持久化 NoSQL 数据库
可嵌入的 NoSQL 数据库,支持 node-webkit 持久化存储
LokiJS 理想的应用场景:
客户端内存数据库,比如 session 存储
性能优先的应用
cordova/phonegap 移动应用,利用 JavaScript 的特性来避免与原生数据库的交互
浏览器页面加载的数据集
node-webkit 桌面应用
LokiJS 支持索引和视图,通过维护数据的唯一和二次索引来达到高性能。
LokiJS 支持集合,跟 MongoDB 很像,将数据以 JSON 的格式保存,数据可移植。
LokiJS 的主要特性:
超高性能的 NoSQL 内存数据库,唯一索引 (1.1M ops/s) 和二次索引 (500k ops/s) 集合
可以在多种环境下运行
提供快速访问数据子集的动态视图
内置持久性适配器,支持用户定义
API 修改
Joins
LokiJS 当前是 1.3.16 版本,计划未来加入以下特性:
精确搜索(exactIndex)
键值存储(key-value)
MRU 缓存
MongoDB API 兼容
独立服务器 (tcp 和 http 服务器和客户端)
复制和横向扩展
LokiJS 遵循 MIT 开源授权协议,但也提供商业支持,请看 Demo:Sandbox / Playground。
安装:
npm install lokijs
或者
bower install lokijs
使用
创建数据库:
var db = new loki('loki.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);
});
GitHub 地址:https://github.com/techfort/LokiJS
- LokiJS:性能优先的 JavaScript 内存数据库
- 浅谈JavaScript事件的内存与性能
- 内存数据库fastdb的性能测试报告
- javascript内存和性能
- JavaScript内存和性能
- SAP HANA内存数据库与oracle数据库的性能比较
- 为你的JavaScript内存性能做个体检
- 动态内存分配导致Javascript性能的问题
- 基于NoSQL内存数据库的Linux性能优化
- 内存数据库性能评测之SQLite数据库
- LokiJS入门demo1
- 内存性能的优化
- mongodb的javascript性能
- javaScript的性能优化
- javascript的性能优化
- 内存数据库FastDB和SQLite性能测评
- 内存数据库FastDB和SQLite性能测评
- 内存数据库FastDB和SQLite性能测评
- 求从1到n的数中,总共包含了多少个1
- Java NIO系列教程(六) Selector
- android listview 含有edittext 数据错乱问题
- 深度学习(DL)与卷积神经网络(CNN)学习笔记随笔-02-基于Python的卷积运算
- C# 多线程
- LokiJS:性能优先的 JavaScript 内存数据库
- Android学习系列(39)--Android主题和样式之系统篇(上)
- 【JAVA】利用反射调用不同方法,减少重复代码
- 强大的jQuery移动插件Top 10
- Java NIO系列教程(七) FileChannel
- 深度学习(DL)与卷积神经网络(CNN)学习笔记随笔-03-基于Python的LeNet之LR
- C# 特性
- db2_查询锁方法
- Maven