iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 25
0

CASSANDRA/SCYLLA 支援輕量級交易機制,lightweight transactions 。

這種輕量級交易機制,又稱Compare and Set (CAS)。

用於確保需要順序一致性的需求情境,白話翻譯一下,就是如果符合某個條件,就變更,不符前置條件就不執行。

如以下語法:

INSERT INTO cycling.cyclist_name (id, lastname, firstname)
  VALUES (4647f6d3-7bd2-4085-8d6c-1229351b5498, 'KNETEMANN', 'Roxxane')
  IF NOT EXISTS;
UPDATE cycling.cyclist_name
  SET firstname = ‘Roxane’
  WHERE id = 4647f6d3-7bd2-4085-8d6c-1229351b5498
  IF firstname = ‘Roxxane’;

使用條件僅限制於INSERTUPDATE這兩種操作。

IF關鍵字的使用,就決定了是否是使用LWT。

Cassandra 使用的是 Paxos protocol

會有以下4個步驟

  1. Prepare/Promise
  2. Read/Results
  3. Propose/Accept
  4. Commit/Acknowledge

多了4個roundtrip,導致使用LWT所造成的延遲會多4倍,因此官方建議LWT也是需要評估之後再做使用。

SCYLLA 對於LWT的實作細節與CASSANDRA有所不同,使用了更少的roundtrip,並且優化相關處理。

如以下比較:

cassandra 需要4次

scylla 僅需要3次

還有一些比較進階的改進,譬如說CAS coordinator機制上的優化等等。

SCYLLA 官方鼓勵大家,若過去因為考量到CASSANDRA使用LWT上的效能顧慮,不妨試試SCYLLA的LWT,在需要ACID的使用情境下,LWT可以有所幫助。


上一篇
Day24. 資料結構設計
下一篇
Day26. Batch 批次處理
系列文
scylla 從零開始攻略30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言