以下是protobuf表game_players.proto的示例,您可以將檔案上傳到控制台並建立該錶。
syntax = "proto3"; // 指定protobuf語言版本,proto3.tcaplusdb 表定義可以在 protobuf 語法基礎上通過 option 進行擴充套件,可以實現更豐富的語義功能,可定義的內容如下表所示。詳細的定義格式為:// 匯入tcaplusdb公共定義服務
import "tcaplusservice.optionv1.proto";
message game_players
message payment
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 ...
打造「個人知識庫」
在以前舉辦的巡迴講座時有許多讀得就問到同乙個問題,就是如何有效記往這些平常在工作摸索或者從書中,或與交流中得到的經驗與方法。說經常在工作遇到某些問題似曾相識,卻想不起以前的解決方法了,很是苦惱。其實這是每個人都會遇到的,不是個人問題。特別是對於我們網管這個行業,所涉及的知識面非常廣,可以說沒有人能把...