Table 操作
更新时间:2025-01-14
创建表
功能介绍
在指定的库中新建一个表。
请求示例
Typescript
1import {
2 MochowClient,
3 AutoBuildTiming,
4 FieldSchema,
5 FieldType,
6 IndexSchema,
7 IndexType, MetricType, PartitionType, TableSchema, CreateTableArgs
8} from "@mochow/mochow-sdk-node";
9
10const mochowClient = new MochowClient({
11 credential: {
12 account: "root",
13 apiKey: "您的账户API密钥",
14 },
15 endpoint: "您的实例访问端点", // 例如:'http://127.0.0.1:5287'
16})
17
18let fields: FieldSchema[]
19fields = [
20 {
21 fieldName: "id",
22 fieldType: FieldType.String,
23 primaryKey: true,
24 partitionKey: true,
25 autoIncrement: false,
26 notNull: true,
27 },
28 {
29 fieldName: "bookName",
30 fieldType: FieldType.String,
31 notNull: true,
32 },
33 {
34 fieldName: "author",
35 fieldType: FieldType.String,
36 notNull: true,
37 },
38 {
39 fieldName: "vector",
40 fieldType: FieldType.FloatVector,
41 notNull: true,
42 dimension: 3,
43 }
44]
45
46// Indexes
47let autoBuildPolicy = AutoBuildTiming("2024-11-29 18:35:00")
48let indexes: IndexSchema[] = [
49 {
50 indexName: "book_name_idx",
51 field: "bookName",
52 indexType: IndexType.SecondaryIndex,
53 },
54 {
55 indexName: "vector_idx",
56 field: "vector",
57 indexType: IndexType.HNSW,
58 metricType: MetricType.L2,
59 params: {
60 "M": 32,
61 "efConstruction": 200,
62 },
63 autoBuild: true,
64 autoBuildPolicy: autoBuildPolicy,
65 }
66]
67
68// create table
69let schema: TableSchema = { fields: fields, indexes: indexes }
70let createTableArgs: CreateTableArgs = {
71 database: "db_test",
72 table: "table_test",
73 description: "test",
74 replication: 1,
75 partitionParams: {
76 partitionType: PartitionType.HASH,
77 partitionNum: 1,
78 },
79 enableDynamicField: false,
80 schema: schema
81}
82
83let createTableResp = await mochowClient.createTable(createTableArgs)
请求参数
参数 | 参数类型 | 是否必选 | 参数含义 |
---|---|---|---|
createTableArgs | CreateTableArgs | 是 | 创建表参数。 |
CreateTableArgs
参数 | 参数类型 | 是否必选 | 参数含义 |
---|---|---|---|
database | String | 是 | 指定库的名称。库名称命名要求如下:
|
table | String | 是 | 指定表的名称。表的命名要求如下:
|
description | String | 否 | 数据表的描述。 |
replication | Int | 是 | 单个分区的总副本数(含主副本),取值范围为[1,10]。 若需要高可用特性,副本总数需>=3。 注意:副本数需要小于等于数据节点的数量,否则无法建表。 |
partition | PartitionParams | 是 | 表的分区数量,取值范围为[1, 1000]。 若非FLAT索引,则建议将单个分区的记录总数控制在100万到1000万之间,过大过小都不太合适。 |
enableDynamicField | Boolean | 否 | 表是否支持自动增加字段,默认值为False。 |
schema | TableSchema | 是 | 表的Schema信息。 |
PartitionParams
参数名称 | 参数类型 | 描述 |
---|---|---|
partitionType | String | 分区类型枚举,当前仅支持"HASH"。 |
partitionNum | Int | 分区的数量,取值范围为[1,1000]。 |
TableSchema
参数名称 | 参数类型 | 描述 |
---|---|---|
fields | List<FieldSchema> | 数据表中字段的定义。 |
indexes | List<IndexSchema> | 数据表中索引的定义。 |
FieldSchema
参数名称 | 参数类型 | 描述 |
---|---|---|
fieldName | String | 字段名称,要求表内唯一。 字段命名要求如下:
|
fieldType | String | 字段数据类型。 当前支持如下类型:BOOL、INT8、UINT8、INT16、UINT16、INT32、UINT32、INT64、UINT64、FLOAT、DOUBLE、DATE、DATETIME、TIMESTAMP、STRING、BINARY、UUID、TEXT、TEXT_GBK、TEXT_GB18030、ARRAY和FLOAT_VECTOR。 各数据类型的详细定义和约束请参见数据类型。 |
primaryKey | Boolean | 是否为主键,默认值为False。 当前已支持多主键,详情参见多主键。 主键字段不支持如下类型:BOOL、FLOAT、DOUBLE和FLOAT_VECTOR。 |
partitionKey | Boolean | 是否为分区键,默认值为False。 当前仅支持单一字段作为分区键,分区键可以是主键,也可以不是主键,但一张表只能有一个分区键,每行记录都会根据分区键的取值哈希映射到不同的分区。 分区键字段不支持如下类型:BOOL、FLOAT、DOUBLE、ARRAY和FLOAT_VECTOR。 |
autoIncrement | Boolean | 是否自增主键,默认值为False。 仅适用于类型为UINT64的主键字段,非主键字段请勿填写属性值。 |
notNull | Boolean | 是否非空,默认值为False。 不可以为空值的字段包括:主键字段、分区键字段、向量字段和索引键字段。 |
dimension | Int | 向量维度。 仅当字段类型为FLOAT_VECTOR时,才需要指定该参数。 |
elementType | String | 数组类型字段的元素类型。 仅当字段类型为ARRAY时,才需要指定该参数。 |
maxCapacity | Int | 数组类型字段的最大容量,默认不限制。 仅当字段类型为ARRAY时,才需要指定该参数。 |
IndexSchema
参数名称 | 参数类型 | 描述 |
---|---|---|
indexName | String | 索引名称,要求表内唯一。 索引命名要求如下: 仅支持大小写字母、数字以及下划线(_),必须以字母开头; 长度限制为1~255。 |
indexType | String | 向量索引类型。当前支持如下索引类型: |
metricType | String | 向量之间距离度量算法类型。当前支持如下距离类型: 注:当使用COSINE距离时,用户需要自行对相关向量进行归一化操作,未经归一化的向量将导致search结果不准确 |
params | VectorIndexParams | 向量构建索引所需参数。 1. m:表示每个节点在检索构图中可以连接多少个邻居节点。取值为[4, 128]; 2. efconstruction:搜索时,指定寻找节点邻居遍历的范围。数值越大构图效果越好,构图时间越长。取值为[8, 1024]。 1. coarseClusterCount:索引中粗聚类中心的个数; 2. fineClusterCount:每个粗聚类中心下细聚类中心个数。 1. m:表示每个节点在检索构图中可以连接多少个邻居节点。取值为[4, 128]; 2. efconstruction:搜索时,指定寻找节点邻居遍历的范围。数值越大构图效果越好,构图时间越长。取值为[8, 1024]; 3. NSQ:表示量化子空间个数,取值为[1, dim],并且要求NSQ | dim; 4. sampleRate:kmeans训练原始数据的抽样比率,取值为[0.0, 1.0],抽样总数 10000 + (rowCount - 10000)*sampleRate |
autoBuild | Bool | 是否自动构建索引 |
autoBuildPolicy | AutoBuildPolicy | 自动构建索引策略,当前支持如下策略: |
field | String | 索引作用于的目标字段名称。 |
fields | List |
倒排索引作用于的目标字段名称或者Filtering索引作用于的目标字段名称。 |
InvertedIndexFieldAttributes | List |
指定建立倒排索引的列是否需要分词(默认是会分词),参数顺序应与'fields'里列名一一对应。目前支持以下选项: |
FilteringIndexField
参数 | 参数类型 | 是否必选 | 参数含义 |
---|---|---|---|
field | String | 是 | 索引作用于的目标字段名称。支持以下通配符: @SCALAR,表示所有标量列,包括后续通过动态列添加的标量列。 |
indexStructureType | String | 否 | 选择FILTERING索引的内存结构。支持的类型如下: indexStructureType的缺省值为DEFAULT。如果指定了通配符@SCALAR,则使用@SCALAR字段中的indexStructureType作为缺省值。 |
删除表
功能介绍
删除指定的数据表。
请求示例
Typescript
1import { MochowClient } from "@mochow/mochow-sdk-node";
2
3const mochowClient = new MochowClient({
4 credential: {
5 account: "root",
6 apiKey: "您的账户API密钥",
7 },
8 endpoint: "您的实例访问端点", // 例如:'http://127.0.0.1:5287'
9})
10
11// drop table
12let dropTableResponse = await mochowClient.dropTable("db_test", "table_test")
请求参数
参数 | 参数类型 | 是否必选 | 参数含义 |
---|---|---|---|
databaseName | String | 是 | 目标库的名称 |
tableName | String | 是 | 目标表的名称。 |
查询表详情
功能介绍
查询指定数据表的详情。
请求示例
Typescript
1import { MochowClient } from "@mochow/mochow-sdk-node";
2
3const mochowClient = new MochowClient({
4 credential: {
5 account: "root",
6 apiKey: "您的账户API密钥",
7 },
8 endpoint: "您的实例访问端点", // 例如:'http://127.0.0.1:5287'
9})
10
11// describe table
12let descTableResponse = await mochowClient.descTable("db_test", "table_test")
请求参数
参数 | 参数类型 | 是否必选 | 参数含义 |
---|---|---|---|
dabaseName | String | 是 | 目标库的名称 |
tableName | String | 是 | 目标表的名称。 |
返回参数
参数 | 参数类型 | 参数含义 |
---|---|---|
descTableResponse | DescTableResponse | Table详情 |
DescTableResponse
参数 | 参数类型 | 参数含义 |
---|---|---|
database | String | 库的名称。 |
table | String | 表的名称。 |
description | String | 数据表的描述。 |
replication | Int | 单个分区的总副本数(含主副本)。 |
partition | PartitionParams | 表的分区数量。 |
enableDynamicField | Boolean | 表是否支持自动增加字段,默认值为False。 |
schema | TableSchema | 表的Schema信息。 |
state | TableState | 表的当前状态,取值如下: |
查询表的列表
功能介绍
查询指定库包含的所有表。
请求示例
Typescript
1import { MochowClient } from "@mochow/mochow-sdk-node";
2
3const mochowClient = new MochowClient({
4 credential: {
5 account: "root",
6 apiKey: "您的账户API密钥",
7 },
8 endpoint: "您的实例访问端点", // 例如:'http://127.0.0.1:5287'
9})
10
11// list tables
12let listTablesResponse = await mochowClient.listTables("db_test")
请求参数
参数 | 参数类型 | 是否必选 | 参数含义 |
---|---|---|---|
databaseName | String | 是 | 库的名称。 |
返回参数
参数 | 参数类型 | 参数含义 |
---|---|---|
listTableResponse | ListTableResponse | 表对象列表。 |
ListTableResult
参数 | 参数类型 | 参数含义 |
---|---|---|
tables | List |
表名列表 |