資料庫類型

了解不同類型的資料庫及其運作方式。

在建構您的資料堆疊時,有很多資料庫和資料來源選項需要考慮。無論您是資料領域的新手,還是只是需要複習一下,以下是 Metabase 支援的主要參與者的簡要介紹。

全方位主力:傳統關聯式資料庫管理系統

包括:Microsoft SQL Server、MySQL、Oracle Database、PostgreSQL

這四種關聯式資料庫管理系統 (RDBMS) 都已存在數十年,並且能夠很好地處理全方位的資料庫需求——插入記錄、讀取、更新、刪除記錄。在這四種系統中,MySQL 和 PostgreSQL 是開放原始碼。

如果您的組織時間或資源不足,或者缺乏任何資料專家來建構 ETL,那麼像 MySQL、Postgres、SQL Server 或 Oracle Database 這樣的關聯式資料庫系統是一個很好的選擇。許多使用 Metabase 的組織只需連接其關聯式資料庫即可開始立即獲得見解。這些資料庫非常適合用作您軟體的應用程式資料庫。Metabase 軟體可以使用 Postgres 或 MySQL 作為其生產資料庫

傳統關聯式資料庫可以輕鬆處理數十萬筆記錄的分析查詢,但如果您的組織需要顯著擴大規模——考慮數百萬筆或更多記錄——您的 RDBMS 可能會達到上限。這很大程度上取決於您的資料倉儲的配置方式,以及您是否使用 ETL 流程來彙總資料,以便您的資料庫必須讀取的資料列更少。

這四個系統都是交易資料庫,並非專門為分析查詢而建構。雖然您可以使用這四個引擎中的任何一個來完成分析查詢,但可能需要大量的額外硬體(額外的 RAM、CPU 和更快的磁碟)才能跟上資料量的增長,而且這會很快變得非常昂貴。隨著您擴大規模且您的分析查詢變得更加複雜,無論您投入多少硬體,它們都可能運行緩慢。在這種情況下,可能是時候考慮另一種專門為大數據和分析查詢而建構的技術了。

查詢大數據:資料倉儲

包括:BigQuery、Redshift、Snowflake、Vertica

資料倉儲非常適合對大量資料執行分析查詢。像 BigQuery、AWS Redshift、SnowflakeVertica 這樣的產品能夠處理大數據,因為它們由大量並行引擎驅動,使得跨大型資料來源的分析查詢更容易管理。這些資料倉儲的工作方式略有不同,但是當您想要執行查詢時,它們會利用並行化來分割您的資料並彙總結果,然後再傳回您的查詢。這些資料倉儲還依賴於柱狀儲存(按欄而不是按列儲存資料)來加速分析操作,因為這使您的資料庫不必掃描列中與當前查詢無關的資訊。

您需要根據執行查詢時使用的資源付費,但是將資料插入這些倉儲也很昂貴。如果您的組織需要即時資料(或接近即時資料),像這樣的資料倉儲並不是最有效率的,因為它們每次新增資料時都需要重新索引,而這需要時間。

雖然 BigQuery、Redshift 和 Snowflake 完全基於雲端,但 Vertica(它是開放原始碼)可以在雲端或本地端運行。

即時分析資料庫

包括:Druid

像 Druid 這樣的資料庫(一個開放原始碼產品)吸引了需要盡快查詢資料的組織。借助即時資料庫,您可以在資料到達您的資料引擎後立即執行分析查詢,而無需額外處理或長時間等待。

如果您的商業模式依賴於利用即時資料的能力(例如,金融服務或資訊安全),那麼像 Druid 這樣的資料庫值得探索。但是管理即時資料的管道可能會變得複雜——從產生資料的任何事物到透過管道中不同工具處理資料之間,可能會出現很多問題。鑑於這些系統的複雜性,尤其是在您處理大量資料時,有人在場監督您的即時資料庫將會大有幫助。

用於臨時分析:基於檔案的資料庫

包括:SQLite、H2

SQLite 和 H2 類似於傳統的 RDBMS(如 MySQL 或 Postgres)——這兩種類型都是關聯式資料庫——但是基於檔案的資料庫在資料庫端不包含伺服器。這些類型不是任何用於最佳化資料庫的程式碼,而是一個存在於您電腦上的檔案。如果您正在使用 Metabase,您會將您的 SQLite 資料庫儲存在與您的 Metabase 伺服器相同的位置,以便 Metabase 可以利用它進行分析。

基於檔案的資料庫非常適合嵌入和臨時分析——例如不需要大量即時資料的一次性查詢。雖然 SQLite 是世界上部署最廣泛的資料庫(很大程度上是因為它的簡單性),但基於檔案的資料庫在複雜分析中的使用是有限的,並且基於檔案的資料庫可能不是您想要保留即時資料的地方。

查詢引擎

包括:SparkSQL、Presto

查詢引擎本身不是資料庫,而是位於您的資料和最終結果之間。SparkSQL 和 Presto 是兩個開放原始碼引擎,可以從各種來源(包括即時資料)擷取和查詢資料。

就像上面討論的雲端資料倉儲一樣,像 Spark 和 Presto 這樣的引擎將大致按照以下步驟對大量資料執行分析查詢

  1. 首先將工作劃分為較小的任務。
  2. 並行化查詢——也就是說,在這些較小的任務中同時運行它。
  3. 彙總這些結果。
  4. 最後,交付原始查詢的結果。

基於文件的資料庫

包括:MongoDB

雖然以上所有選項都包含一些關聯元素,但像 MongoDB 這樣的非結構化 NoSQL 資料庫的工作方式卻不同。MongoDB 不是將資料儲存在表格中,而是將資料儲存在「文件集合」中,並允許您查詢這些文件(通常是 JSON 檔案)。這表示您儲存在集合中的文件可以是相同的或完全不相關的,但是沒有像在關聯式資料庫中聯結表格那樣的原生方法來聯結它們。

與關聯式資料庫不同,MongoDB 很容易分片。這表示您可以將集合的不同部分儲存在完全不同的節點(資料庫的實體執行個體,如單獨的伺服器或電腦)中,這有助於擴展您的資料庫。

下一步:資料倉儲 vs 資料湖 vs 資料市集

您可能會經常聽到這些術語,因此這裡提供一些關於資料倉儲、資料湖和資料市集之間差異的背景資訊。

下一篇文章