<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          一個比 MySQL 快 800 多倍的數(shù)據(jù)庫...

          共 5298字,需瀏覽 11分鐘

           ·

          2021-09-22 22:10

          大家好呀!這里是愛學(xué)習(xí)的 Guide!今天給大家科普一個速度快到飛起的數(shù)據(jù)庫——ClickHouse。

          你可能沒有用過 ClickHouse ,但是一定聽過它的名字。

          為了拓展一下自己的知識面,前段時間,我找到了 《ClickHouse 原理解析和應(yīng)用實踐》這本書來看。寫的真心不錯!

          這篇文章我簡單從一個 ClickHouse 初學(xué)者的角度,給小伙伴們科普一下 OLAP、OLTP 以及 ClickHouse 的前世今生和應(yīng)用場景。

          個人能力有限。如果文章有任何需要補充/完善/修改的地方,歡迎在評論區(qū)指出,共同進步!

          OLAP 介紹

          為了將企業(yè)的數(shù)據(jù)有效整合,快速制作出報表以供數(shù)據(jù)分析/決策使用,誕生了一個叫做 OLAP(Online Analytical Processing,聯(lián)機分析處理)系統(tǒng)的概念,也叫做現(xiàn)代 BI(Business Intelligence,商業(yè)智能)系統(tǒng)。

          與 OLAP 相對應(yīng)的還有一個叫做 OLTP(Online Transaction Processing ,聯(lián)機事務(wù)處理)的概念。這個我們平時日常接觸的就比較多了,像企業(yè)的 ERP,CRM,OA 等系統(tǒng)都屬于 OLTP 系統(tǒng)。

          OLTP & OLAP

          簡單總結(jié)一下:

          • OLTP :可以保證操作的事務(wù)性,通常需要用到傳統(tǒng)的關(guān)系型數(shù)據(jù)庫比如 MySQL,主要操作是增刪改查(比如添加用戶、用戶之間轉(zhuǎn)賬)。OLTP 通常處理的數(shù)據(jù)量不會很大,因為數(shù)據(jù)量大了之后 OLTP 數(shù)據(jù)庫的響應(yīng)一般會非常慢。
          • OLAP :對數(shù)據(jù)做分析然后得出一些結(jié)果比如數(shù)據(jù)報表,主要操作是查詢(比如生成網(wǎng)站的流量分析報告)。OLAP 處理的數(shù)據(jù)量往往很大,并且 OLAP 處理的數(shù)據(jù)對象是數(shù)據(jù)倉庫(data warehouse)中的數(shù)據(jù)。

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

          OLAP 系統(tǒng)一般以數(shù)據(jù)倉庫作為基礎(chǔ)。數(shù)據(jù)倉庫是為了將分散的數(shù)據(jù)匯聚到一處,將它們統(tǒng)一存儲起來。

          數(shù)據(jù)倉庫的構(gòu)建通常還會涉及到 ETL 的過程。ETL 即數(shù)據(jù)抽?。‥xtract)、轉(zhuǎn)換(Transform)、裝載(Load)。

          下面這張圖片來自:What is a Data Warehouse? | IBM[1]

          大部分用于 OLTP 的數(shù)據(jù)庫都可以執(zhí)行 OLAP 相關(guān)的操作,只不過,效率通常都比較低,畢竟, 這不是它們所擅長的地方。

          OLAP 分類

          主流的 OLAP 可以分為 3 類 ROLAP、MOLAP、HOLAP。

          ROLAP ( Relational OLAP,關(guān)系型 OLAP )

          對數(shù)據(jù)不進行預(yù)處理,實時聚合計算,靈活性更好!適用于 對查詢模式不固定、查詢靈活性要求高的場景。常見的 ROLAP 有 Presto,Impala,Clickhouse 等等。

          MOLAP ( Multi-dimensional OLAP ,多維 OLAP)

          會對數(shù)據(jù)預(yù)處理,這提高了查詢性能,同時也降低了靈活性。適用于查詢場景相對固定并且對查詢性能要求非常高的場景。常見的 MOLAP 有 Druid,Kylin,Doris 等等。

          HOLAP ( Hybrid OLAP ,混合型 OLAP)

          混合類型 OLAP。通常情況下,查詢聚合性數(shù)據(jù)的時候,使用 MOLAP 技術(shù);當(dāng)查詢明細數(shù)據(jù)時,使用 ROLAP 技術(shù)。在給定使用場景的前提下,以達到查詢性能的最優(yōu)化。

          相關(guān)閱讀推薦:《什么是 OLAP?主流八大開源 OLAP 技術(shù)架構(gòu)對比》[2]

          ClickHouse

          簡介

          ClickHouse 是 Yandex(俄羅斯的一家做搜索引擎的公司)公司的一個產(chǎn)品,誕生于自家的在線流量分析產(chǎn)品—Yandex.Metrica。

          根據(jù) ClickHouse 官方文檔[3]介紹:ClickHouse 是一個用于聯(lián)機分析(OLAP)的 MPP 架構(gòu)的列式數(shù)據(jù)庫管理系統(tǒng)(DBMS)。

          目前的話,國內(nèi)有很多公司都在使用 ClickHouse ,比如騰訊、字節(jié)、金數(shù)據(jù)、B 站。

          下面是騰訊音樂對 ClickHouse 實踐:

          Github 地址:https://github.com/ClickHouse/ClickHouse 。

          騰訊云云數(shù)據(jù)庫倉庫ClickHouse

          前世今生

          其實,ClickHouse 的誕生也是一步一步改進現(xiàn)有系統(tǒng)之后得到的產(chǎn)物!

          Yandex.Metrica 的第一版架構(gòu)其實是基于 MySQL(ROLAP) 來做的。

          后來,這一版架構(gòu)出現(xiàn)了瓶頸,數(shù)據(jù)量過多(5800 億)導(dǎo)致分析報告的耗費時間過長。即使對這一版架構(gòu)進行了大量優(yōu)化之后,耗費時間也僅僅是提高到了 26 秒。

          于是,Yandex.Metrica 的研發(fā)團隊開始另辟蹊徑了!

          他們自研了一個叫做 Metrage(MOLAP) 的新系統(tǒng)。Metrage 的架構(gòu)設(shè)計和 MySQl 差別很大,就比如它使用的是 LSM 樹作為索引結(jié)構(gòu)而不是 B+ 樹。

          Metrage 雖然解決了性能問題,但是,產(chǎn)品方面又有了新的需求。

          Metrage 只支持聚合數(shù)據(jù)查詢,因此只有固定的報表分析功能,非常不靈活。我們希望可以有一個系統(tǒng)支持處理自定義報告這類。

          于是,Yandex.Metrica 又自主研發(fā)出了 OLAPServer(HOLAP) 系統(tǒng)。并且,OLAPServer 使用 SQL 作為查詢語言。

          OLAPServer 系統(tǒng)專為非聚合數(shù)據(jù)使用,實時聚合性能非常強!

          不過,OLAPServer 也有缺陷比如缺少對數(shù)據(jù)類型的支持(只支持一種數(shù)據(jù)類型)。并且,功能也比較簡陋,僅僅支持一些簡單的功能,并沒有一個 DBMS 應(yīng)該有的基本管理功能比如 DDL 查詢。

          于是,Yandex.Metrica 繼續(xù)在 OLAPServer 的基礎(chǔ)上進一步完善,最終打造出了 ClickHouse(ROLAP)。

          為什么這么快?

          ClickHouse 官方給出了一份非常詳細的 ClickHouse 性能測試圖,并提供了和其他常見數(shù)據(jù)庫的對比。

          性能報告地址:https://clickhouse.tech/benchmark/dbms/ 。

          通過這份報告,可以非常直觀地感受到 ClickHouse 到底是有多快!

          這么說吧,ClickHouse 在相同的服務(wù)器配置與數(shù)據(jù)量(1000 萬)下,平均響應(yīng)速度是 MySQL 的 400 多倍,當(dāng)數(shù)據(jù)量達到 1 億的話,平均響應(yīng)速度是 MySQL 的 800 多倍。

          不談具體的技術(shù)與架構(gòu),ClickHouse 之所以能夠這么快主要得益于下面幾點(結(jié)合《ClickHouse 原理解析與應(yīng)用實踐》所做的總結(jié)):

          • 特殊場景特殊對待 :同一個場景的不同狀況,選擇使用不同的實現(xiàn)方式,盡可能將性能最大化。比如去重計數(shù) uniqCombined() 函數(shù),會根據(jù)數(shù)據(jù)量的不同選擇不同的算法:當(dāng)數(shù)據(jù)量較小的時候,會選擇 Array 保存;當(dāng)數(shù)據(jù)量中等的時候,會選擇HashSet;而當(dāng)數(shù)據(jù)量很大的時候,則使用 HyperLogLog 算法。
          • 勇于嘗鮮,不行就換 : ClickHouse 會優(yōu)先使用最合適、最快的算法。如果市面上出現(xiàn)了可能會更好用的新算法的話,ClickHouse 通常會立即將其納入并進行驗證。效果不錯的話,就繼續(xù)用著。效果不行的話,就直接踢掉。
          • 持續(xù)測試,持續(xù)改進 :優(yōu)秀的軟件不是一朝一夕形成的,需要不斷的測試改進。

          適用場景

          ClickHouse 雖然性能很強,查詢速度和 MySQL 這類關(guān)系型數(shù)據(jù)庫完全不是一個量級。

          但是,ClickHouse 并不可以取代 MySQL 這類關(guān)系型數(shù)據(jù)庫,它們是互補的關(guān)系。

          ClickHouse 作為一款 OLAP 數(shù)據(jù)庫,其應(yīng)用場景主要就是數(shù)據(jù)分析比如廣告流量分析,不適用于 OLTP 事務(wù)性操作的場景,因為,它不支持事務(wù)并且對按行刪除數(shù)據(jù)不夠友好!

          文章推薦

          推薦一些不錯的好文和書籍,方便大家繼續(xù)深入學(xué)習(xí)。

          中文

          • OLAP 數(shù)倉入門問答-基礎(chǔ)篇[4] (寫的非常好 ??)
          • 秒級去重:ClickHouse 在騰訊海量游戲營銷活動分析中的應(yīng)用[5]
          • 數(shù)據(jù)分析引擎黑馬 ClickHouse 最新技術(shù)的實踐與應(yīng)用[6]
          • ClickHouse 在有贊的實踐之路[7]
          • 伴魚事件分析平臺:設(shè)計篇[8] :伴魚的事件分析平臺用到了 ClickHouse 來存儲數(shù)據(jù)。
          • ClickHouse 官方文檔(中文版)[9]
          • 漫談 ClickHouse 在實時分析系統(tǒng)中的定位與作用[10] :《 ClickHouse 原理解析與應(yīng)用實踐》作者朱凱[11]大佬的一次視頻分享。

          英文

          • How ClickHouse saved our data[12]
          • Introducing ClickHouse -- The Fastest Data Warehouse You've Never Heard Of (Robert Hodges, Altinity)[13] :油管上的一個視頻。

          參考資料

          [1]

          What is a Data Warehouse? | IBM: https://www.ibm.com/cloud/learn/data-warehouse

          [2]

          《什么是 OLAP?主流八大開源 OLAP 技術(shù)架構(gòu)對比》: https://segmentfault.com/a/1190000040428093

          [3]

          ClickHouse 官方文檔: https://clickhouse.tech/docs/zh/

          [4]

          OLAP 數(shù)倉入門問答-基礎(chǔ)篇: https://zhuanlan.zhihu.com/p/144926830

          [5]

          秒級去重:ClickHouse 在騰訊海量游戲營銷活動分析中的應(yīng)用: https://segmentfault.com/a/1190000037699772

          [6]

          數(shù)據(jù)分析引擎黑馬 ClickHouse 最新技術(shù)的實踐與應(yīng)用: https://segmentfault.com/a/1190000040054934

          [7]

          ClickHouse 在有贊的實踐之路: https://tech.youzan.com/clickhouse-zai-you-zan-de-shi-jian-zhi-lu/

          [8]

          伴魚事件分析平臺:設(shè)計篇: https://tech.ipalfish.com/blog/2021/06/21/event-analytics-design/

          [9]

          ClickHouse 官方文檔(中文版): https://clickhouse.tech/docs/zh/

          [10]

          漫談 ClickHouse 在實時分析系統(tǒng)中的定位與作用: https://www.bilibili.com/video/BV11y4y1C7Us

          [11]

          朱凱: https://github.com/nauu

          [12]

          How ClickHouse saved our data: https://mux.com/blog/from-russia-with-love-how-clickhouse-saved-our-data/

          [13]

          Introducing ClickHouse -- The Fastest Data Warehouse You've Never Heard Of (Robert Hodges, Altinity): https://www.youtube.com/watch?v=fGG9dApIhDU

          < END >

          也許你還想看
            | 我在 B 站淘了 2 個 Java 實戰(zhàn)項目! 小破站,YYDS!
            | 我常用的20+個學(xué)習(xí)編程的網(wǎng)站!蕪湖起飛!
            | 1w+字的 Dubbo 面試題/知識點總結(jié)?。?021 最新版)
            | 7年前,24歲,出版了一本 Redis 神書
            | 京東二面:為什么需要分布式ID?你項目中是怎么做的?
            | 和 Github 在一起 5 年多了......
            | 一鍵生成數(shù)據(jù)庫文檔,堪稱數(shù)據(jù)庫界的Swagger
            | 來看看這個超好用的項目腳手架吧!5分鐘搭建一個Spring Boot 前后端分離系統(tǒng)!
            | Spring 官宣,干掉 Spring 5.3.x!

          我是 Guide哥,一個工作2年有余,接觸編程已經(jīng)6年有余的程序員。大三開源 JavaGuide,目前已經(jīng) 100k+ Star。未來幾年,希望持續(xù)完善 JavaGuide,爭取能夠幫助更多學(xué)習(xí) Java 的小伙伴!共勉!凎!點擊即可了解我的個人經(jīng)歷

          歡迎點贊分享。咱們下期再會!

          瀏覽 80
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  日本免费aa | 天天舔天天爱天天干 | 国产日韩二区 | 精品亲子伦一区二区三区小说国产 | 亚洲一区韩国 |