91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

供應鏈場景使用ClickHouse最佳實踐

京東云 ? 來源:jf_75140285 ? 作者:jf_75140285 ? 2024-07-18 15:05 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

關于ClickHouse的基礎概念這里就不做太多的贅述了,ClickHouse官網(wǎng)都有很詳細說明。結合供應鏈數(shù)字化團隊在使用ClickHouse時總結出的一些注意事項,尤其在命名方面要求研發(fā)嚴格遵守約定,對日常運維有很大的幫助,也希望對讀者有啟發(fā)。

目前供應鏈數(shù)字化ck集群用來存儲實時數(shù)據(jù),先通過下面這張圖表了解下ClickHouse數(shù)據(jù)來源。

wKgZomaYvr6AfXDtAACYKYUhf1k339.png

圖中標注1和2的位置是供應鏈數(shù)字化研發(fā)在開發(fā)業(yè)務功能時改動量比較多的部分,隨著需求變多,DTS任務和數(shù)據(jù)庫表也越來越多。 通過定義研發(fā)使用約定,使我們的DTS任務、表、表字段看起來很整潔。

有哪些好處呢?

1、根據(jù)ck表名快速找到對應的DTS任務及消費jdq topic / 當然通過jdq也可快速找到對應的ck表(對不了解業(yè)務的人幫助很大)。

2、通過ck表字段即可知道該字段來自哪個業(yè)務表哪個字段(字段數(shù)據(jù)不對,聯(lián)系業(yè)務值班先排查業(yè)務庫的字段是否正確)。

3、快速統(tǒng)計到團隊 或 某個ck集群有多少DTS任務(運維時不會遺漏,一目了然)

一 建表約定

1.1 表命名約定

表命名要求: 1、本地表命名必須_local結尾 2、分布式表命名必須以_all結尾;

--創(chuàng)建本地表, 使用on cluster default 在每個節(jié)點上都創(chuàng)建一張本地表
CREATETABLE本地表名 on cluster 集群名稱
(
...
    ts                   DateTime Default now() COMMENT '時間搓',
    version              UInt64 COMMENT '版本號'
) ENGINE = ReplicatedReplacingMergeTree('/clickhouse/tables/{shard}/test_local', 
    '{replica}',version)
[PARTITIONBYexpr]-- 數(shù)據(jù)分區(qū)規(guī)則
[ORDERBYexpr]-- 排序鍵
[SAMPLEBYexpr]-- 采樣鍵
[SETTINGS index_granularity = 8192, ...]-- 額外參數(shù)

參數(shù)解釋說明:
PARTITION BY toYYYYMM(tmsCreateTime) 按照月份分
ReplicatedReplacingMergeTree(參數(shù)1,參數(shù)2,參數(shù)3)
ORDER BY (參數(shù)1,參數(shù)2, ....); 參數(shù)1,參數(shù)2,參數(shù)3....等組成業(yè)務主鍵 

----創(chuàng)建分布式表
CREATE TABLE IF NOT EXISTS 庫名.分布式表名 on cluster default AS 本地表名 
ENGINE = Distributed (default,庫名,本地表名,sipHash64(分片鍵));


建表示例腳本:

CREATE TABLE reports_prestore_outbound_fulltrace_local on cluster `default`
(
    `sm_so_no` String COMMENT '訂單號',
    `sm_waybill_code` String COMMENT '青龍運單號',
    `sm_so_type` Int64 DEFAULT 0 COMMENT '訂單類型',
    `st_so_status` Int64 DEFAULT 0 COMMENT '訂單狀態(tài)(1初始、2定位完成、3定位失敗、5揀貨中、6出庫完成、7取消、8轉病單、9站點已收貨、10已妥投、11再投中、12已拒收)',
        ?
  	`st_delivery_time` DateTime COMMENT '妥投時間',
   	`st_redeliver_time` DateTime COMMENT '再投時間',
   	`st_reject_time` DateTime COMMENT '拒收時間',
   	`version` UInt64 COMMENT '更新版本號',
    `ts` DateTime DEFAULT now() COMMENT '時間戳'
)
ENGINE = ReplicatedReplacingMergeTree('/clickhouse/tables/{shard}/waybill_data_center/reports_prestore_outbound_fulltrace_local',
 '{replica}', version)
