Table 操作
创建表
功能介绍
在指定的库中新建一个表。C++ SDK 使用 mochow::Schema::Builder 组装字段和索引定义,使用 mochow::CreateTableRequest 描述建表参数,最后通过 mochow::Database::CreateTable 提交。
所有接口均返回 mochow::Status;返回值与状态同时存在的接口(如 Schema::Builder::Build、MochowClient::Create)返回 mochow::Result<T>,需要先判断 IsOk(),再通过 Value() 或 MoveValue() 取值。
请求示例
1#include <iostream>
2#include <memory>
3
4#include "mochow/Mochow.h"
5
6int main() {
7 mochow::ClientOptions options;
8 options.endpoint = "http://127.0.0.1:5287"; // $您的实例访问端点
9 options.credentials.account = "root";
10 options.credentials.api_key = "$您的账户API密钥";
11
12 auto client_result = mochow::MochowClient::Create(options);
13 if (!client_result.IsOk()) {
14 std::cerr << "create client failed: "
15 << client_result.GetStatus().Message() << std::endl;
16 return 1;
17 }
18 std::shared_ptr<mochow::MochowClient> client = client_result.MoveValue();
19 mochow::Database db = client->GetDatabase("db_test");
20
21 auto schema_result =
22 mochow::Schema::Builder()
23 .AddField(mochow::Field::Int64("id").PrimaryKey().PartitionKey())
24 .AddField(mochow::Field::String("bookName").NotNull())
25 .AddField(mochow::Field::String("region").NotNull())
26 .AddField(mochow::Field("views", mochow::FieldType::UInt64).NotNull())
27 .AddField(mochow::Field("segment", mochow::FieldType::Text))
28 .AddField(mochow::Field("publishTime", mochow::FieldType::Timestamp))
29 .AddField(mochow::Field::FloatVector("vector", 3).NotNull())
30 // 向量索引:HNSW,并开启周期性自动构建
31 .AddIndex(mochow::Index::Hnsw("vector_idx",
32 "vector",
33 mochow::MetricType::L2,
34 mochow::HnswParams{32, 200})
35 .AutoBuild(true)
36 .AutoBuildPolicy(mochow::AutoBuildPolicy::Periodical(
37 24 * 3600, "2026-01-01 12:00:00")))
38 // 标量二级索引
39 .AddIndex(mochow::Index::Secondary("book_name_idx", "bookName"))
40 // FILTERING 索引:AGGREGATED_BITMAP 结构可同时加速等值与范围过滤
41 .AddIndex(mochow::Index::FilteringWithFields(
42 "publish_time_filtering",
43 {mochow::FilteringIndexField(
44 "publishTime",
45 mochow::FilteringIndexStructureType::AggregatedBitmap)}))
46 // 持久化 BITMAP 索引:等值过滤,索引数据落盘
47 .AddIndex(mochow::Index::PersistentBitmap("region_bitmap", "region"))
48 // 持久化 AGGREGATED_BITMAP 索引:等值 + 范围过滤,索引数据落盘
49 .AddIndex(mochow::Index::PersistentAggregatedBitmap(
50 "views_aggregated_bitmap",
51 "views",
52 mochow::PersistentAggregatedBitmapParams{4, 12}))
53 // 倒排索引(全文索引):stopWords 只能在建表或建索引时指定
54 .AddIndex(mochow::Index::Inverted(
55 "segment_inverted_idx",
56 {"segment"},
57 mochow::InvertedIndexParams()
58 .Analyzer(mochow::InvertedIndexAnalyzer::Default)
59 .ParseMode(mochow::InvertedIndexParseMode::Coarse)
60 .CaseSensitive(true)
61 .StopWords(mochow::StopWordsParams(
62 mochow::StopWordsMode::Custom, {"呀", "啊", "哦"})),
63 {mochow::InvertedIndexFieldAttribute::Analyzed}))
64 .Build();
65 if (!schema_result.IsOk()) {
66 std::cerr << "build schema failed: "
67 << schema_result.GetStatus().Message() << std::endl;
68 return 1;
69 }
70
71 mochow::CreateTableRequest create_table;
72 create_table.WithTableName("book_vector")
73 .WithSchema(schema_result.MoveValue())
74 .WithReplication(3)
75 .WithPartitionNum(3)
76 .WithDescription("book vector table");
77
78 mochow::Status status = db.CreateTable(create_table);
79 if (!status.IsOk()) {
80 std::cerr << "create table failed: " << status.Message()
81 << ", request_id=" << status.RequestId() << std::endl;
82 return 1;
83 }
84
85 // 建表是异步生效的,可通过 DescribeTable 轮询 state 是否为 NORMAL
86 mochow::Table table = db.GetTable("book_vector");
87 (void)table;
88
89 (void)client->Close();
90 return 0;
91}
请求参数
CreateTableRequest参数
| 参数 | 参数类型 | 是否必选 | 参数含义 |
|---|---|---|---|
| WithTableName | std::string | 是 | 指定表的名称。表的命名要求如下: 1. 仅支持大小写字母、数字以及下划线(_),且必须以字母开头; 2. 长度限制为1~255。 |
| WithSchema | mochow::Schema | 是 | 表的Schema信息,由mochow::Schema::Builder构建。 |
| WithReplication | int | 否 | 单个分区的总副本数(含主副本),默认值为3,取值范围为[1,10]。 若需要完整的高可用特性,副本总数需>=3。 需要注意的是:总副本数需要小于等于数据节点的数量,否则无法正常建表。 |
| WithPartitionType | std::string | 否 | 分区类型,默认值为"HASH"。 |
| WithPartitionNum | int | 否 | 表的分区数量,默认值为16,取值范围为[1, 1000]。 若非FLAT索引,则建议将单个分区的记录总数控制在100万到1000万之间。 |
| WithEnableDynamicField | bool | 否 | 表是否支持自动增加字段,默认值为false。 |
| WithDescription | std::string | 否 | 表的描述信息。 |
| WithDatanodeMemoryReservedInGB | double | 否 | 数据节点预留内存,单位GB,默认不下发该字段。取值必须为有限值且非负;当数据节点剩余可用内存低于预留内存时,无法对该表执行插入、更新与删除请求。 |
| WithTtlSeconds | uint64_t | 否 | 数据的生命周期(Time To Live),单位秒,默认值为0表示数据永不过期。仅建表时可指定。 |
| WithEnablePrimaryKeyMemIndex | bool | 否 | 是否为主键开启内存索引,不设置时不下发该字段。 |
Schema参数
mochow::Schema通过内部类Schema::Builder构建,Build()返回mochow::Result<mochow::Schema>。
| 参数 | 参数类型 | 是否必选 | 参数含义 |
|---|---|---|---|
| AddField | mochow::Field | 是 | 追加一个字段定义,可多次调用。 |
| AddIndex | mochow::Index | 否 | 追加一个索引定义,可多次调用。倒排索引(全文索引)建议随表创建。 |
| Build | - | 是 | 校验并生成Schema,返回Result<Schema>。 |
构建完成的Schema可通过Fields()、Indexes()读取字段与索引列表。
Field参数
mochow::Field提供通用构造函数Field(std::string name, FieldType type)与一组静态工厂方法。
| 参数 | 参数类型 | 是否必选 | 参数含义 |
|---|---|---|---|
| Field(name, type) | std::string, mochow::FieldType | 是 | 通用构造,适用于所有字段类型。 |
| Field::Bool / Int64 / String / Json / Date / Time / Datetime / Timestamp / HLC | std::string | 否 | 指定类型的快捷构造,参数为字段名称。 |
| Field::FloatVector(name, dimension) | std::string, int | 否 | 稠密浮点向量字段,dimension为向量维度,必须大于0。 |
| Field::BinaryVector(name, dimension) | std::string, int | 否 | 二值向量字段,dimension为向量维度,必须大于0。 |
| Field::SparseFloatVector(name) | std::string | 否 | 稀疏浮点向量字段,无需指定维度。 |
| Field::Array(name, element_type, max_capacity) | std::string, mochow::FieldType, int | 否 | 数组字段,element_type为元素类型,max_capacity大于0时下发容量上限。 |
| Field::Map(name, key_type, value_type) | std::string, mochow::FieldType, mochow::FieldType | 否 | Map字段,需同时指定键类型与值类型。 |
| PrimaryKey | bool | 否 | 是否为主键,默认值为false。主键字段自动按非空处理。 |
| PartitionKey | bool | 否 | 是否为分区键,默认值为false。一张表只能有一个分区键,每行记录根据分区键取值哈希映射到不同分区。 |
| AutoIncrement | bool | 否 | 是否自增主键,默认值为false。仅适用于类型为UINT64的主键字段。 |
| NotNull | bool | 否 | 是否非空,默认值为false。不可为空值的字段包括:主键字段、分区键字段、向量字段和索引键字段。 |
mochow::FieldType枚举取值:Bool、Int8、UInt8、Int16、UInt16、Int32、UInt32、Int64、UInt64、Float、Double、Date、Time、Datetime、Timestamp、HLC、String、Binary、UUID、Text、TextGBK、TextGB18030、Array、Json、Map、FloatVector、BinaryVector、SparseFloatVector。各数据类型的详细定义和约束请参见数据类型。
Index参数
C++ SDK 使用同一个mochow::Index类型描述所有索引,索引种类由静态工厂方法或IndexType决定。
| 参数 | 参数类型 | 是否必选 | 参数含义 |
|---|---|---|---|
| Index(name, field_name, type) | std::string, std::string, mochow::IndexType | 否 | 通用构造,用于没有专用工厂方法的索引类型(如HNSWPQ、IVFPQ),需配合Metric与Param使用。 |
| Index::Hnsw / Flat / HnswSQ / HnswRabitQ / IVF / IVFSQ / IVFRabitQ / Puck / DiskANN / SparseOptimizedFlat | - | 否 | 向量索引工厂方法,详见向量索引参数。 |
| Index::Secondary | std::string, std::string | 否 | 标量二级索引,详见标量索引参数。 |
| Index::Filtering / FilteringWithFields | - | 否 | FILTERING索引。在带有过滤条件的检索场景中,为过滤的标量字段添加索引,可以显著加速检索过程。 |
| Index::PersistentBitmap | std::string, std::string | 否 | 持久化BITMAP索引。在过滤条件上等价于FILTERING索引的BITMAP结构,但索引数据基于磁盘存储,可大幅降低内存占用。 |
| Index::PersistentAggregatedBitmap | - | 否 | 持久化AGGREGATED_BITMAP索引。同时支持等值和范围过滤加速,索引数据基于磁盘存储。 |
| Index::Inverted | - | 否 | 倒排索引(全文索引),详见倒排索引参数。 |
| Metric | mochow::MetricType | 否 | 设置向量距离度量类型,向量索引必填。 |
| Param | std::string, mochow::FieldValue | 否 | 设置单个索引构建参数,键名与HTTP协议中的params字段一致。 |
| AutoBuild | bool | 否 | 是否自动构建索引,默认值为false,仅向量索引下发。 |
| AutoBuildPolicy | mochow::AutoBuildPolicy | 否 | 自动构建索引策略,仅在AutoBuild(true)时下发,详见AutoBuildPolicy参数。 |
| RuleBased | std::string, int64_t | 否 | 规则隔离索引参数(isolatedField与threshold),仅支持DISKANN与IVFSQ索引类型,threshold必须为正数。 |
mochow::IndexType枚举取值:Hnsw、Flat、Puck、HnswPQ、HnswSQ、HnswRabitQ、SparseOptimizedFlat、DiskANN、IVF、IVFSQ、IVFPQ、IVFRabitQ、Secondary、Filtering、Inverted、PersistentBitmap、PersistentAggregatedBitmap。
mochow::MetricType枚举取值:
L2:欧几里得距离IP:内积距离Cosine:余弦距离
注:当使用COSINE距离时,用户需要自行对相关向量进行归一化操作,未经归一化的向量将导致search结果不准确。部分索引类型限制了可用的距离度量类型。
向量索引参数
| 参数 | 参数类型 | 是否必选 | 参数含义 |
|---|---|---|---|
| Index::Hnsw(name, field, metric) | std::string, std::string, mochow::MetricType | 否 | HNSW向量索引,使用默认构建参数(M=16、efConstruction=200)。 |
| Index::Hnsw(name, field, metric, params) | ..., mochow::HnswParams | 否 | HNSW向量索引。HnswParams包含:m:每个节点在检索构图中连接的邻居节点数,取值为[4, 128]ef_construction:构图时候选邻居遍历范围,取值为[8, 1024] |
| Index::Flat(name, field, metric) | std::string, std::string, mochow::MetricType | 否 | FLAT暴力检索索引,无构建参数,适用于数据量较小的场景。 |
| Index::HnswSQ(name, field, metric, params, qt_bits) | ..., mochow::HnswParams, uint64_t | 否 | HNSWSQ向量索引。qt_bits为每个维度SQ量化所用的bit数,取值为{8, 16}。 |
| Index::HnswRabitQ(name, field, metric, params) | ..., mochow::HnswParams | 否 | HNSWRABITQ向量索引,在HNSW图结构上使用RaBitQ量化,显著降低内存占用。构建参数为m与ef_construction,取值范围与HNSW一致。 |
| Index::IVF(name, field, metric, nlist) | ..., uint64_t | 否 | IVF向量索引。nlist为聚类数量,取值范围为[1, 65536]。 |
| Index::IVFSQ(name, field, metric, nlist, qt_bits) | ..., uint64_t, uint64_t | 否 | IVFSQ向量索引。nlist取值范围为[1, 65536];qt_bits为每个维度SQ量化所用的bit数,取值为{4, 8, 16}。 |
| Index::IVFRabitQ(name, field, metric, nlist) | ..., uint64_t | 否 | IVFRABITQ向量索引,在IVF倒排结构上使用RaBitQ量化。nlist取值范围为[1, 65536]。 |
| Index::Puck(name, field, metric, coarse_cluster_count, fine_cluster_count) | ..., uint64_t, uint64_t | 否 | PUCK向量索引(百度自研搜索算法)。coarseClusterCount为粗聚类中心个数,fineClusterCount为每个粗聚类中心下的细聚类中心个数,取值范围均为[1, 5000]。 |
| Index::DiskANN(name, field, metric, params) | ..., mochow::DiskANNParams | 否 | DISKANN向量索引。DiskANNParams包含:nsq:量化子空间个数,需满足1 <= NSQ <= 512 且 NSQ <= dimr:vamana图出度,取值为[1, 128]l:vamana图构建期间候选集大小,取值为[8, 1024] |
| Index::SparseOptimizedFlat(name, field) | std::string, std::string | 否 | 稀疏向量索引,仅支持SparseFloatVector字段,度量类型固定为IP,无构建参数。 |
| Index(name, field, IndexType::HnswPQ) + Param | - | 否 | HNSWPQ向量索引,需通过Param设置M、efConstruction、NSQ,可选设置sampleRate。NSQ需整除有效向量维度。 |
| Index(name, field, IndexType::IVFPQ) + Param | - | 否 | IVFPQ向量索引,需通过Param设置nlist与NSQ,NSQ需整除有效向量维度。 |
注:SDK 在编码请求时会校验各向量索引类型的必填构建参数(HNSW/HNSWRABITQ的M、efConstruction;HNSWSQ的M、efConstruction、qtBits;HNSWPQ的M、efConstruction、NSQ;IVF/IVFRABITQ的nlist;IVFSQ的nlist、qtBits;IVFPQ的nlist、NSQ;PUCK的coarseClusterCount、fineClusterCount;DISKANN的NSQ、R、L),缺失或非正数时返回StatusCode::InvalidArgument。
AutoBuildPolicy参数
mochow::AutoBuildPolicy通过静态方法构造,仅在向量索引且AutoBuild(true)时生效。
| 参数 | 参数类型 | 是否必选 | 参数含义 |
|---|---|---|---|
| AutoBuildPolicy::Timing(timing) | std::string | 否 | 定时构建,指定构建时间,只构建一次,不会重复构建。时间格式支持UTC及LOCAL,例如"2026-09-11 23:07:00"。 |
| AutoBuildPolicy::Periodical(period_seconds, timing) | uint64_t, std::string | 否 | 周期性构建,每过period_seconds秒构建一次索引,可重复构建。周期不能低于3600;timing可选,用于指定起始时间。 |
| AutoBuildPolicy::RowCountIncrement(row_count_increment, row_count_increment_ratio) | uint64_t, double | 否 | 增量行数构建。Tablet(不是table)增加或减少指定行数时自动构建一次索引,可重复构建。增量行数不低于10000。 |
| AutoBuildPolicy::RowCountIncrementRatio(row_count_increment_ratio) | double | 否 | 按增量行数百分比触发构建,取值需大于0。 |
标量索引参数
| 参数 | 参数类型 | 是否必选 | 参数含义 |
|---|---|---|---|
| Index::Secondary(name, field_name) | std::string, std::string | 否 | 标量二级索引,field_name为索引作用的目标字段名称。 |
| Index::Filtering(name, fields) | std::string, std::vector<std::string> | 否 | FILTERING索引,所有字段使用默认内存结构(DEFAULT)。 |
| Index::FilteringWithFields(name, fields) | std::string, std::vector<mochow::FilteringIndexField> | 否 | FILTERING索引,可为每个字段单独指定内存结构,详见FilteringIndexField参数。 |
| Index::PersistentBitmap(name, field_name) | std::string, std::string | 否 | 持久化BITMAP索引,适用于等值过滤。 |
| Index::PersistentAggregatedBitmap(name, field_name, params) | std::string, std::string, mochow::PersistentAggregatedBitmapParams | 否 | 持久化AGGREGATED_BITMAP索引,适用于等值与范围过滤,详见PersistentAggregatedBitmapParams参数。 |
FilteringIndexField参数
| 参数 | 参数类型 | 是否必选 | 参数含义 |
|---|---|---|---|
| FilteringIndexField(field) | std::string | 是 | 索引作用于的目标字段名称。 支持以下通配符: |
| StructureType | mochow::FilteringIndexStructureType | 否 | 选择FILTERING索引的内存结构,缺省不下发该字段(服务端按DEFAULT处理)。取值如下:Default:默认结构Bitmap:BITMAP结构,适用于值的种类较少的列,如性别、年龄等AggregatedBitmap:聚合BITMAP结构,除等值查询(如a=1)外,还可加速范围查询(如a>1、a>=1、a<1、a<=1),常见场景为timestamp > {某个时间} |
PersistentAggregatedBitmapParams参数
| 参数 | 参数类型 | 是否必选 | 参数含义 |
|---|---|---|---|
| fanout_bits | uint64_t | 是 | 聚合BITMAP树每层用于分叉的位数,取值范围为[1, 10]。 |
| max_depth | uint64_t | 是 | 聚合BITMAP树的最大深度,取值范围为[2, 30]。 |
注:必须同时填写fanout_bits与max_depth,且需要满足`fanout_bits (max_depth - 1) <= 64;SDK 在编码请求时本地校验,不满足时返回StatusCode::InvalidArgument`。*
倒排索引参数
| 参数 | 参数类型 | 是否必选 | 参数含义 |
|---|---|---|---|
| Index::Inverted(name, fields, params, field_attributes) | std::string, std::vector<std::string>, mochow::InvertedIndexParams, std::vector<mochow::InvertedIndexFieldAttribute> | 否 | 倒排索引(全文索引)。fields为建立倒排索引的字段列表,支持TEXT、TEXT_GBK、TEXT_GB18030、ARRAY<TEXT>、JSON类型字段;params见InvertedIndexParams参数;field_attributes可选,长度必须与fields一致。 |
mochow::InvertedIndexFieldAttribute枚举取值:
Analyzed:该列需要分词NotAnalyzed:该列不分词
InvertedIndexParams参数
| 参数 | 参数类型 | 是否必选 | 参数含义 |
|---|---|---|---|
| Analyzer | mochow::InvertedIndexAnalyzer | 否 | 指定倒排索引的分词器。取值如下:English:英文分词器Chinese:中文分词器Default:默认分词器,适用于英文、中文、中英文混合等场景,建议使用 |
| ParseMode | mochow::InvertedIndexParseMode | 否 | 分词器的分词模式。取值如下:Coarse:较粗粒度,基于不产生歧义的较大粒度进行切分,适宜于对语义表达能力要求较高的应用Fine:细粒度模式,基于语义完整的最小粒度进行切分 |
| CaseSensitive | bool | 否 | 是否大小写敏感,默认值为true。 |
| StopWords | mochow::StopWordsParams | 否 | 停用词表配置。停用词是指“呀”“啊”“哦”这类被认为无检索意义、不会加入倒排索引的词。不指定时使用系统默认停用词表。 |
StopWordsParams参数
| 参数 | 参数类型 | 是否必选 | 参数含义 |
|---|---|---|---|
| Mode | mochow::StopWordsMode | 是 | 停用词模式。取值如下:Default:使用系统默认停用词表Custom:使用自定义停用词表,此时必须通过Words指定非空词表None:不使用任何停用词表,所有词都会进入倒排索引 |
| Words | std::vector<std::string> | 否 | 自定义停用词列表,仅在Mode为Custom时生效且不能为空。每个词条应为单个term。 |
| AddWord | std::string | 否 | 向自定义停用词列表追加单个词条。 |
注:StopWords只能在建表或创建索引时指定,创建后不支持原地修改,检索请求也不能临时覆盖。Custom模式下词表为空时,SDK 返回StatusCode::InvalidArgument。
返回参数
| 参数 | 参数类型 | 参数含义 |
|---|---|---|
| status | mochow::Status | 建表请求的执行结果,IsOk()为true表示请求已被服务端接受。建表为异步生效,可通过DescribeTable轮询state确认表就绪。 |
修改表
功能介绍
修改指定表的配置,当前支持调整数据节点预留内存、读写开关,以及字段的非空属性。
请求示例
1#include <iostream>
2#include <memory>
3
4#include "mochow/Mochow.h"
5
6int main() {
7 mochow::ClientOptions options;
8 options.endpoint = "http://127.0.0.1:5287"; // $您的实例访问端点
9 options.credentials.account = "root";
10 options.credentials.api_key = "$您的账户API密钥";
11
12 auto client_result = mochow::MochowClient::Create(options);
13 if (!client_result.IsOk()) {
14 std::cerr << "create client failed: "
15 << client_result.GetStatus().Message() << std::endl;
16 return 1;
17 }
18 std::shared_ptr<mochow::MochowClient> client = client_result.MoveValue();
19 mochow::Database db = client->GetDatabase("db_test");
20
21 mochow::ModifyTableRequest modify_table;
22 modify_table.WithTableName("book_vector")
23 .WithDatanodeMemoryReservedInGB(0.5)
24 .WithDenyReadOptions(false)
25 .WithDenyWriteOptions(false)
26 .AddField(mochow::ModifyFieldRequest("author", true));
27
28 mochow::Status status = db.ModifyTable(modify_table);
29 if (!status.IsOk()) {
30 std::cerr << "modify table failed: " << status.Message() << std::endl;
31 return 1;
32 }
33
34 (void)client->Close();
35 return 0;
36}
请求参数
ModifyTableRequest参数
| 参数 | 参数类型 | 是否必选 | 参数含义 |
|---|---|---|---|
| WithTableName | std::string | 是 | 指定表的名称。 |
| WithDatanodeMemoryReservedInGB | double | 否 | 数据节点预留内存,单位GB,取值必须为有限值且非负。 |
| WithDenyReadOptions | bool | 否 | 是否禁止对该表的读请求。 |
| WithDenyWriteOptions | bool | 否 | 是否禁止对该表的写请求。 |
| WithFields | std::vector<mochow::ModifyFieldRequest> | 否 | 一次性设置待修改的字段列表。 |
| AddField / AddFields | mochow::ModifyFieldRequest | 否 | 追加待修改的字段,详见ModifyFieldRequest参数。 |
| WithTtlSeconds | uint64_t | 否 | 保留参数。Mochow 2.4 的修改表接口不接受TTL更新,填写非0值时 SDK 会在编码阶段返回错误。 |
ModifyFieldRequest参数
| 参数 | 参数类型 | 是否必选 | 参数含义 |
|---|---|---|---|
| ModifyFieldRequest(field_name, not_null) | std::string, bool | 否 | 构造函数,等价于依次调用WithFieldName与WithNotNull。 |
| WithFieldName | std::string | 是 | 待修改的字段名称。 |
| WithNotNull | bool | 否 | 修改后的非空属性。 |
删除表
功能介绍
删除指定的表。
请求示例
1#include <iostream>
2#include <memory>
3
4#include "mochow/Mochow.h"
5
6int main() {
7 mochow::ClientOptions options;
8 options.endpoint = "http://127.0.0.1:5287"; // $您的实例访问端点
9 options.credentials.account = "root";
10 options.credentials.api_key = "$您的账户API密钥";
11
12 auto client_result = mochow::MochowClient::Create(options);
13 if (!client_result.IsOk()) {
14 std::cerr << "create client failed: "
15 << client_result.GetStatus().Message() << std::endl;
16 return 1;
17 }
18 std::shared_ptr<mochow::MochowClient> client = client_result.MoveValue();
19 mochow::Database db = client->GetDatabase("db_test");
20
21 mochow::Status status = db.DropTable("book_vector");
22 if (!status.IsOk()) {
23 std::cerr << "drop table failed: " << status.Message() << std::endl;
24 return 1;
25 }
26
27 (void)client->Close();
28 return 0;
29}
请求参数
| 参数 | 参数类型 | 是否必选 | 参数含义 |
|---|---|---|---|
| table_name | const std::string& | 是 | 指定表的名称。 |
| options | mochow::RequestOptions | 否 | 单次请求级选项,可设置WithRequestId、WithRequestTimeoutMs、WithIdempotencyKey和WithRetry。 |
查询指定表详情
功能介绍
查询指定表的详情,返回表的Schema、描述信息与当前状态。
请求示例
1#include <iostream>
2#include <memory>
3
4#include "mochow/Mochow.h"
5
6int main() {
7 mochow::ClientOptions options;
8 options.endpoint = "http://127.0.0.1:5287"; // $您的实例访问端点
9 options.credentials.account = "root";
10 options.credentials.api_key = "$您的账户API密钥";
11
12 auto client_result = mochow::MochowClient::Create(options);
13 if (!client_result.IsOk()) {
14 std::cerr << "create client failed: "
15 << client_result.GetStatus().Message() << std::endl;
16 return 1;
17 }
18 std::shared_ptr<mochow::MochowClient> client = client_result.MoveValue();
19 mochow::Database db = client->GetDatabase("db_test");
20
21 mochow::TableInfo table_info;
22 mochow::Status status = db.DescribeTable("book_vector", &table_info);
23 if (!status.IsOk()) {
24 std::cerr << "describe table failed: " << status.Message() << std::endl;
25 return 1;
26 }
27
28 std::cout << "table: " << table_info.name
29 << ", state: " << table_info.state
30 << ", fields: " << table_info.schema.Fields().size()
31 << ", indexes: " << table_info.schema.Indexes().size()
32 << std::endl;
33
34 (void)client->Close();
35 return 0;
36}
请求参数
| 参数 | 参数类型 | 是否必选 | 参数含义 |
|---|---|---|---|
| table_name | const std::string& | 是 | 指定表的名称。 |
| table | mochow::TableInfo* | 是 | 输出参数,用于接收表详情,不能为空指针。 |
| options | mochow::RequestOptions | 否 | 单次请求级选项。 |
返回参数
TableInfo参数
| 参数 | 参数类型 | 参数含义 |
|---|---|---|
| name | std::string | 表的名称。 |
| schema | mochow::Schema | 表的Schema信息,可通过Fields()、Indexes()读取字段与索引定义。 |
| description | std::string | 表的描述信息。 |
| state | std::string | 表的当前状态,取值如下: |
查询表的列表
功能介绍
查询指定库包含的所有表。
请求示例
1#include <iostream>
2#include <memory>
3#include <vector>
4
5#include "mochow/Mochow.h"
6
7int main() {
8 mochow::ClientOptions options;
9 options.endpoint = "http://127.0.0.1:5287"; // $您的实例访问端点
10 options.credentials.account = "root";
11 options.credentials.api_key = "$您的账户API密钥";
12
13 auto client_result = mochow::MochowClient::Create(options);
14 if (!client_result.IsOk()) {
15 std::cerr << "create client failed: "
16 << client_result.GetStatus().Message() << std::endl;
17 return 1;
18 }
19 std::shared_ptr<mochow::MochowClient> client = client_result.MoveValue();
20 mochow::Database db = client->GetDatabase("db_test");
21
22 std::vector<mochow::TableInfo> tables;
23 mochow::Status status = db.ListTables(&tables);
24 if (!status.IsOk()) {
25 std::cerr << "list tables failed: " << status.Message() << std::endl;
26 return 1;
27 }
28
29 for (const mochow::TableInfo& table : tables) {
30 std::cout << table.name << ": " << table.state << std::endl;
31 }
32
33 (void)client->Close();
34 return 0;
35}
请求参数
| 参数 | 参数类型 | 是否必选 | 参数含义 |
|---|---|---|---|
| tables | std::vector<mochow::TableInfo>* | 是 | 输出参数,用于接收表详情列表,不能为空指针。 |
| options | mochow::RequestOptions | 否 | 单次请求级选项。 |
返回参数
| 参数 | 参数类型 | 参数含义 |
|---|---|---|
| tables | std::vector<mochow::TableInfo> | 表详情列表,元素结构见TableInfo参数。 |
查询指定表的统计信息
功能介绍
查询指定表的统计信息,包括记录数、内存占用和磁盘占用。
请求示例
1#include <iostream>
2#include <memory>
3
4#include "mochow/Mochow.h"
5
6int main() {
7 mochow::ClientOptions options;
8 options.endpoint = "http://127.0.0.1:5287"; // $您的实例访问端点
9 options.credentials.account = "root";
10 options.credentials.api_key = "$您的账户API密钥";
11
12 auto client_result = mochow::MochowClient::Create(options);
13 if (!client_result.IsOk()) {
14 std::cerr << "create client failed: "
15 << client_result.GetStatus().Message() << std::endl;
16 return 1;
17 }
18 std::shared_ptr<mochow::MochowClient> client = client_result.MoveValue();
19 mochow::Database db = client->GetDatabase("db_test");
20 mochow::Table table = db.GetTable("book_vector");
21
22 mochow::TableStats stats;
23 mochow::Status status = table.Stats(&stats);
24 if (!status.IsOk()) {
25 std::cerr << "table stats failed: " << status.Message() << std::endl;
26 return 1;
27 }
28
29 std::cout << "rowCount: " << stats.row_count
30 << ", memorySizeInByte: " << stats.memory_size_in_byte
31 << ", diskSizeInByte: " << stats.disk_size_in_byte << std::endl;
32
33 (void)client->Close();
34 return 0;
35}
请求参数
| 参数 | 参数类型 | 是否必选 | 参数含义 |
|---|---|---|---|
| stats | mochow::TableStats* | 是 | 输出参数,用于接收表的统计信息,不能为空指针。 |
| options | mochow::RequestOptions | 否 | 单次请求级选项。 |
返回参数
TableStats参数
| 参数 | 参数类型 | 参数含义 |
|---|---|---|
| row_count | uint64_t | 记录数。 |
| memory_size_in_byte | uint64_t | 内存大小,单位字节。 |
| disk_size_in_byte | uint64_t | 磁盘大小,单位字节。 |
| metadata | mochow::ResponseMetadata | 响应元信息,可通过RequestId()、HttpStatus()、ServerCode()读取。 |
评价此篇文章
