自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

列數(shù)據(jù)庫是什么東東?何時應該使用它?

譯文
數(shù)據(jù)庫
如果您在處理主要用于分析的大量數(shù)據(jù),那么列數(shù)據(jù)庫可能是個不錯的選擇。

?譯者 | 布加迪

審校 | 孫淑娟

說到為具體應用選擇數(shù)據(jù)庫,有很多不同的選項。經(jīng)常討論的話題似乎是選擇SQL數(shù)據(jù)庫還是選擇NoSQL數(shù)據(jù)庫,即數(shù)據(jù)應該存儲在關系數(shù)據(jù)庫中,還是存儲在鍵值、文檔或圖形數(shù)據(jù)庫之類的NoSQL數(shù)據(jù)庫中。

另一種選擇是索性使用列數(shù)據(jù)庫。本文介紹為什么有必要做出這種選擇,以及列數(shù)據(jù)庫的一些優(yōu)缺點。

列數(shù)據(jù)庫的定義

顧名思義,列(或列式)數(shù)據(jù)庫將按列組織而不是按行組織的數(shù)據(jù)存儲在磁盤上。以物聯(lián)網(wǎng)傳感器為例,基于行的數(shù)據(jù)庫會如圖所示將數(shù)據(jù)存儲在磁盤上:

而列數(shù)據(jù)庫將組織相同的數(shù)據(jù),以便每個列值按順序存儲在磁盤上:

列數(shù)據(jù)庫的主要優(yōu)點是,由于壓縮比提高,它可以大大縮減存儲數(shù)據(jù)所需的磁盤空間。此外,列數(shù)據(jù)庫在處理分析型查詢時比基于行的傳統(tǒng)數(shù)據(jù)庫要快得多。

為什么列數(shù)據(jù)庫適合分析型工作負載?

那么,改變數(shù)據(jù)的存儲格式究竟如何提升性能的呢?與傳統(tǒng)數(shù)據(jù)庫相比,有幾個因素導致列數(shù)據(jù)庫能夠為聯(lián)機分析處理(LAP)工作負載提供高得多的性能。

第一個原因是壓縮比提高。這是由于列數(shù)據(jù)庫能夠為每種類型的數(shù)據(jù)使用最佳壓縮算法,因為每列都是相同類型的數(shù)據(jù),而不是一行混合類型的數(shù)據(jù)。這不僅降低了磁盤上的存儲成本,還提高了性能,因為需要的磁盤尋道更少,內(nèi)存可以容納更多的數(shù)據(jù)。

列數(shù)據(jù)庫提升性能的另一種方法是實際上在底層存儲同一列的多個不同版本,這些版本按不同的順序進行排序,以便為某些查詢加快過濾和選擇的速度。

列數(shù)據(jù)庫還可以通過許多其他方法來提升性能。下面是幾個例子:

  • 查詢數(shù)據(jù)時進行自適應索引
  • 矢量化處理
  • 列的連接經(jīng)過優(yōu)化,變得更有效
  • 列的后期物化

這篇??論文??分析了列數(shù)據(jù)庫的性能,作為論文一部分進行的測試的示意圖顯示了上述優(yōu)化的結(jié)果?;赥PC-H數(shù)據(jù)倉庫基準數(shù)據(jù)集,列數(shù)據(jù)庫的運行速度比傳統(tǒng)的行結(jié)構(gòu)數(shù)據(jù)庫快10倍左右。

該圖顯示了哪些優(yōu)化對列數(shù)據(jù)庫的性能影響最大,在此處,后期物化帶來的性能提升最大。

列數(shù)據(jù)庫性能方面的取舍

與計算機科學界的幾乎所有事情一樣,列數(shù)據(jù)庫性能方面也進行了一番取舍。它們針對分析型工作負載進行了優(yōu)化,本身不適合傳統(tǒng)的聯(lián)機事務處理(OLTP)工作負載,而關系數(shù)據(jù)庫為這種工作負載而設計。

最大的性能犧牲將出現(xiàn)在試圖更新特定數(shù)據(jù)點或?qū)懭雴蝹€數(shù)據(jù)點的情況下。就列數(shù)據(jù)庫而言,您希望盡可能批量插入數(shù)據(jù)。

列數(shù)據(jù)庫還會對讀查詢有影響,您獲取一行中的所有數(shù)據(jù),就像使用關系數(shù)據(jù)庫一樣。由于必須重新構(gòu)造每一列才能創(chuàng)建整行,因此性能會受到影響。

列數(shù)據(jù)庫的用例

列數(shù)據(jù)庫非常適合您想要分析大量數(shù)據(jù)的任何情況。不妨看一下幾個常見的用例。

商業(yè)智能

