Scylla支援一般常見的data type。如INT,BIGINT,FLOAT,DECIMAL,VARCHAR,TEXT,BLOB,DATE,TIMESTAMP等等。
也支援集合類型的欄位型態Map,List,Set。集合類型的欄位適用於有範圍的集合,例如一個人的身高體重,年齡血型。如果是紀錄一個人每小時的心跳數,這種會無限增長的類型,就不適合使用集合來儲存。
Scylla還有一種特別的型態counter,除此之外也可以由使用者自行定義UDT(user defined types),以下用一些例子來說明。
Maps
Map以一組key-value組成,每一組key都是唯一值。我們新增一個map欄位用來記錄身高體重。
寫入一筆資料後查詢出來的結果就像這樣。
Sets
Set是由不重複的值所組成,範例如下。
寫入資料後查詢的結果。
Lists
List是由可重複的值所組成,其範例如下。
要注意的一點是,當要update List中數值的時候,要確認是否超出List內包括的數量。例如List中只有三個數值位置由0開始,這個List不存在3這個位置
Counter
Counter是用來儲存計數的欄位型態,使用上有一些限制。
首先Counter不能被當作PK,且同一個table中除了PK只能有counter的欄位型態。
另外當counter更新因為某些原因導致失敗,重做一次update並不保證會對counter作重新計算。
修改counter數值,必須要用update的方式,counter初始值會被視為0。
UDT
Scylla允許使用者自訂欄位型態。在3.2的版本之前,UDT是frozen的,表示無法針對UDT內的某個值做異動,更新必須是整個UDT全部更新。
我們改在4.0的版本來執行就正常了。