1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        一個(gè)比傳統(tǒng)數(shù)據(jù)庫快 100-1000 倍的數(shù)據(jù)庫

        共 2002字,需瀏覽 5分鐘

         ·

        2021-08-19 12:20

        點(diǎn)擊關(guān)注公眾號(hào),Java干貨及時(shí)送達(dá)

        一、ClickHouse 是什么?

        ClickHouse:是一個(gè)用于聯(lián)機(jī)分析(OLAP)的列式數(shù)據(jù)庫管理系統(tǒng)(DBMS)

        我們首先理清一些基礎(chǔ)概念


        • OLTP:是傳統(tǒng)的關(guān)系型數(shù)據(jù)庫,主要操作增刪改查,強(qiáng)調(diào)事務(wù)一致性,比如銀行系統(tǒng)、電商系統(tǒng)

        • OLAP:是倉庫型數(shù)據(jù)庫,主要是讀取數(shù)據(jù),做復(fù)雜數(shù)據(jù)分析,側(cè)重技術(shù)決策支持,提供直觀簡(jiǎn)單的結(jié)果


        接著我們用圖示,來理解一下列式數(shù)據(jù)庫和行式數(shù)據(jù)庫區(qū)別


        在傳統(tǒng)的行式數(shù)據(jù)庫系統(tǒng)中(MySQL、Postgres和MS SQL Server),數(shù)據(jù)按如下順序存儲(chǔ):



        在列式數(shù)據(jù)庫系統(tǒng)中(ClickHouse),數(shù)據(jù)按如下的順序存儲(chǔ):



        兩者在存儲(chǔ)方式上對(duì)比:



        以上是ClickHouse基本介紹,更多可以查閱官方手冊(cè)


        二、業(yè)務(wù)問題


        業(yè)務(wù)端現(xiàn)有存儲(chǔ)在Mysql中,5000萬數(shù)據(jù)量的大表及兩個(gè)輔表,單次聯(lián)表查詢開銷在3min+,執(zhí)行效率極低。經(jīng)過索引優(yōu)化、水平分表、邏輯優(yōu)化,成效較低,因此決定借助ClickHouse來解決此問題


        最終通過優(yōu)化,查詢時(shí)間降低至1s內(nèi),查詢效率提升200倍!


        希望通過本文,可以幫助大家快速掌握這一利器,并能在實(shí)踐中少走彎路。


        三、ClickHouse實(shí)踐


        1.Mac下的Clickhouse安裝


        我是通過docker安裝,查看教程。也可以下載CK編譯安裝,相對(duì)麻煩一些。


        2.數(shù)據(jù)遷移:從Mysql到ClickHouse


        ClickHouse支持Mysql大多數(shù)語法,遷移成本低,目前有五種遷移方案:


        • create table engin mysql,映射方案數(shù)據(jù)還是在Mysql

        • insert into select from,先建表,在導(dǎo)入

        • create table as select from,建表同時(shí)導(dǎo)入

        • csv離線導(dǎo)入

        • streamsets


        選擇第三種方案做數(shù)據(jù)遷移:


        CREATE TABLE [IF NOT EXISTS] [db.]table_name ENGINE = Mergetree AS SELECT * FROM mysql('host:port', 'db', 'database', 'user', 'password')


        3.性能測(cè)試對(duì)比


        類型數(shù)據(jù)量表大小查詢速度
        Mysql5000萬10G205s
        ClickHouse5000萬600MB1s內(nèi)

        4.數(shù)據(jù)同步方案



        臨時(shí)表


        新建temp中間表,將Mysql數(shù)據(jù)全量同步到ClickHouse內(nèi)temp表,再替換原ClickHouse中的表,適用數(shù)據(jù)量適度,增量和變量頻繁的場(chǎng)景


        synch



        開源的同步軟件推薦:synch原理是通過Mysql的binlog日志,獲取sql語句,再通過消息隊(duì)列消費(fèi)task


        5.ClickHouse為什么快?


        • 只需要讀取要計(jì)算的列數(shù)據(jù),而非行式的整行數(shù)據(jù)讀取,降低IO cost

        • 同列同類型,有十倍壓縮提升,進(jìn)一步降低IO

        • clickhouse根據(jù)不同存儲(chǔ)場(chǎng)景,做個(gè)性化搜索算法


        四、遇到的坑


        1.ClickHouse與mysql數(shù)據(jù)類型差異性


        用Mysql的語句查詢,發(fā)現(xiàn)報(bào)錯(cuò):



        解決方案:LEFT JOIN B b ON toUInt32(h.id) = toUInt32(ec.post_id),中轉(zhuǎn)一下,統(tǒng)一無符號(hào)類型關(guān)聯(lián)


        2.刪除或更新是異步執(zhí)行,只保證最終一致性


        查詢CK手冊(cè)發(fā)現(xiàn),即便對(duì)數(shù)據(jù)一致性支持最好的Mergetree,也只是保證最終一致性:



        如果對(duì)數(shù)據(jù)一致性要求較高,推薦大家做全量同步來解決


        五、總結(jié)


        通過ClickHouse實(shí)踐,完美的解決了Mysql查詢瓶頸,20億行以下數(shù)據(jù)量級(jí)查詢,90%都可以在1s內(nèi)給到結(jié)果,隨著數(shù)據(jù)量增加,ClickHouse同樣也支持集群,大家如果感興趣,可以積極嘗試 : )


        參考資料:

        ClickHouse官方手冊(cè) CK

        ClickHouse在攜程酒店應(yīng)用 蔡岳毅

        ClickHouse引擎怎么選 Roin123

        作者:起個(gè)帥的名
        來源:https://juejin.cn/post/6863283398727860238

        1、Intellij IDEA這樣 配置注釋模板,讓你瞬間高出一個(gè)逼格!
        2、Spring+SpringMVC+Mybatis實(shí)現(xiàn)校園二手交易平臺(tái)【實(shí)戰(zhàn)項(xiàng)目】
        3、基于SpringBoot的迷你商城系統(tǒng),附源碼!
        4、把Redis當(dāng)作隊(duì)列來用,真的合適嗎?
        5、驚呆了,Spring Boot居然這么耗內(nèi)存!你知道嗎?
        6、全網(wǎng)最全 Java 日志框架適配方案!還有誰不會(huì)?
        7、Spring中毒太深,離開Spring我居然連最基本的接口都不會(huì)寫了

        點(diǎn)分享

        點(diǎn)收藏

        點(diǎn)點(diǎn)贊

        點(diǎn)在看

        瀏覽 28
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            中文字幕av一区二区三区美園和花 | 天天日夜操 | 日本人三级三妇少电影 | 骚逼视频免费看 | 国产高清无码毛片 | 国产啊v视频在线免费观看 | 国产品牌情久久久久久久男 | 欧美在线不卡视频 | 秋霞乱伦电影 | 国产1区 日韩精品中文字幕欧美一区二 |