iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 27
0

為了效能與安全性考量,RDBMS提供的prepare statement的用法,CASSANDRA/SCYALLA會有嗎?答案是有的。

CQL提供的prepare statement語句,與我們在RDBMS裡面使用的方是基本上是相似的。

如下:

INSERT INTO tb (key, val) VALUES (?,?)

每個prepare statement,SCYALLA會利用MD5的方式做hash,存放在查詢的快取裡面。

如此一來,有相同的語法進來,就可以不用再重新解析語意,有全新的prepare statement在解析完語法之後,同樣也經過hash存在快取當中,因此每種語法只需解析一次,達到優異的效能。

講到prepare statement,其實就跟程式語言實作比較有關係了,因為沒事不會在cqlsh或者任何IDE裡面去使用prepare statement對吧。

從這邊要開始帶入到程式語言處理的部分,SCYALLA目前提供的主要有三種db driver,分別是:

  • python
  • java
  • golang

連線的原理大致上都是一樣的,首先程式端與SCYALLA的cluster建立連線,完成一些初使化的動作後,就擁有一個session物件,建立TCP連線,控制與DB的連接與處理。

session可以分別對不同的節點(node)作連線池管理,而且在CQL的設計上本來就可以一次發多的request,因此session建立後重複使用同一個,使用一次就馬上關閉,或者開出多個session都不是洽當的選擇。

筆者的工作環境,以golang為主要的開發語言,與SCYLLA恰好搭配一起使用,下一章開始會為大家簡單介紹gocqlx與一些使用方式。



上一篇
Day26. Batch 批次處理
下一篇
Day28. 程式使用 gocqlx(1)
系列文
scylla 從零開始攻略30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言