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