PARTITION BY toYYYYMM(so_create_time)
ORDER BY (sm_so_no,sm_waybill_code)
TTL so_create_time + toIntervalMonth(1)
SETTINGS index_granularity = 8192;

CREATE     TABLE     IF     NOT     EXISTS   `reports_prestore_outbound_fulltrace_all`     on     cluster     default     AS     `reports_prestore_outbound_fulltrace_local`
ENGINE     =     Distributed     (default,waybill_data_center,reports_prestore_outbound_fulltrace_local,sipHash64(sm_so_no));	

1.2 分區(qū)鍵設置

視情況大表按天分區(qū),小表按月分區(qū)。分區(qū)鍵盡量使用date和datetime字段,避免string類型的分區(qū)鍵

分區(qū)粒度根據(jù)業(yè)務特點決定,不宜過粗或過細。 建議使用toYYYYMMDD()按天分區(qū),如果數(shù)據(jù)量很少,100w左右,建議使用toYYYYMM()按月分區(qū),過多的分區(qū)會占用大量的資源,會因為文件系統(tǒng)中的文件數(shù)量過多和需要打開的文件描述符過多,導致 SELECT 查詢效率不佳

1.3 分片鍵設置

分布式表分片鍵需要采用hash函數(shù),應避免數(shù)據(jù)熱點,集中寫入某個分片;

分片鍵盡量使用表中區(qū)分粒度較細的字段,可以時多個字段的組合,如:id / order_no

1.4 排序鍵/主鍵設置

1、有序可以保證很高的壓縮比及加速查詢,寫入數(shù)據(jù)建議提前排序再寫入數(shù)據(jù);

2、若未指定默認為排序建,主鍵不保證唯一性。主鍵過長會拖慢寫入性能,并且會造成過多的內存占用(主鍵常駐內存)。

1.5 字段使用約定

1、字段類型能用數(shù)字型的字段盡量用數(shù)字型,避免使用string

2、表字段命名:${業(yè)務表縮寫}_${業(yè)務表字段},如: 業(yè)務表ob_shipment_m 縮寫:osm, ck表字段則以osm_開頭。 注意:業(yè)務表的縮寫需要使用字典方式管理

3、日期字段建議默認值為1970-01-01,時間字段默認值為1970-01-01 08:00:00,使用到的地方排除掉默認值即可

4、表中必須包含:ts(時間搓)、version(flink寫入jdq的時間,單位:)字段。

version— 版本列。類型為 UInt*, Date 或 DateTime??蛇x參數(shù)。 在數(shù)據(jù)合并的時候,ReplacingMergeTree 從所有具有相同排序鍵的行中選擇一行留下: 如果 version 列未指定,保留最后一條。 如果 version 列已指定,保留 version 值最大的版本

5、盡量不使用Nullable類型

可以非NUll的盡量非NUll并在代碼中賦予默認值,數(shù)量字段默認值為0,狀態(tài)字段默認值建議使用有符號int時為-127、無符號int時為0,字符串建議默認值為空字符串。

設置成Nullable對性能影響也沒有多大,可能是因為我們數(shù)據(jù)量比較小。不過官方已經(jīng)明確指出盡量不要使用Nullable類型,因為Nullable字段不能被索引,而且Nullable列除了有一個存儲正常值的文件,還會有一個額外的文件來存儲Null標記。

1.6 新增列操作方式

本地表的修改直接執(zhí)行即可。如果要對分布式表進行修改,需分如下情況進行:

?如果沒有數(shù)據(jù)寫入,您可以先修改本地表,然后修改分布式表。

?如果數(shù)據(jù)正在寫入,您需要區(qū)分不同的類型進行操作。

修改類型 操作步驟
增加Nullable的列 1.修改本地表。 2.修改分布式表。
修改列的數(shù)據(jù)類型(類型可以相互轉換)
刪除Nullable列 1.修改分布式表。 2.修改本地表。
增加非Nullable的列 1.停止數(shù)據(jù)的寫入。 2.執(zhí)行 SYSTEM FLUSH DISTRIBUTED dbName.distributedTableName 3.修改本地表。 4.修改分布式表。 5.重新進行數(shù)據(jù)的寫入。
刪除非Nullable的列
修改列的名稱

添加表字段SQL示例參考:

