元数据
元数据用于描述集合的基本信息,其中主要包含的信息包含名称、属性列、索引列等信息,用户围绕集合元数据实现文档的增、删、改、查等功能。
1. 集合
集合用于描述一类数据,包含的数据描述如下表:
属性 | 描述 |
---|---|
名称 | 集合名称,标识一个唯一的集合名 |
分片 | BE中对集合内的文档以主键排序后,按行进行分片,不同分片的两个文档具有存储不相关性,当在不同分片上的文档都会命中查询条件时,需要分别在两片数据中进行查询,并最终合并到一个返回结果中。 分片大小的配置对BE的性能影响较大,对查询性能较敏感的应用场景建议采用较大的分片大小配置。 特别提示: |
属性列 | 对于仅用于展示(不参与查询计算)的文档属性信息,可合并配置为文档属性列,BE内部会将属性列合并序列化后,集中存放在固定存储区,以达到更高的查询检索性能,更小的存储空间。特别提示: |
索引列 | 索引列用于标识文档的什么属性需要创建索引,被用于查询条件的列,均必须创建为索引。一个文档中可以有多个索引列,但不能指定某些索引是多种类型索引。具体索引列的说明见章节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文档: