元数据

元数据用于描述集合的基本信息,其中主要包含的信息包含名称、属性列、索引列等信息,用户围绕集合元数据实现文档的增、删、改、查等功能。

1. 集合

集合用于描述一类数据,包含的数据描述如下表:

属性 描述
名称 集合名称,标识一个唯一的集合名
分片 BE中对集合内的文档以主键排序后,按行进行分片,不同分片的两个文档具有存储不相关性,当在不同分片上的文档都会命中查询条件时,需要分别在两片数据中进行查询,并最终合并到一个返回结果中。
分片大小的配置对BE的性能影响较大,对查询性能较敏感的应用场景建议采用较大的分片大小配置。
特别提示:
1. 当配置为0时,系统会采用默认最大值,也就是 ~(uint64)0)
属性列 对于仅用于展示(不参与查询计算)的文档属性信息,可合并配置为文档属性列,BE内部会将属性列合并序列化后,集中存放在固定存储区,以达到更高的查询检索性能,更小的存储空间。
特别提示:
1. 创建集合时需指定属性名称列表(无需指定类型)
索引列 索引列用于标识文档的什么属性需要创建索引,被用于查询条件的列,均必须创建为索引。一个文档中可以有多个索引列,但不能指定某些索引是多种类型索引。具体索引列的说明见章节2 索引列
数据源 BE中支持定义一个集合为Mysql源的镜像,在这种模式下会自动同步Mysql中的表至关联的集合中,具体使用请参考文章 TODO: Repository同步

2. 索引列

索引列是具有特定存储结构的列,用于加快用户的查询请求,目前BE中只开放了向量的图索引类型,索引列中需要包含的信息如下表:

属性 描述
列名 索引列名称,用户在检索中指定在某列中进行匹配查询
索引类型 目前只开放了向量图索引类型
数据类型 描述当前列中数据的类型,不同于传统的int8, int32,string等基础类型,向量类型一般会附加上vector前缀,比如说描述一个int8的向量,它对应的类型是vector_int8。
维度 描述数据所具有的维度空间(只有数据类型为向量时,此属性有效)
高级属性 针对特定索引类型有效的高阶参数列表

3. 存储

3.1. 元数据存储

系统中元数据目前统一存储在Sqlite中,用户在生产环境中使用时请配置meta的存储路径为共享存储目录,详情参见高阶配置

3.2. 集合数据存储模式

BE属于列存储模式,相同列的数据紧凑存储,多列数据以行分片的模式相邻存储在同一文件内,集合文档的逻辑视图与存储视图如下表:

---
scale: 55
---

4. 元数据管理

BE中开放了元数据的管理API, 用户可通过BE API、SDK API进行元数据的管理工作,包含集合的增、删、改等功能

4.1. 使用BE API管理元数据

BE默认开放HTTP、GRPC两种协议API,HTTP API请参考文档RESTful HTTP, 对性能有需求的用户建议采用GRPC协议,接入方式可联系BE的开发团队接洽。

4.2. 使用SDK管理元数据

BE目前提供四种语言的SDK,请参考相关的SDK文档:

C++

Python

Java

Golang