創(chuàng)建數(shù)據(jù)表
本文將通過參數(shù)說明和示例代碼為您介紹如何使用 .NET SDK 創(chuàng)建數(shù)據(jù)表。在創(chuàng)建數(shù)據(jù)表時,您需要指定數(shù)據(jù)表的結(jié)構(gòu)信息和配置信息。CU 模式(原按量模式)下高性能型實(shí)例中的數(shù)據(jù)表還可以根據(jù)需要設(shè)置預(yù)留讀寫吞吐量。
注意事項(xiàng)
創(chuàng)建數(shù)據(jù)表后需要幾秒鐘進(jìn)行加載,在此期間對該數(shù)據(jù)表的讀寫數(shù)據(jù)操作均會失敗。請等待數(shù)據(jù)表加載完畢后再進(jìn)行數(shù)據(jù)操作。
如果您有主鍵數(shù)據(jù)自增的需求,例如電商網(wǎng)站的商品 ID、論壇帖子的 ID 等場景,可以在創(chuàng)建數(shù)據(jù)時配置主鍵列自增。具體操作,請參見主鍵列自增。
前提條件
已通過控制臺創(chuàng)建實(shí)例。具體操作,請參見創(chuàng)建實(shí)例。
已初始化 OTSClient,詳情請參見初始化 OTSClient。
接口
/// <summary>
/// 根據(jù)指定表結(jié)構(gòu)信息創(chuàng)建數(shù)據(jù)表。
/// </summary>
/// <param name="request">請求參數(shù)</param>
/// <returns>CreateTable的返回,此返回實(shí)例是空的,不包含具體信息。</returns>
public CreateTableResponse CreateTable(CreateTableRequest request);
/// <summary>
/// CreateTable的異步形式,其參數(shù)和調(diào)用方式與CreateTable保持一致。
/// </summary>
public Task<CreateTableResponse> CreateTableAsync(CreateTableRequest request);
參數(shù)說明
request
包含以下參數(shù):
參數(shù) | 說明 |
tableMeta(必選) | 數(shù)據(jù)表的結(jié)構(gòu)信息,包括如下內(nèi)容:
|
tableOptions(可選) | 數(shù)據(jù)表的配置信息,包括如下內(nèi)容:
|
indexMetas(可選) | 索引列表。每個索引包含以下內(nèi)容:
說明 表格存儲提供了全局和本地兩種類型的二級索引,當(dāng)前 .NET SDK 只支持全局二級索引。 |
reservedThroughput(必選) | 預(yù)留讀寫吞吐量,單位為 CU。默認(rèn)值為 0。 重要 僅 CU 模式下高性能型實(shí)例支持設(shè)置數(shù)據(jù)表的預(yù)留讀寫吞吐量為非零值。 |
streamSpecification(可選) | 數(shù)據(jù)表的 Stream 配置信息,包括如下內(nèi)容:
|
示例
創(chuàng)建數(shù)據(jù)表
以下示例用于創(chuàng)建數(shù)據(jù)表。
//創(chuàng)建主鍵列的schema,包括PK的個數(shù)、名稱和類型。
//第一個PK列為整數(shù),名稱是pk0,這個同時也是分區(qū)鍵。
//第二個PK列為字符串,名稱是pk1。
var primaryKeySchema = new PrimaryKeySchema();
primaryKeySchema.Add("pk0", ColumnValueType.Integer);
primaryKeySchema.Add("pk1", ColumnValueType.String);
//通過表名和主鍵列的schema創(chuàng)建一個tableMeta。
var tableMeta = new TableMeta("SampleTable", primaryKeySchema);
//設(shè)置預(yù)留讀吞吐量為0,預(yù)留寫吞吐量為0。
var reservedThroughput = new CapacityUnit(0, 0);
try
{
//構(gòu)造CreateTableRequest對象。
var request = new CreateTableRequest(tableMeta, reservedThroughput);
//調(diào)用client的CreateTable接口,如果沒有拋出異常,則說明執(zhí)行成功。
otsClient.CreateTable(request);
Console.WriteLine("Create table succeeded.");
}
//如果拋出異常,則說明失敗,處理異常。
catch (Exception ex)
{
Console.WriteLine("Create table failed, exception:{0}", ex.Message);
}
創(chuàng)建數(shù)據(jù)表時配置全局二級索引
以下示例用于同時創(chuàng)建數(shù)據(jù)表和全局二級索引。
public static void CreateTableWithGlobalIndex()
{
//創(chuàng)建數(shù)據(jù)表,兩列主鍵為Pk1、Pk2,預(yù)定義列為Col1、Col2。
//創(chuàng)建索引表,主鍵列為Col1,預(yù)定義列為Col2。
OTSClient otsClient = Config.GetClient();
Console.WriteLine("Start create table with globalIndex...");
PrimaryKeySchema primaryKeySchema = new PrimaryKeySchema
{
{ Pk1, ColumnValueType.String },
{ Pk2, ColumnValueType.String }
};
TableMeta tableMeta = new TableMeta(TableName, primaryKeySchema);
tableMeta.DefinedColumnSchema = new DefinedColumnSchema {
{ Col1, DefinedColumnType.STRING},
{ Col2, DefinedColumnType.STRING}
};
IndexMeta indexMeta = new IndexMeta(IndexName);
indexMeta.PrimaryKey = new List<string>() { Col1 };
indexMeta.DefinedColumns = new List<string>() { Col2 };
//indexMeta.IndexType = IndexType.IT_GLOBAL_INDEX;
//indexMeta.IndexUpdateModel = IndexUpdateMode.IUM_ASYNC_INDEX;
List<IndexMeta> indexMetas = new List<IndexMeta>() { };
indexMetas.Add(indexMeta);
CapacityUnit reservedThroughput = new CapacityUnit(0, 0);
CreateTableRequest request = new CreateTableRequest(tableMeta, reservedThroughput, indexMetas);
otsClient.CreateTable(request);
Console.WriteLine("Table is created: " + TableName);
}
相關(guān)文檔
關(guān)于 API 說明的更多信息,請參見 CreateTable。
關(guān)于數(shù)據(jù)版本和生命周期、二級索引、預(yù)留讀寫吞吐量的更多信息,請參見數(shù)據(jù)版本和生命周期、二級索引和預(yù)留讀寫吞吐量。
創(chuàng)建數(shù)據(jù)表后,您可能需要以下操作:
表相關(guān)操作,請參見表操作。
數(shù)據(jù)相關(guān)操作,請參見基礎(chǔ)數(shù)據(jù)操作。