Mindex:小而快的 JavaScript 复合索引
Mindex 是个小而快的 JavaScript 复合索引,灵感来源于 JavaScript 内存数据库 LokiJS (http://osp.io/archives/1812)。
Mindex 可以帮助用户在集合中查找对象,Mindex 可以迅速的搜索大型数据数组,可以返回数据的范围,还会对结果进行排序。Mindex 使用非常直观的查询语法,支持 skip
和 offset
,可以迅速对结果进行分页。
Mindex 使得信息查找变得非常快速。
特性
- 小– 少于 300 行代码
- 快– 可以在 O(log n) 时间内找到结果
- 强– 支持复合关键字和简单查询语法
使用 5 万条数据库数据进行基准测试,插入会比较慢,但是其他方面都有压倒性的优势:
***********************
Mindex 性能测试
***********************
Testing insertRecord(record)
Mindex 16.80 ops/sec, Native Array 45.51 ops/sec
Mindex is 63% slower
Testing get(key)
Mindex 3485998.20 ops/sec, Native Array 642.11 ops/sec
Mindex is 542799% faster
Testing getAll(), get all records
Mindex 374.92 ops/sec, Native Array 14.41 ops/sec
Mindex is 2502% faster
Testing removeRecord(key, value)
Mindex 1955971.50 ops/sec, Native Array 220.43 ops/sec
Mindex is 887260% faster
安装:Mindex 支持 Node v4.0+
npm install --save mindex
示例:
var Mindex = require('mindex') var index = Mindex(['age']) index.insertRecord({ id: 'John', age: 25 }) index.insertRecord({ id: 'Darcy', age: 28 }) index.insertRecord({ id: 'Jim', age: 29 }) index.insertRecord({ id: 'Betty', age: 25 }) // Get IDs by key console.log(index.get(25)) // [ 'Betty', 'John' ] // Get all IDs sorted by key (age) console.log(index.getAll()) // [ 'Betty', 'John', 'Darcy', 'Jim' ] // Get all IDs within a given range console.log(index.query({'>': [22], '<': [29]})) // [ 'Betty', 'John', 'Darcy' ]
Mindex 遵循 ISC 授权协议,GitHub 地址:https://github.com/internalfx/mindex。
发表回复