TcaplusDB知識庫 PB表定義示例

2022-09-09 20:27:17 字數 3237 閱讀 5330

以下是protobuf表game_players.proto的示例,您可以將檔案上傳到控制台並建立該錶。

syntax = "proto3";         // 指定protobuf語言版本,proto3.

// 匯入tcaplusdb公共定義服務

import "tcaplusservice.optionv1.proto";

message game_players

message payment

tcaplusdb 表定義可以在 protobuf 語法基礎上通過 option 進行擴充套件,可以實現更豐富的語義功能,可定義的內容如下表所示。詳細的定義格式為:option(tcaplusservice.選項) = "值";選項名稱

功能說明

設定示例

必填tcaplus_primary_key

設定 tcaplusdb 表主鍵字段

option(tcaplusservice.tcaplus_primary_key) = "uin,name,region";

是tcaplus_index

設定 tcaplusdb 表索引鍵欄位

option(tcaplusservice.tcaplus_index) = "index_1(uin,region)";

否tcaplus_sharding_key

使用者可以自定義表分片鍵

option(tcaplusservice.tcaplus_sharding_key) = "uin";

否tcaplus_field_cipher_suite

如需使用字段加密功能,請參考設定示例進行設定;如果使用者需要指定自己的加密演算法,請參考 api 中的例子

option(tcaplusservice.tcaplus_field_cipher_suite) = "defaultaesciphersuite";

否tcaplus_cipher_md5

如需使用字段加密功能,需要設定使用者側儲存加密密碼字串的 md5

option(tcaplusservice.tcaplus_cipher_md5)= "62fee3b53619b7f303c939964c6f2c4b";

否tcaplus_primary_key屬性指明此元素對應資料庫表的主鍵,如果有多個成員組成表的主鍵,則成員名之間用逗號(',')隔開,單個表最多能指定8個主鍵字段。約束:

作為主鍵的成員不能為復合資料型別,只能是基本內建資料型別。

作為主鍵的成員其取值不能為null。

option(tcaplusservice.tcaplus_primary_key) = "player_id, player_name, player_email";

根據上面的描述,gameitem的資料表使用player_id, player_name, player_email三個成員作為主鍵。

如何選擇分表因子

tcaplus_sharding_key屬性使用者可以自定義表分片鍵。約束:作為此成員不能為復合資料型別,只能是基本內建資料型別。

option(tcaplusservice.tcaplus_sharding_key) = "player_id";

tcaplus_index屬性用於設定tcaplusdb 表索引鍵欄位。

option(tcaplusservice.tcaplus_index) = "player_email";

檔案定義資訊區域主要定義當前表描述檔案的公共資訊,主要涉及如下3種型別的內容:

選項名稱

功能說明

值示例必填

syntax

指明當前檔案書寫的語法規範版本。

支援 proto2、proto3

是package

指明當前檔案自定義包名,包名可以避免對 message 型別之間的名字衝突。

包名資訊

是import

引入 tcaplus 表的一些公共資訊,必須在您的表定義中被引用。

tcaplusservice.optionv1.proto

是表定義資訊主要通過 message 定義表的格式,在 message 中可對錶的擴充套件資訊進行定義,也可以對錶的字段資訊進行定義。

tcaplusdb 定義欄位的格式為:字段修飾符 字段型別 欄位名稱 = 標識號[特殊定義];

proto2 支援3種型別的限定修飾符,proto3 不再支援 required 修飾,預設為 optional 型別。

tcaplusdb 支援普通字段以及巢狀型字段,詳細的字段介紹可參考 資料型別(pb,tdr)

。針對當前屬性而進行對欄位進行命名,支援大小寫字母,數字與下劃線。建議欄位的命名採用駝峰式命名方式,不能以數字開頭。

標識號使用範圍:[1,2^29 - 1],不可使用 [19000-19999] 標識號,因為 protobuf 協議實現中對這些標識號進行了預留,若使用,則會報錯。每個欄位在進行編碼時都會占用記憶體,而占用記憶體大小取決於標識號:

tcaplusdb 支援巢狀型別,巢狀型別可以包含另乙個巢狀型別作為其欄位,也可以在巢狀型別內定義乙個新的巢狀型別。巢狀型別的定義與表的定義相似,均是通過 message 進行宣告,但是結構體中不能包含擴充套件資訊定義,如"主鍵","索引"等定義。tcaplusdb 支援最多128層連續巢狀,但是不建議大量使用巢狀,巢狀層數過多會導致資料訪問效能降低。

message game_players 

message payment

主鍵字段不能刪除。

主鍵欄位名和字段型別不能改變。

不能增加主鍵字段。

普通欄位有 required 標識的不能刪除。

同標識號的欄位名稱和字段型別不能改變。

增加的普通欄位名要符合命名規則,不能修改原有字段型別、名稱,更不能刪除原有字段。

本地索引只能新增不能刪除和修改。

示例:增加本地索引

增加字段

TcaplusDB知識庫 TDR表資料型別有哪些

目前對於c c c 語言,支援的基本資料型別如下表所示 型別名分類 儲存長度 位元組 取值範圍 byte位元組1 char 單位元組字元 1tinyint整數1 128 127 tinyuint整數1 0 255 smallint整數2 32768 32767 smalluint整數2 0 6553...

TcaplusDB知識庫 條件過濾說明與更新

針對更靈活的資料訪問操作,tcaplusdb 支援條件操作的能力,具備以下能力 generic 表和 list 表都支援條件操作。這裡分別定義兩種型別的表,用於本章節示例,為了更直觀說明條件過濾和更新。本章節以protobuf協議作為示例,但tdr協議同樣支援條件過濾和更新,使用類似。syntax ...

打造「個人知識庫」

在以前舉辦的巡迴講座時有許多讀得就問到同乙個問題,就是如何有效記往這些平常在工作摸索或者從書中,或與交流中得到的經驗與方法。說經常在工作遇到某些問題似曾相識,卻想不起以前的解決方法了,很是苦惱。其實這是每個人都會遇到的,不是個人問題。特別是對於我們網管這個行業,所涉及的知識面非常廣,可以說沒有人能把...