列數(shù)據(jù)庫非常適合分析銷售數(shù)據(jù),因為它們讓您可以以各種方式劃分信息。這可以幫助您確定可能無法看到的趨勢和模式。比如說,可以使用列數(shù)據(jù)庫按位置、品牌或產(chǎn)品類別來比較一段時間不同產(chǎn)品的銷售數(shù)據(jù)。

應用程序性能監(jiān)控

應用程序性能監(jiān)控是使用列數(shù)據(jù)庫幫助提高軟件可靠性和性能的另一種常見情況。通過跟蹤和分析有關應用程序運行狀況的數(shù)據(jù),您可以在問題導致應用程序崩潰或變慢之前發(fā)現(xiàn)問題。這有助于避免停運時間,并確保用戶獲得最佳體驗。如果使用列數(shù)據(jù)庫,您可以存儲粒度更細的數(shù)據(jù)以獲得更深入的洞察力,同時因出色的數(shù)據(jù)壓縮而降低成本。

物聯(lián)網(wǎng)

組織在部署越來越多的聯(lián)網(wǎng)設備,其中許多設備收集用于分析工作負載的數(shù)據(jù)。列數(shù)據(jù)庫可用于存儲這些數(shù)據(jù),以實現(xiàn)實時警報,還可用于生成預測,在許多不同行業(yè)提高效率。

專門化列數(shù)據(jù)庫的示例

到目前為止,我們已經(jīng)大體了解了列數(shù)據(jù)庫及其優(yōu)點。雖然所有列數(shù)據(jù)庫有相同的特征,可以有效地用作通用數(shù)據(jù)倉庫或數(shù)據(jù)湖,不過下面介紹如何針對更具體的性能特征對它們進行調(diào)優(yōu)和優(yōu)化。

InfluxDB IOx

InfluxDB IOx是一款面向InfluxDB的開源列存儲引擎,為處理時間序列數(shù)據(jù)進行了優(yōu)化。時間序列數(shù)據(jù)在性能方面帶來了獨特的挑戰(zhàn):

  • 分析類型的查詢,只需要幾列數(shù)據(jù),比如從傳感器獲得過去一周的平均溫度。
  • 關系類型的查詢,用戶需要過去5分鐘內(nèi)來自許多不同傳感器的所有可用信息。

時間序列數(shù)據(jù)還往往大批量到達,這需要快速獲取能力,以便能夠快速索引和查詢數(shù)據(jù),用于實時監(jiān)控和警報。此外,許多用戶希望能夠長期存儲這些數(shù)據(jù),用于歷史分析和預測,又不必擔心成本過高。

InfluxDB讓用戶可以集兩者之所長,其辦法是管理數(shù)據(jù)的生命周期,并在熱存儲和冷存儲之間移動數(shù)據(jù),歷史數(shù)據(jù)方面獲得快速性能,同時通過對未頻繁查詢的數(shù)據(jù)使用更便宜的對象存儲來降低存儲成本。

實現(xiàn)這一目標的關鍵手段就是構(gòu)建和貢獻Apache Arrow、DataFusion和Parquet之類的項目。Arrow允許數(shù)據(jù)在內(nèi)存中以列格式壓縮,并在數(shù)據(jù)庫的不同部分之間移動。Parquet用于高效的持久性存儲,DataFusion提供高性能查詢和SQL支持。其他許多主要項目和廠商也在夯實Parquet和Arrow項目,這些項目還能夠與更廣泛的大數(shù)據(jù)生態(tài)系統(tǒng)實現(xiàn)集成和兼容。

ApacheDruid

Apache Druid是一款擁有底層列數(shù)據(jù)結(jié)構(gòu)的實時數(shù)據(jù)庫。Druid適用于典型的數(shù)據(jù)倉庫類型工作負載,比如您期望從列數(shù)據(jù)庫獲得的工作負載,但它也優(yōu)先考慮低延遲響應時間,常常用于交互式用戶界面之類的對象。

DuckDB

DuckDB是為OLAP工作負載設計的進程內(nèi)數(shù)據(jù)庫,實際上旨在成為面向分析的SQLite。DuckDB使用列式矢量化處理,以出色的性能運行SQL查詢,可以輕松嵌入到應用程序中。DuckDB的主要賣點是,在大多數(shù)OLAP數(shù)據(jù)庫要么云托管要么需要復雜安裝過程的環(huán)境下,它很容易在本地設置和運行。

選擇適合具體任務的工具

說到底,技術決策歸結(jié)為什么技術對您的用例有意義。說到長期構(gòu)建應用程序,選擇數(shù)據(jù)庫可能是最重要的選擇之一,因此有必要了解所有可用的選項,選擇最適合的那一種。

如果您在處理主要用于分析的大量數(shù)據(jù),那么列數(shù)據(jù)庫可能是個不錯的選擇。

原文標題:??What Is a Column Database and When Should You Use One???,作者:Charles Mahler?

責任編輯:華軒 來源: 51CTO
點贊
收藏

51CTO技術棧公眾號