ALTER TABLE reports_prestore_outbound_fulltrace_local on  cluster default ADD COLUMN  st_redeliver_time DateTime COMMENT '再投時間';
ALTER TABLE reports_prestore_outbound_fulltrace_all on  cluster default ADD COLUMN  st_redeliver_time DateTime COMMENT '再投時間';

1.7 DDL執(zhí)行注意事項

1.mutation(delete,update)操作比較重,盡量避免執(zhí)行此類操作;

2.清理過期數(shù)據(jù),應使用TTL,或者drop partition;

3.分布式DDL,分片副本節(jié)點串行執(zhí)行,出現(xiàn)阻塞會導致后面所有DDL無法正常執(zhí)行,建議輪詢各分片執(zhí)行DDL,尤其是變更字段類型,不建議直接on cluster default進行變更;

4.optimize table table_name final手動觸發(fā)合并慎用,盡量按分區(qū)操作。

二 數(shù)據(jù)寫入約定

結合供應鏈的使用場景,這里在flink層加工完數(shù)據(jù)后沒有直接將數(shù)據(jù)寫入ClickHouse集群,而是發(fā)送到JDQ隊列中。這樣做的優(yōu)勢 1、加工和存儲解藕 2、JDQ消息共享;

若數(shù)據(jù)需要做主備存儲,我們只需要創(chuàng)建新的DTS任務訂閱JDQ消息,將消息寫入到備用的ClickHouse集群即可。

wKgaomaYvsGAIIpsAABVKGzuWNs309.png

2.1 DTS任務命名約定

任務名規(guī)則:sc_digital_${集群ID}_${分布式表名}

使用"sc_digital_"前綴加分布式模型名稱,如:sc_digital_c4omjd8fl7_reports_prestore_outbound_fulltrace_all

2.2 DTS所屬項目空間

創(chuàng)建DTS任務時,任務需要放在《數(shù)字化-DTS任務空間》下。

2.3 DTS寫入批次設置

DTS任務批次寫入默認值“40W/1分鐘”。這里需要根據(jù)實際情況適當調下。

建議:每次插入50W行左右數(shù)據(jù), 最多不可超過100W行. 總之CK不像MySQL要小事務. 
比如1000W行數(shù)據(jù), MySQL建議一次插入1W左右, 使用小事務, 執(zhí)行1000次. CK建議20次,每次50W. 
這是MergeTree引擎原理決定的, 頻繁少量插入會導致data part過多, 合并不過來.

2.4 DTS消費JDQ的等級

默認消費JDQ的等級為L3。消費等級要根據(jù)業(yè)務實際使用場景做相應調整。以下等級劃分標準(來源于JDQ等級調整說明):

wKgZomaYvsKAEKslAAMtKLSdLwQ438.png

三 數(shù)據(jù)查詢約定

針對易出問題的flink-CK鏈路進行雙流,物理隔離,遇到問題可將查詢請求一鍵切換至備用CK集群。

wKgaomaYvsOAY--0AAEPnvUtYeU156.png

3.1 盡量prewhere替代where

值不變得字段必須使用prewhere特性提升查詢性能

注意:prewhere目前只能用于MergeTree系列的表引擎

3.2 where條件,盡量包含分區(qū)鍵,和主鍵索引前綴字段

盡量遵循最左原則,如果跳過最左前綴字段,使用其他字段查詢,也會走索引過濾一些數(shù)據(jù),但是效果不好;

3.3 避免使用Select *

避免使用 SELECT * 操作,這是一個非常影響的操作。應當對列進行裁剪,只選擇你需要的列,因為字段越少,消耗的 IO 資源就越少,從而性能就越高。

3.4 where、group by 順序

where和group by中的列順序,要和建表語句中order by的列順序統(tǒng)一,并且放在最前面使得它們有連續(xù)不間斷的公共前綴,否則會影響查詢性能。

3.5 JOIN 性能不是很好,應避免使用

替代方案:業(yè)務設計使用大寬表,或使用in替代多變關聯(lián),或使用字典,但需注意內存占用;如必須使用join,右表選小表(hash join 右表會全部加載到內存);

3.6 使用final去重

使用final去重查詢,盡量不要用argMax

3.7 二級索引

1、可變值字段不能添加二級索引。按此字段做條件查詢會先走索引在合并數(shù)據(jù),查出而外的中間態(tài)數(shù)據(jù)。

