在前一章節中,我們介紹了簡易的建立資料表與資料庫,以及寫入資料的兩種方式。在本章節中,我們會介紹ClickHouse資料庫與資料表引擎,並以清單的方式呈現與區分,後續各個資料庫與資料表引擎的細節會在後面的章節提到。
資料庫引擎允許我們可以使用哪一些資料表。ClickHouse資料庫預設會使用Atomic之資料庫引擎,其提供了可以設定資料庫引擎與SQL語句可以使用。
下面是ClickHouse資料庫支援資料庫引擎的完整清單,如下列表所示:
資料表引擎,或是可以稱為資料表的類型,是需要決定下列幾件事情:
對於高負載的任務,且最廣泛與功能性的資料表引擎所使用的,這些資料表引擎共同的特性是會以快速的資料寫入和後續的背景資料處理。MergeTree系列的引擎支援了資料複製(replication),這個特性可以使用複製(replicated)版本的資料表引擎、分區、次要跳數索引(secondary data skipping indexes)以及其他資料表引擎所不支援的功能。
這系列的引擎如下:
此資料表引擎屬於輕量型的,且有著最小的功能,當我們需要快速的寫入多個小的資料表時,這些資料表引擎是最有效率的,資料筆數約為一百萬筆,並且可以在稍候立即的讀取這些資料。
這些引擎的家族如下:
這類引擎通常是用來連接其他的資料儲存或是處理的系統,相關的引擎家族如下列表:
特殊的資料表引擎家族如下列表:
虛擬欄位是不可或缺的資料表引擎屬性,這屬性定義在資料表引擎的原始碼中。
我們不應該在使用CREATE TABLE
建立資料表的時候,指定虛擬的欄位且我們使用SHOW CREATE TABLE
或DESCRIBE TABLE
等SQL語句查詢資料表綱要的時候,在查詢完的結果不會看到上述這些虛擬的欄位,虛擬欄位是唯讀的,所以我們無法寫入資料到虛擬的欄位中。
為了要從虛擬欄位中查詢資料,我們必須指定它們的名稱來進行查詢,即使用SELECT COLUMN_NAME
方式,若使用SELECT *
方式的查詢結果則無法包含虛擬欄位所對應的結果。
如果我們要建立一個資料表且某個欄位名稱與虛擬欄位名稱相同時,虛擬欄位名稱會變成無法存取,同時ClickHouse官方也不建議這麼做,為了解決上述這類的衝突,虛擬欄位名稱最前面通常是包含以底線作為分隔的前墜字串。
在本章節中,我們以清單方式整理出ClickHouse資料庫所支援的資料庫與資料表引擎;除了上述兩種引擎列表之外,還支援了整合的資料引擎介面與特殊的資料表引擎。在下一章節中,我們將要討論ClickHouse資料庫中的SQL語句與相關的資料。