国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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

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

3天內不再提示

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

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

掃碼添加小助手

加入工程師交流群

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

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

wKgZomaYvr6AfXDtAACYKYUhf1k339.png

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

有哪些好處呢?

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

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

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

一 建表約定

1.1 表命名約定

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

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

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

----創建分布式表
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 '訂單狀態(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 分區鍵設置

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

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

1.3 分片鍵設置

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

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

1.4 排序鍵/主鍵設置

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

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

1.5 字段使用約定

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

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

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

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

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

5、盡量不使用Nullable類型

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

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

1.6 新增列操作方式

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

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

?如果數據正在寫入,您需要區分不同的類型進行操作。

修改類型 操作步驟
增加Nullable的列 1.修改本地表。 2.修改分布式表。
修改列的數據類型(類型可以相互轉換)
刪除Nullable列 1.修改分布式表。 2.修改本地表。
增加非Nullable的列 1.停止數據的寫入。 2.執行 SYSTEM FLUSH DISTRIBUTED dbName.distributedTableName 3.修改本地表。 4.修改分布式表。 5.重新進行數據的寫入。
刪除非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執行注意事項

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

2.清理過期數據,應使用TTL,或者drop partition;

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

4.optimize table table_name final手動觸發合并慎用,盡量按分區操作。

二 數據寫入約定

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

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

wKgaomaYvsGAIIpsAABVKGzuWNs309.png

2.1 DTS任務命名約定

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

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

2.2 DTS所屬項目空間

創建DTS任務時,任務需要放在《數字化-DTS任務空間》下。

2.3 DTS寫入批次設置

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

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

2.4 DTS消費JDQ的等級

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

wKgZomaYvsKAEKslAAMtKLSdLwQ438.png

三 數據查詢約定

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

wKgaomaYvsOAY--0AAEPnvUtYeU156.png

3.1 盡量prewhere替代where

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

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

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

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

3.3 避免使用Select *

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

3.4 where、group by 順序

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

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

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

3.6 使用final去重

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

3.7 二級索引

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

2、 增加二級索引只對后續新增數據生效。如需對歷史數據也走索引,需要按分區刷新數據

創建二級索引示例

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;

審核編輯 黃宇

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

    關注

    8

    文章

    10659

    瀏覽量

    67233
  • 供應鏈
    +關注

    關注

    3

    文章

    1781

    瀏覽量

    41602
  • House
    +關注

    關注

    0

    文章

    5

    瀏覽量

    6870
  • click
    +關注

    關注

    0

    文章

    4

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    《制造業企業智慧供應鏈:提升韌性和安全》正式發布

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

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

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

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

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

    北斗智聯亮相2025中國汽車供應鏈大會

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

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

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

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

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

    施耐德電氣的三重創新打造新質供應鏈范本

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

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

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

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

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

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

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

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

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

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

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

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

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

    安富利:供應鏈強則企業強

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

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

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