Table 操作
更新时间:2024-10-16
创建表
功能介绍
在指定的库中新建一个表。
请求示例
import pymochow
from pymochow.configuration import Configuration
from pymochow.auth.bce_credentials import BceCredentials
from pymochow.model.schema import Schema, Field, SecondaryIndex, VectorIndex, HNSWParams, AutoBuildPeriodical
from pymochow.model.enum import FieldType, IndexType, MetricType, TableState
from pymochow.model.table import Partition
account = 'root'
api_key = '$您的账户API密钥'
endpoint = '$您的实例访问端点' # 例如:'http://127.0.0.1:5287'
config = Configuration(credentials=BceCredentials(account, api_key),
endpoint=endpoint)
client = pymochow.MochowClient(config)
db = client.database("db_test")
fields = []
fields.append(Field("id", FieldType.STRING, primary_key=True,
partition_key=True, auto_increment=False, not_null=True))
fields.append(Field("bookName", FieldType.STRING, not_null=True))
fields.append(Field("author", FieldType.STRING))
fields.append(Field("vector", FieldType.FLOAT_VECTOR, not_null=True, dimension=3))
indexes = []
indexes.append(
VectorIndex(
index_name="vector_idx",
index_type=IndexType.HNSW,
field="vector",
metric_type=MetricType.L2,
params=HNSWParams(m=32, efconstruction=200),
auto_build=True,
auto_build_index_policy=AutoBuildPeriodical(5000, "2026-01-01 12:00:00")
)
)
indexes.append(SecondaryIndex(index_name="book_name_idx", field="bookName"))
table = db.create_table(
table_name="book_vector",
replication=3,
partition=Partition(partition_num=3),
schema=Schema(fields=fields, indexes=indexes)
)
client.close()
请求参数
Table参数
参数 | 参数类型 | 是否必选 | 参数含义 |
---|---|---|---|
table_name | String | 是 | 指定表的名称。表的命名要求如下: 1. 仅支持大小写字母、数字以及下划线(_),且必须以字母开头; 2. 长度限制为1~255。 |
replication | Int | 是 | 单个分区的总副本数(含主副本),取值范围为[1,10]。 若需要完整的高可用特性,副本总数需>=3。 需要注意的是:总副本数需要小于等于数据节点的数量,否则无法正常建表。 |
partition | Int | 是 | 表的分区数量,取值范围为[1, 1000]。 若非FLAT索引,则建议将单个分区的记录总数控制在100万到1000万之间,过大过小都不太合适。 |
schema | Schema | 是 | 表的Schema信息。 |
enable_dynamic_field | Boolean | 否 | 表是否支持自动增加字段,默认值为False。 |
description | String | 否 | 表的描述信息。 |
Schema参数
参数 | 参数类型 | 是否必选 | 参数含义 |
---|---|---|---|
fields | List<Field> | 是 | 指定表的字段详情列表。 |
indexes | List<Index> | 是 | 表的索引详情列表。 |
Field参数
参数 | 参数类型 | 是否必选 | 参数含义 |
---|---|---|---|
field_name | String | 是 | 字段名称。 |
field_type | FieldType | 是 | 字段数据类型。当前支持如下类型:BOOL、INT8、UINT8、INT16、UINT16、INT32、UINT32、INT64、UINT64、FLOAT、DOUBLE、DATE、DATETIME、TIMESTAMP、STRING、BINARY、UUID、TEXT、TEXT_GBK、TEXT_GB18030和FLOAT_VECTOR。 各数据类型的详细定义和约束请参见数据类型。 |
primary_key | Boolean | 否 | 是否为主键,默认值为False。 当前已支持多主键,详情参见多主键。 主键字段不支持如下类型:BOOL、FLOAT、DOUBLE和FLOAT_VECTOR。 |
partition_key | Boolean | 否 | 是否为分区键,默认值为False。 当前仅支持单一字段作为分区键,分区键可以是主键,也可以不是主键,但一张表只能有一个分区键,每行记录都会根据分区键的取值哈希映射到不同的分区。 分区键字段不支持如下类型:BOOL、FLOAT、DOUBLE和FLOAT_VECTOR。 |
auto_increment | Boolean | 否 | 是否自增主键,默认值为False。 仅适用于类型为UINT64的主键字段,非主键字段请勿填写属性值。 |
not_null | Boolean | 否 | 是否非空,默认值为False。 不可以为空值的字段包括:主键字段、分区键字段、向量字段和索引键字段。 |
dimension | Int | 否 | 向量维度。仅当字段类型为FLOAT_VECTOR时,才需要指定该参数。 |
Index参数
参数 | 参数类型 | 是否必选 | 参数含义 |
---|---|---|---|
vector_index | VectorIndex | 否 | 向量索引对象。 |
secondary_index | SecondaryIndex | 否 | 标量二级索引对象。 |
VectorIndex参数
参数 | 参数类型 | 是否必选 | 参数含义 |
---|---|---|---|
index_name | String | 是 | 索引名称。 |
index_type | IndexType | 是 | 向量索引类型。当前支持如下索引类型: |
field | String | 是 | 索引作用于的目标字段名称。 |
metric_type | MetricType | 是 | 向量之间距离度量算法类型。当前支持如下距离类型: 注:当使用COSINE距离时,用户需要自行对相关向量进行归一化操作,未经归一化的向量将导致search结果不准确 |
params | Params | 是 | 向量构建索引所需参数。 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 |
auto_build | Boolean | 否 | 是否自动构建索引,默认为False。 |
auto_build_index_policy | AutoBuildPolicy | 否 | 自动构建索引策略,当前支持如下策略: |
SecondaryIndex参数
参数 | 参数类型 | 是否必选 | 参数含义 |
---|---|---|---|
index_name | String | 是 | 索引名称。 |
field | String | 是 | 索引作用于的目标字段名称。 |
返回参数
参数 | 参数类型 | 参数含义 |
---|---|---|
table | Table | 创建的表对象。 |
删除表
功能介绍
删除指定的表。
请求示例
import pymochow
from pymochow.configuration import Configuration
from pymochow.auth.bce_credentials import BceCredentials
account = 'root'
api_key = '$您的账户API密钥'
endpoint = '$您的实例访问端点' # 例如:'http://127.0.0.1:5287'
config = Configuration(credentials=BceCredentials(account, api_key),
endpoint=endpoint)
client = pymochow.MochowClient(config)
db = client.database("db_test")
db.drop_table("book_vector")
client.close()
请求参数
参数 | 参数类型 | 是否必选 | 参数含义 |
---|---|---|---|
table_name | String | 是 | 指定表的名称。 |
查询指定表详情
功能介绍
查询指定表的详情。
请求示例
import pymochow
from pymochow.configuration import Configuration
from pymochow.auth.bce_credentials import BceCredentials
account = 'root'
api_key = '$您的账户API密钥'
endpoint = '$您的实例访问端点' # 例如:'http://127.0.0.1:5287'
config = Configuration(credentials=BceCredentials(account, api_key),
endpoint=endpoint)
client = pymochow.MochowClient(config)
db = client.database("db_test")
table = db.table("book_vector")
client.close()
请求参数
参数 | 参数类型 | 是否必选 | 参数含义 |
---|---|---|---|
table_name | String | 是 | 指定表的名称。 |
返回参数
参数 | 参数类型 | 参数含义 |
---|---|---|
table | Table | 表对象。 |
Table参数
参数 | 参数类型 | 参数含义 |
---|---|---|
database_name | String | 库的名称。 |
table_name | String | 表的名称。 |
replication | Int | 单个分区的总副本数(含主副本)。 |
partition | Int | 表的分区数量。 |
schema | Schema | 表的Schema信息。 |
enable_dynamic_field | Boolean | 表是否支持自动增加字段。 |
description | String | 表的描述信息。 |
create_time | Int | 表的创建时间。 |
state | TableState | 表的当前状态,取值如下: |
aliases | List<String> | 表的别名列表。 |
查询表的列表
功能介绍
查询指定库包含的所有表。
请求示例
import pymochow
from pymochow.configuration import Configuration
from pymochow.auth.bce_credentials import BceCredentials
account = 'root'
api_key = '$您的账户API密钥'
endpoint = '$您的实例访问端点' # 例如:'http://127.0.0.1:5287'
config = Configuration(credentials=BceCredentials(account, api_key),
endpoint=endpoint)
client = pymochow.MochowClient(config)
db = client.database("db_test")
tables = db.list_table()
client.close()
请求参数
参数 | 参数类型 | 是否必选 | 参数含义 |
---|---|---|---|
database_name | String | 是 | 库的名称。 |
返回参数
参数 | 参数类型 | 参数含义 |
---|---|---|
tables | List<Table> | 表对象列表。 |
查询指定表的统计信息
功能介绍
查询指定表的统计信息。
请求示例
import pymochow
from pymochow.configuration import Configuration
from pymochow.auth.bce_credentials import BceCredentials
account = 'root'
api_key = '$您的账户API密钥'
endpoint = '$您的实例访问端点' # 例如:'http://127.0.0.1:5287'
config = Configuration(credentials=BceCredentials(account, api_key),
endpoint=endpoint)
client = pymochow.MochowClient(config)
db = client.database("db_test")
table = db.table("book_vector")
table_stats = table.stats()
client.close()
请求参数
参数 | 参数类型 | 是否必选 | 参数含义 |
---|---|---|---|
database_name | String | 是 | 库的名称。 |
table_name | String | 是 | 表的名称。 |
返回参数
参数 | 参数类型 | 参数含义 |
---|---|---|
rowCount | Int | 记录数。 |
memorySizeInByte | Int | 内存大小。 |
diskSizeInByte | Int | 磁盘大小。 |