NDB Cluster 使用的 NDB
儲存引擎是一種關聯式資料庫引擎,如同其他關聯式資料庫系統,將記錄儲存在資料表中。資料表列以關聯資料的元組表示記錄。建立新資料表時,會為整個資料表指定其屬性綱要,因此每個資料表列都具有相同的結構。同樣地,這是關聯式資料庫的典型情況,NDB
在這方面也沒有不同。
主鍵。 每筆記錄都有 1 到 32 個屬於資料表主鍵的屬性。
交易。 交易會先提交到主記憶體,然後在發出全域檢查點 (GCP) 後提交到磁碟。由於所有資料 (在大多數 NDB Cluster 設定中) 都會同步複製並儲存在多個資料節點上,因此系統可以在不遺失資料的情況下處理處理器故障。但是,在發生系統範圍故障的情況下,自最近一次 GCP 以來發生的所有交易 (無論是否提交) 都會遺失。
並行控制。 NDB
使用基於鎖定的悲觀並行控制。如果要求的鎖定 (隱含且取決於資料庫操作) 在指定時間內無法獲得,則會產生逾時錯誤。
平行應用程式和基於執行緒的應用程式所要求的並行交易,有時會在嘗試同時存取相同資訊時發生死結。因此,應用程式需要以一種可以順利處理因這類死結而發生的逾時錯誤的方式編寫。這通常表示遇到逾時的交易應回滾並重新啟動。
提示與效能。 將交易協調器放置在接近交易中使用的實際資料的位置,在許多情況下可以顯著提高效能。對於使用 TCP/IP 的系統而言尤其如此。例如,使用單一 500 MHz 處理器的 Solaris 系統,其 TCP/IP 通訊的成本模型可以用公式表示
[30 microseconds] + ([100 nanoseconds] * [number of bytes])
這表示如果我們可以確保使用「熱門」連結,我們就可以增加緩衝,從而大幅降低通訊成本。
一個簡單的例子是應用程式使用許多簡單的更新,其中交易需要更新一筆記錄。此記錄具有 32 位元主鍵,也用作分割索引鍵。然後,keyData
用作主鍵整數的位址,而 keyLen
為 4
。