索引

    每一个索引必须建立在一个集合之中,一个集合最多可以拥有64个索引。

    索引可以被认为是将数据按照某一个或多个给定的字段进行排序,从而在其中快速搜索到用户指定查询条件的方式。

    在SequoiaDB 中,索引使用 B 树结构。

    一个典型的索引结构如图1所示:

    图中左边的方形为数据,右边的三角形为索引。索引按照从小到大的树形结构排列,每条索引记录分别指向一条记录文档。

    一个典型的btree索引结构如图2所示:

    图2

    图中方形为btree的结点。索引纪录从小到大排列在结点中,每个结点的纪录值范围由其父结点决定。

    SequoiaDB 可以对任意数据类型进行索引,每一个索引包含几个属性:

    在 SequoiaDB 中,所有集合均包含一个名为“$id”的强制唯一索引。该索引包含一个“_id”字段的索引键。

    所有的分区集合在创建时均会自动生成一个额外的“$shard”索引,索引键为用户指定的分区键字段。

    索引的定义格式必须包含 name 与 key 两个字段。其中 name 的值必须为字符串,key 则为一个 JSON 对象。

    key 的对象必须包含至少一个字段,其中字段名为用户需要索引的字段名,数值为1或者-1。其中1代表数据在索引中的排列顺序由小至大,-1则代表由大至小。

    • 唯一索引,索引名为“record_id_index”,索引字段为正向“product_key”与逆向“record_key”

    在该索引中,不可存在两条记录拥有同样的 product_key 与 record_key(如果仅 product_key 相同,或者仅 record_key 相同则可以通过唯一判定)

    在强制唯一索引中,所有记录必须遵循唯一索引规则,且不可存在一条以上的数据在“测试用例名称”字段为空。