偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

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

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

?譯者 | 布加迪

審校 | 孫淑娟

說到為具體應(yīng)用選擇數(shù)據(jù)庫,有很多不同的選項。經(jīng)常討論的話題似乎是選擇SQL數(shù)據(jù)庫還是選擇NoSQL數(shù)據(jù)庫,即數(shù)據(jù)應(yīng)該存儲在關(guān)系數(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ù)庫適合分析型工作負(fù)載?

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

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

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

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

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

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

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

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

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

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

列數(shù)據(jù)庫還會對讀查詢有影響,您獲取一行中的所有數(shù)據(jù),就像使用關(guān)系數(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ù)。

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

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

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

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

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

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

InfluxDB IOx

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

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

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

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

實現(xiàn)這一目標(biāo)的關(guān)鍵手段就是構(gòu)建和貢獻(xiàn)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ù)倉庫類型工作負(fù)載,比如您期望從列數(shù)據(jù)庫獲得的工作負(fù)載,但它也優(yōu)先考慮低延遲響應(yīng)時間,常常用于交互式用戶界面之類的對象。

DuckDB

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

選擇適合具體任務(wù)的工具

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

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

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

責(zé)任編輯:華軒 來源: 51CTO
相關(guān)推薦

2021-02-18 09:23:47

數(shù)據(jù)庫分區(qū)數(shù)據(jù)庫倉庫

2020-06-09 09:19:14

數(shù)據(jù)庫

2023-11-10 12:55:00

消息代理事件代理

2021-11-12 05:45:12

云數(shù)據(jù)庫云計算

2022-07-06 09:29:40

JMH性能測試

2024-10-25 09:19:18

2021-12-27 07:59:11

Web3區(qū)塊鏈協(xié)議

2019-08-12 16:30:24

Windows 10Windows安全模式

2020-11-20 15:04:27

數(shù)據(jù)庫云數(shù)據(jù)庫安全

2020-04-14 12:53:01

Nuxt.jsVue.js前端

2018-08-08 17:29:23

數(shù)據(jù)庫索引磁盤存取

2022-06-15 07:32:24

數(shù)據(jù)庫分庫分表

2018-03-02 09:00:00

數(shù)據(jù)庫NoSQLSQL

2022-04-26 16:56:20

行為數(shù)據(jù)數(shù)據(jù)

2018-07-30 08:20:39

編程語言Python集合

2014-03-17 10:14:53

云桌面DaaS

2019-01-16 14:00:54

數(shù)據(jù)庫分庫分表

2023-12-13 10:11:14

數(shù)據(jù)庫ACID數(shù)據(jù)

2018-08-26 15:39:03

數(shù)據(jù)庫MySQL索引

2010-06-02 19:27:10

數(shù)據(jù)庫數(shù)據(jù)安全
點贊
收藏

51CTO技術(shù)棧公眾號