觀察一下,有注意到method是否結尾有Release區別,有Release的用法是說基本上組出來的statement都可以重複利用,如果使用了Release的method,則這個statement就會被清除,不能再二次使用。
這個與前面說到的prepare statement,SCYLLA會把語法做MD5紀錄到快取的部分,是獨立不同的部分,不要混在一起了。
可以想做程式每次語法的組織,其實都需要效能上的消耗,而我們query大多只是參數上的不同,所以套件幫忙做了自己的快取。
qb.Exec()
qb.Select()
...
qb.ExecRelease()
qb.SelectRelease()
...
gocqlx額外提供的東西不算多,query builder 組裝完statement之後,除了可以使用BindStruct()
之外,還有一個BindMap()
。
再來就是使用LWT的話,使用的method會與一般的method有所區隔,如以下所列:
ExecCAS()
ExecCASRelease()
GetCAS()
GetCASRelease()
如果說gocqlx稍微應用得比較順手,那麼回過頭來,gocql也可以多了解一下,因為gocql與gocqlx是搭配使用,並無法單獨只使用gocqlx。
要設定一些比較重要的參數,譬如說cluster連線的timeout,pagesize,連線設定等等,必須要透過gocql做設定。
gocql其實是可以單獨使用的,語法都可以應付各種需求,不過query方面,SCYLLA官方是主推gocqlx,那麼就小小地支持一下,在本系列多稍作著墨。
在gocql的readme介紹,也詳細列出目前有相關應用套件,其中也可以找到gocqlx的連結。