2、 增加二級索引只對后續(xù)新增數(shù)據(jù)生效。如需對歷史數(shù)據(jù)也走索引,需要按分區(qū)刷新數(shù)據(jù)

創(chuàng)建二級索引示例

Alter table reports_prestore_outbound_fulltrace_local ON cluster default 
    ADD INDEX idx_belong_province_code belong_province_code TYPE set(0) GRANULARITY 5;
Alter table reports_prestore_outbound_fulltrace_local ON cluster default 
    ADD INDEX idx_st_delivery_time st_delivery_time TYPE minmax GRANULARITY 5;

審核編輯 黃宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 數(shù)字化
    +關注

    關注

    8

    文章

    10672

    瀏覽量

    67263
  • 供應鏈
    +關注

    關注

    3

    文章

    1781

    瀏覽量

    41614
  • House
    +關注

    關注

    0

    文章

    5

    瀏覽量

    6873
  • click
    +關注

    關注

    0

    文章

    4

    瀏覽量

    2177
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    《制造業(yè)企業(yè)智慧供應鏈:提升韌性和安全》正式發(fā)布

    聚焦制造業(yè)供應鏈現(xiàn)代化建設的權威指引,報告系統(tǒng)解析了供應鏈韌性與安全的核心內涵、發(fā)展路徑及技術支撐,凝聚行業(yè)共識,為政府部門、企業(yè)及相關機構推動供應鏈轉型升級提供了可落地的實踐參考,對
    的頭像 發(fā)表于 02-12 10:47 ?580次閱讀

    保隆科技榮獲東風日產2025年度最佳供應鏈合作伙伴

    近日,東風日產在廣州舉行2025年供應鏈合作伙伴大會,保隆科技被授予2025年度“最佳供應鏈合作伙伴”,張祖秋董事長代表公司接受頒獎,并在大會的分論壇發(fā)言。這是東風日產對保隆科技提供優(yōu)秀產品和優(yōu)質服務的高度肯定。
    的頭像 發(fā)表于 12-25 16:31 ?395次閱讀

    普華基礎軟件入選2025中國汽車供應鏈創(chuàng)新成果

    近日,“2025中國汽車供應鏈大會”在安徽蕪湖盛大舉行,大會就汽車供應鏈創(chuàng)新轉型與國際化發(fā)展等共同關切的熱點,集各方之力,共同謀劃新時期下汽車供應鏈發(fā)展的新藍圖。會上揭曉了芯片創(chuàng)新成果和汽車
    的頭像 發(fā)表于 12-16 17:44 ?721次閱讀

    北斗智聯(lián)亮相2025中國汽車供應鏈大會

    、主題演講、產品展示三大維度,全方位分享了企業(yè)在科技自立自強、產業(yè)協(xié)同與全球化布局中的堅實實踐,與產業(yè)伙伴共同謀劃新時期下汽車供應鏈發(fā)展的新藍圖。
    的頭像 發(fā)表于 11-30 16:27 ?887次閱讀

    2025開放原子開發(fā)者大會開源安全與AI供應鏈治理分論壇成功舉辦

    當前,開源軟件與 AI 技術已深度嵌入產業(yè)數(shù)字化轉型核心場景,但供應鏈安全隱患、AI大模型安全風險、企業(yè)合規(guī)落地困境等挑戰(zhàn)同步凸顯。11月22日,2025開放原子開發(fā)者大會“開源安全與AI供應鏈治理
    的頭像 發(fā)表于 11-27 14:47 ?676次閱讀

    海辰儲能加入供應鏈ESG管理倡議

    近日,由SCSI倡議聯(lián)合發(fā)起方藏格礦業(yè)主辦的“第二屆上市公司可持續(xù)發(fā)展前沿實踐研討會暨供應鏈ESG管理倡議擴容儀式”在青海格爾木順利舉行,海辰儲能正式加入"供應鏈ESG管理倡議"
    的頭像 發(fā)表于 08-14 17:36 ?1016次閱讀

    施耐德電氣的三重創(chuàng)新打造新質供應鏈范本

    全球權威研究機構Gartner在2025年6月正式發(fā)布了備受矚目的“2025年全球供應鏈25強榜單”。該榜單憑借全面且嚴格的評估標準,評估維度涵蓋企業(yè)財務績效,環(huán)境、社會和治理(ESG)實踐成果,已成為全球供應鏈領域的重要參考依
    的頭像 發(fā)表于 08-13 16:54 ?1102次閱讀

    天合光能加入供應鏈ESG管理倡議

    7月31日,由SCSI倡議聯(lián)合發(fā)起方藏格礦業(yè)主辦的“第二屆上市公司可持續(xù)發(fā)展前沿實踐研討會暨供應鏈ESG管理倡議擴容儀式”在青海格爾木順利舉行。天合光能作為全球領先的光儲智慧能源整體解決方案提供商
    的頭像 發(fā)表于 08-08 17:46 ?1500次閱讀

    京東零售在智能供應鏈領域的前沿探索與技術實踐

    受邀出席并擔任《AI+智慧物流與供應鏈分享會》聯(lián)席主席,聯(lián)合發(fā)表《AI科技助力供應鏈產業(yè)升級》主題演講,深入介紹了京東零售在智能供應鏈領域的前沿探索與技術實踐,并深入分析了AI驅動產業(yè)
    的頭像 發(fā)表于 08-04 16:10 ?1053次閱讀
    京東零售在智能<b class='flag-5'>供應鏈</b>領域的前沿探索與技術<b class='flag-5'>實踐</b>

    德力西電氣榮獲2025綠色供應鏈引領獎

    近日,2025第四屆國際綠色零碳節(jié)暨2025 ESG領袖峰會在上海盛大啟幕。憑借在綠色供應鏈領域的卓越表現(xiàn),德力西電氣成功斬獲“2025綠色供應鏈引領獎”。
    的頭像 發(fā)表于 07-23 17:17 ?1228次閱讀

    API在快時尚電商的供應鏈管理

    在當今數(shù)字化時代,快時尚電商行業(yè)面臨著前所未有的挑戰(zhàn):快速變化的時尚趨勢、高頻次的上新需求、以及消費者對即時交付的期望。這些因素對供應鏈管理提出了更高要求——敏捷性、效率和實時響應成為核心競爭力
    的頭像 發(fā)表于 07-22 14:31 ?742次閱讀

    RFID標簽在服裝供應鏈管理中的應用

    二、RFID標簽在服裝供應鏈管理中的優(yōu)勢高效率:RFID可以快速批量讀取服裝信息,大幅縮短操作時間,提高供應鏈管理效率。準確性:RFID減少了人工操作的錯誤率,提高了服裝供應鏈管理的準確性和可靠性
    的頭像 發(fā)表于 07-14 17:02 ?721次閱讀
    RFID標簽在服裝<b class='flag-5'>供應鏈</b>管理中的應用

    安博電子:全路品控體系賦能供應鏈安全

    在全球電子產業(yè)面臨供應鏈波動、技術迭代和市場需求變化等多重挑戰(zhàn)的背景下,安博電子始終秉持“讓合作伙伴贏得更多一點”的核心理念,致力于打造穩(wěn)健、高效、可持續(xù)的全球供應鏈體系。依托覆蓋供應商管理、品質
    的頭像 發(fā)表于 04-07 17:03 ?847次閱讀
    安博電子:全<b class='flag-5'>鏈</b>路品控體系賦能<b class='flag-5'>供應鏈</b>安全

    安富利:供應鏈強則企業(yè)強

    外圍局勢風云變幻的當下,供應鏈的安全與穩(wěn)定受到前所未有的重視。對于注重持續(xù)創(chuàng)新的硬科技企業(yè)而言,情況更是如此。面對復雜多變的市場環(huán)境,硬科技企業(yè)能夠破浪前行、韌性增長的“武功秘籍”之一,正是供應鏈
    發(fā)表于 03-25 18:09 ?425次閱讀
    安富利:<b class='flag-5'>供應鏈</b>強則企業(yè)強

    一文探索物流CEO大屏及供應鏈大屏是如何做好雙11保障

    背景概括: 供應鏈大屏做為物流的核心報表,為管理者提供大促決策時的依據(jù)。頁面指標超過170+,依賴接口30+,復雜度較高,數(shù)據(jù)路較長,同時穩(wěn)定性要求高。 本文將分享供應鏈大屏是如何保障雙11
    的頭像 發(fā)表于 03-12 16:35 ?819次閱讀
    一文探索物流CEO大屏及<b class='flag-5'>供應鏈</b>大屏是如何做好雙11保障