日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

創建數據表

本文將通過參數說明和示例代碼為您介紹如何使用 Go SDK 創建數據表。在創建數據表時,您需要指定數據表的結構信息和配置信息。CU 模式(原按量模式)下高性能型實例中的數據表還可以根據需要設置預留讀寫吞吐量。

注意事項

  • 創建數據表后需要幾秒鐘進行加載,在此期間對該數據表的讀寫數據操作均會失敗。請等待數據表加載完畢后再進行數據操作。

  • 表格存儲提供數據加密存儲功能,如果您有高安全性或合規性要求,可以在創建數據表時配置加密相關參數。具體操作,請參見創建加密表

  • 如果您有主鍵數據自增的需求,例如電商網站的商品 ID、論壇帖子的 ID 等場景,可以在創建數據時配置主鍵列自增。具體操作,請參見主鍵列自增

前提條件

接口

//說明:根據指定表結構信息創建數據表。
//當創建一個數據表后,通常需要等待幾秒鐘時間使partition load完成,才能進行各種操作。
//返回:CreateTableResponse
CreateTable(request *CreateTableRequest) (*CreateTableResponse, error) 

參數說明

request包含以下參數:

參數

說明

TableMeta(必選

數據表的結構信息,包括如下內容:

  • TableName(必選):數據表名稱。

  • SchemaEntry(必選):數據表的主鍵定義。更多信息,請參見核心組件

    • 主鍵數據類型可以為 STRING、INTEGER 或 BINARY。

    • 可以設置 1~4 個主鍵列。表格存儲將按照設置的順序生成主鍵,默認按升序進行排序。

    • 第一個主鍵列將作為分區鍵。

  • DefinedColumns(可選):預定義列信息。數據類型可以為 STRING、INTEGER、BINARY、DOUBLE 或 BOOLEAN。

    說明
    • 預定義列是預先定義的一些非主鍵列,通常被用作二級索引的主鍵列或預定義列,以實現快速查詢數據的需求。

    • 屬性列在創建表時無需定義,您可以在寫入數據時為每行數據指定不同的屬性列和列名。

TableOption(必選

數據表的配置信息,包括如下內容:

  • TimeToAlive(必選):數據生命周期,即數據的過期時間,單位為秒。

    數據生命周期的取值最低為 86400 秒(一天),也可設置為 -1(永不過期)。

    重要

    如果要使用多元索引或二級索引,必須將數據生命周期設置為 -1,或者將 AllowUpdate 參數設置為 false。

  • MaxVersion(必選):最大版本數,即屬性列能夠保留數據的最大版本個數。

    重要

    如果要使用多元索引或二級索引,最大版本數必須設置為 1。

  • DeviationCellVersionInSec(可選):有效版本偏差,即寫入數據的時間戳與系統當前時間的偏差允許最大值,單位為秒。

    默認值 86400 秒(一天)。屬性列的有效取值范圍是一個左閉右開的區間:[max{數據寫入時間-有效版本偏差,數據寫入時間-數據生命周期},數據寫入時間+有效版本偏差)

  • AllowUpdate(可選):是否允許更新。默認為true。

    重要

    如果要使用多元索引的生命周期功能,必須設置此參數為 false。如果您需要更新數據,可使用 PutRow 接口寫入數據。

IndexMetas(可選)

索引列表。每個索引包含以下內容:

  • IndexName(必選):索引名稱。

  • PrimaryKey(必選):索引的主鍵列。可以由數據表的主鍵列和預定義列組成。

    重要

    使用本地二級索引時,索引第一個主鍵列必須是數據表的第一個主鍵列。

  • DefinedColumns(可選):索引的預定義列。可以由數據表的預定義列組成。

  • IndexType(可選):索引類型。取值范圍如下:

    • IT_GLOBAL_INDEX (默認值):全局二級索引。

    • IT_LOCAL_INDEX:本地二級索引。

ReservedThroughput(必選

預留讀寫吞吐量,單位為 CU。默認值為 0。

重要

CU 模式下高性能型實例支持設置數據表的預留讀寫吞吐量為非零值。

StreamSpec(可選)

數據表的 Stream 配置信息,包括如下內容:

  • EnableStream(可選):是否開啟 stream。默認值為 false,即不開啟 stream。

  • ExpirationTime(可選):stream 過期時間,表示增量日志過期時長。單位為小時,最大值為 168 小時(7 天)。

    說明

    開啟 stream 時,必須設置 expirationTime 參數。

SSESpecification(可選)

數據表的加密配置。

重要

數據表創建后,不支持修改加密相關配置。

EnableLocalTxn(可選)

是否開啟局部事務功能。默認值為 false,表示不開啟局部事務功能。

重要
  • 主鍵列自增和局部事務功能無法同時使用,如果您配置了主鍵列自增,即使開啟局部事務也不會生效。

  • 如果創建數據表時未開啟局部事務功能,創建數據表后需要使用該功能,請提交工單進行申請或者加入釘釘群 23307953(表格存儲技術交流群-3)進行咨詢

示例

創建數據表

以下示例用于創建數據表。

func CreateTableSample(client *tablestore.TableStoreClient, tableName string) {
	createTableRequest := new(tablestore.CreateTableRequest)

	tableMeta := new(tablestore.TableMeta)
	//設置數據表名稱。
	tableMeta.TableName = tableName
	//為數據表添加主鍵列。主鍵為pk1(String類型)和pk2(Integer類型),其中pk1主鍵列為分區鍵,pk2主鍵列為自增列。
	tableMeta.AddPrimaryKeyColumn("pk1", tablestore.PrimaryKeyType_STRING)
	tableMeta.AddPrimaryKeyColumnOption("pk2", tablestore.PrimaryKeyType_INTEGER, tablestore.AUTO_INCREMENT)

	tableOption := new(tablestore.TableOption)
	//數據的過期時間,-1表示永不過期。
	tableOption.TimeToAlive = -1
	//最大版本數,屬性列值最多保留1個版本,即保存最新的版本。
	tableOption.MaxVersion = 1
	//有效版本偏差,即寫入數據的時間戳與系統當前時間的偏差允許最大值為86400秒(1天)。
	tableOption.DeviationCellVersionInSec = 86400

	//設置預留讀寫吞吐量,容量型實例下的數據表只能設置為0,高性能型實例下的數據表可以設置為非零值。
	reservedThroughput := new(tablestore.ReservedThroughput)
	reservedThroughput.Readcap = 0
	reservedThroughput.Writecap = 0
	
	createTableRequest.TableMeta = tableMeta
	createTableRequest.TableOption = tableOption
	createTableRequest.ReservedThroughput = reservedThroughput
	_, err := client.CreateTable(createTableRequest)
	if err != nil {
		fmt.Println("Failed to create table with error:", err)
	} else {
		fmt.Println("Create table finished")
	}
}

創建數據表時配置二級索引

創建數據表時配置全局二級索引

以下示例用于同時創建數據表和全局二級索引。

func CreateTableWithGlobalIndexSample(client *tablestore.TableStoreClient, tableName string) {
	createTableRequest := new(tablestore.CreateTableRequest)

	tableMeta := new(tablestore.TableMeta)
	//設置數據表名稱。
	tableMeta.TableName = tableName
	//為數據表添加主鍵列。主鍵為pk1(String類型)和pk2(Integer類型)。
	tableMeta.AddPrimaryKeyColumn("pk1", tablestore.PrimaryKeyType_STRING)
	tableMeta.AddPrimaryKeyColumn("pk2", tablestore.PrimaryKeyType_INTEGER)
	//為數據表添加預定義列。預定義列為defcol1(String類型)和defcol2(Integer類型)。
	tableMeta.AddDefinedColumn("defcol1", tablestore.DefinedColumn_STRING)
	tableMeta.AddDefinedColumn("defcol2", tablestore.DefinedColumn_INTEGER)

	tableOption := new(tablestore.TableOption)
	//數據永不過期,-1表示永不過期。
	tableOption.TimeToAlive = -1
	//最大版本數,屬性列值最多保留1個版本,即保存最新的版本。。
	tableOption.MaxVersion = 1
	reservedThroughput := new(tablestore.ReservedThroughput)

	//全局二級索引
	indexMeta := new(tablestore.IndexMeta)
	//設置索引名稱。
	indexMeta.IndexName = "<INDEX_NAME>"
	//為索引添加主鍵列。主鍵列為defcol1、pk1和pk2
	indexMeta.AddPrimaryKeyColumn("defcol1")
	indexMeta.AddPrimaryKeyColumn("pk1")
	indexMeta.AddPrimaryKeyColumn("pk2")
	//為索引添加預定義列。預定義列為defcol2。
	indexMeta.AddDefinedColumn("defcol2")
	
	createTableRequest.TableMeta = tableMeta
	createTableRequest.TableOption = tableOption
	createTableRequest.ReservedThroughput = reservedThroughput
	createTableRequest.AddIndexMeta(indexMeta)
	_, err := client.CreateTable(createTableRequest)
	if err != nil {
		fmt.Println("Failed to create table with error:", err)
	} else {
		fmt.Println("Create table finished")
	}
}

創建數據表時配置本地二級索引

以下示例用于同時創建數據表和本地二級索引。

func CreateTableWithLocalIndexSample(client *tablestore.TableStoreClient, tableName string) {
    createTableRequest := new(tablestore.CreateTableRequest)

    tableMeta := new(tablestore.TableMeta)
    //設置數據表名稱。
    tableMeta.TableName = tableName
    //為數據表添加主鍵列。主鍵為pk1(String類型)和pk2(Integer類型)。
    tableMeta.AddPrimaryKeyColumn("pk1", tablestore.PrimaryKeyType_STRING)
    tableMeta.AddPrimaryKeyColumn("pk2", tablestore.PrimaryKeyType_INTEGER)
    //為數據表添加預定義列。預定義列為defcol1(String類型)和defcol2(Integer類型)。
    tableMeta.AddDefinedColumn("defcol1", tablestore.DefinedColumn_STRING)
    tableMeta.AddDefinedColumn("defcol2", tablestore.DefinedColumn_INTEGER)

    tableOption := new(tablestore.TableOption)
    //數據永不過期,-1表示永不過期。
    tableOption.TimeToAlive = -1
    //最大版本數,屬性列值最多保留1個版本,即保存最新的版本。
    tableOption.MaxVersion = 1
    reservedThroughput := new(tablestore.ReservedThroughput)

    //本地二級索引
    indexMeta := new(tablestore.IndexMeta)
    //設置索引名稱。
    indexMeta.IndexName = "<INDEX_NAME>"
    //設置索引類型為本地二級索引(IT_LOCAL_INDEX)。
    indexMeta.IndexType = tablestore.IT_LOCAL_INDEX 
    //為索引添加主鍵列。主鍵列為pk1、defcol1和pk2。
    indexMeta.AddPrimaryKeyColumn("pk1") 
    indexMeta.AddPrimaryKeyColumn("defcol1") 
    indexMeta.AddPrimaryKeyColumn("pk2") 
    //為索引添加預定義列。預定義列為defcol2。
    indexMeta.AddDefinedColumn("defcol2")

    createTableRequest.TableMeta = tableMeta
    createTableRequest.TableOption = tableOption
    createTableRequest.ReservedThroughput = reservedThroughput
    createTableRequest.AddIndexMeta(indexMeta)
    _, err := client.CreateTable(createTableRequest)
    if err != nil {
        fmt.Println("Failed to create table with error:", err)
    } else {
        fmt.Println("Create table finished")
    }
}

創建數據表時開啟局部事務

以下示例用于創建數據表時開啟局部事務功能。

func CreateTableWithEnableLocalTxnSample(client *tablestore.TableStoreClient, tableName string) {
    createTableRequest := new(tablestore.CreateTableRequest)

    tableMeta := new(tablestore.TableMeta)
    //設置數據表名稱。
    tableMeta.TableName = tableName
    //為數據表添加主鍵列。主鍵為pk1(String類型)和pk2(Integer類型)。
    tableMeta.AddPrimaryKeyColumn("pk1", tablestore.PrimaryKeyType_STRING)
    tableMeta.AddPrimaryKeyColumn("pk2", tablestore.PrimaryKeyType_INTEGER)

    tableOption := new(tablestore.TableOption)
    //數據的過期時間,-1表示永不過期。
    tableOption.TimeToAlive = -1
    //最大版本數,屬性列值最多保留1個版本,即保存最新的版本。
    tableOption.MaxVersion = 1
    reservedThroughput := new(tablestore.ReservedThroughput)

    //開啟局部事務。如果數據表配置了主鍵自增列,則開啟局部事務配置不會生效。
    enableLocalTxn := proto.Bool(true)

    createTableRequest.TableMeta = tableMeta
    createTableRequest.TableOption = tableOption
    createTableRequest.ReservedThroughput = reservedThroughput
    createTableRequest.EnableLocalTxn = enableLocalTxn
    _, err := client.CreateTable(createTableRequest)
    if err != nil {
        fmt.Println("Failed to create table with error:", err)
    } else {
	fmt.Println("Create table finished")
    }
}

相關文檔