MaxCompute表設(shè)計規(guī)范有哪些-創(chuàng)新互聯(lián)

MaxCompute 表設(shè)計規(guī)范有哪些,相信很多沒有經(jīng)驗的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。

10年積累的成都網(wǎng)站設(shè)計、成都網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè)經(jīng)驗,可以快速應(yīng)對客戶對網(wǎng)站的新想法和需求。提供各種問題對應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識你,你也不認(rèn)識我。但先網(wǎng)站設(shè)計后付款的網(wǎng)站建設(shè)流程,更有鎮(zhèn)平免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。
  • 表的限制項

  • 表(Table)設(shè)計規(guī)范 表設(shè)計主要目標(biāo)

    • 分區(qū)字段和普通字段的選擇

    • 分區(qū)字段定義依據(jù)

    • 分區(qū)個數(shù)定義依據(jù)

    • 分區(qū)數(shù)量和數(shù)據(jù)量建議

    • 按數(shù)據(jù)分層規(guī)范數(shù)據(jù)生命周期

    • 按數(shù)據(jù)的變更和歷史規(guī)范數(shù)據(jù)的保存

    • 表設(shè)計的影響

    • 表設(shè)計步驟

    • 表數(shù)據(jù)存儲規(guī)范

    • 數(shù)據(jù)導(dǎo)入通道與表設(shè)計

    • 分區(qū)設(shè)計與邏輯存儲的對應(yīng)

    • 表和分區(qū)設(shè)計基本規(guī)則

    • 分區(qū)設(shè)計

表的限制項

表(Table)設(shè)計規(guī)范 表設(shè)計主要目標(biāo)

  • 降低存儲成本。 合適的表設(shè)計可以在數(shù)據(jù)分層設(shè)計上降低冗余存儲,減少中間表數(shù)據(jù)量大小。同時正 確的對表數(shù)據(jù)進(jìn)行生命周期管理,更能夠直接降低存儲的數(shù)據(jù)量以降低存儲成本。

  • 降低計算成本。 對表設(shè)計規(guī)范化,以便在后續(xù)對表數(shù)據(jù)進(jìn)行查詢計算過程中,可以依據(jù)這些規(guī)范優(yōu)化 數(shù)據(jù)的讀取,減少計算過程中的冗余讀寫和計算,提升計算性能的同時降低成本。

  • 降低維護(hù)復(fù)雜度。 規(guī)范化的表分層設(shè)計能夠直接體現(xiàn)業(yè)務(wù)的特點(diǎn)。如通過對數(shù)據(jù)通道中數(shù)據(jù)采集方式 進(jìn)行優(yōu)化,同時對表進(jìn)行規(guī)范化設(shè)計,可以減少分布式系統(tǒng)中小文件的問題,同時也減少表和分區(qū)維 護(hù)的數(shù)量等復(fù)雜度。

表設(shè)計的影響

影響的操作:表創(chuàng)建/入數(shù)據(jù)/表更新/表刪除/表管理。 導(dǎo)入數(shù)據(jù)場景(區(qū)分要做實(shí)時數(shù)據(jù)采集還是離線批 量數(shù)據(jù)寫入):

  • 導(dǎo)入即查詢與計算。

  • 多次導(dǎo)入,定時查詢與計算。

  • 導(dǎo)入后生成中間表進(jìn)行計算。
    注意:

  • 合理的表設(shè)計和數(shù)據(jù)集成周期管理能夠使數(shù)據(jù)在存儲期間降低成本。 - MaxCompute優(yōu)先作為批量數(shù)據(jù)集成庫以及按業(yè)務(wù)邏輯進(jìn)行計算,如按照分區(qū)進(jìn)行計算。

  • 導(dǎo)入后立即查詢與計算,需要考慮每次導(dǎo)入數(shù)據(jù)量,減少流式小量數(shù)據(jù)導(dǎo)入。

  • 不合理的數(shù)據(jù)導(dǎo)入及存儲(小文件)會對整體存儲性能,計算性能,運(yùn)維穩(wěn)定性造成影響。

表設(shè)計步驟

  1. 確定所屬項目空間,依據(jù)業(yè)務(wù)過程規(guī)劃表類型,屬于哪個數(shù)據(jù)層次。

  2. 定義表描述,權(quán)限定義與Owner定義。

  3. 依據(jù)數(shù)據(jù)量、數(shù)據(jù)集成特點(diǎn)定義分區(qū)表或者非分區(qū)表。

  4. 定義字段,或分區(qū)字段

  5. 表創(chuàng)建/表轉(zhuǎn)換

  6. 明確導(dǎo)入數(shù)據(jù)場景的相關(guān)因素(包括批量數(shù)據(jù)寫入/流式數(shù)據(jù)寫入/條式數(shù)據(jù)插入)。

  7. 定義表和分區(qū)數(shù)據(jù)生命周期。

注意:

  • 表創(chuàng)建之后可以依據(jù)業(yè)務(wù)變化進(jìn)行表schema的修改,如設(shè)置生命周期,RangeClustering。

  • 在設(shè)計階段需要特別注意區(qū)分?jǐn)?shù)據(jù)的場景(批量數(shù)據(jù)寫入/流式數(shù)據(jù)寫入/周期性條式數(shù)據(jù)插入)。

  • 合理使用非分區(qū)表和分區(qū)表。日志表,事實(shí)表,原始采集表等建議使用分區(qū)表,按照時間分區(qū)。

  • 注意各種表和分區(qū)的限制條件。

表數(shù)據(jù)存儲規(guī)范

按數(shù)據(jù)分層規(guī)范數(shù)據(jù)生命周期

  • 源表ODS層: 每天從業(yè)務(wù)系統(tǒng)同步過來的數(shù)據(jù),全部保留,生命周期定義永久保存。以防備下游數(shù)據(jù) 受損時可以從ODS恢復(fù)。若ODS每天同步過來的是全量表,可以通過全表拉鏈的方式來壓縮存儲。

  • 數(shù)據(jù)倉庫(基礎(chǔ))層: 至少保留一份完整的全量數(shù)據(jù)(不必像ODS那樣冗余多份全量)??紤]到性能 因素,可以考慮拆表或者做分區(qū)。

  • 數(shù)據(jù)集市層: 按需保留1~3年時?。數(shù)據(jù)集市的數(shù)據(jù)較容易生成,無需保留那么?時間的歷史數(shù)據(jù)

按數(shù)據(jù)的變更和歷史規(guī)范數(shù)據(jù)的保存

會變化數(shù)據(jù)怎么存:

  • 客戶屬性、產(chǎn)品屬性天天變,將這些屬性的歷史變化情況記錄下來,以方便追溯某個時點(diǎn)的值。

  • 在事實(shí)表里面冗余維表的字段,即把”事件發(fā)生時“的各種維度屬性值與該事件綁定起來。 比較方便使 用者,不需關(guān)聯(lián)多張表就可以用數(shù)據(jù),在數(shù)據(jù)應(yīng)用層使用。

  • 用拉鏈表或者日快照的形式,記錄維表的變化情況。 比較方便數(shù)據(jù)加工者,數(shù)據(jù)結(jié)構(gòu)靈活,擴(kuò)展方 便,容易管理,且數(shù)據(jù)一致性更好。在數(shù)據(jù)基礎(chǔ)層使用。

數(shù)據(jù)導(dǎo)入通道與表設(shè)計

通道類型:

  • Datahub ,規(guī)劃寫入的分區(qū)以及寫入流量的關(guān)系,做到64M commit一次。

  • 數(shù)據(jù)集成或DataX,規(guī)劃寫入的表分區(qū)的頻率,做到64M commit一次,避免commit空目錄。 DTS,規(guī)劃寫入的表存量分區(qū)與增量分區(qū)的關(guān)系,做commit頻率設(shè)置。

  • Console (Run SQL or Tunnel upload),避免高頻小數(shù)據(jù)量文件的插入或者上傳。

  • SDK Run Sql之insert into,對表或者分區(qū)上傳時需要注意插入到分區(qū)后進(jìn)行小文件整理操作,避免 對一個分區(qū)或者非分區(qū)表插入多次,插入后需要merge。

注意:

  • MaxCompute導(dǎo)入數(shù)據(jù)的通道只有Tunnel SDK或者執(zhí)行SQL的Insert into,避免流式插入。

  • 以上各通道本身均有自身邏輯進(jìn)行流式數(shù)據(jù)寫入, 批量數(shù)據(jù)寫入,周期調(diào)度寫入。

  • 數(shù)據(jù)通道寫表或分區(qū)時需要注意將一次寫入的數(shù)據(jù)量控制在合理的值如64M以上。

分區(qū)設(shè)計與邏輯存儲的對應(yīng)

MaxCompute 表設(shè)計規(guī)范有哪些

如上圖,表一共m 個一級分區(qū),每個一級分區(qū)都會按時間存儲二級分區(qū),每個二級分區(qū)都會存儲所有的 列。 對分區(qū)進(jìn)行設(shè)計的注意事項:

  • 分區(qū)限制數(shù)量上限。

  • 避免每個分區(qū)中只有少量數(shù)據(jù)。

  • 按照分區(qū)條件查詢和計算。

  • 避免每個分區(qū)中多次數(shù)據(jù)寫入。

表和分區(qū)設(shè)計基本規(guī)則

  • 所有的表、字段名要使用統(tǒng)一的命名規(guī)范。

    • 要能夠區(qū)分該表的業(yè)務(wù)類型。

    • 要能夠區(qū)分該表是“事實(shí)表”或“維度表”,“日志表”,“極限存儲表”(待發(fā)布功能)。

    • 要能夠區(qū)分該表的實(shí)體信息。

  • 不同表中具有相同業(yè)務(wù)含義的字段要定義統(tǒng)一的數(shù)據(jù)類型:

    • 避免不必要的類型轉(zhuǎn)換。

  • 分區(qū)設(shè)計及使用一般規(guī)則:

    • 支持新增分區(qū),不支持新增分區(qū)字段。

    • 單表支持分區(qū)數(shù)量為6萬。

    • 對于多級分區(qū)的表,如果想添加新的分區(qū),必須指明全部的分區(qū)值。

    • 不支持修改分區(qū)列列名,只能修改分區(qū)列對應(yīng)的值。修改多級分區(qū)的一個或者多個分區(qū)值,多級 分區(qū)的每一級的分區(qū)值都必須寫上。

分區(qū)設(shè)計

分區(qū)字段和普通字段的選擇

分區(qū)字段的作用:

  • 方便數(shù)據(jù)的管理 。

  • 劃分?jǐn)?shù)據(jù)掃描范圍。
    創(chuàng)建表的時候,可以設(shè)置普通字段和分區(qū)字段。在絕大多數(shù)情況下,可以把普通字段理解成數(shù)據(jù)文件的數(shù) 據(jù),而分區(qū)字段可以理解成文件系統(tǒng)的目錄。表的存儲空間的占用是普通字段的空間占用。 分區(qū)列雖然不直接存儲數(shù)據(jù),但是如同文件系統(tǒng)里的目錄,方便數(shù)據(jù)管理,同時在計算時若指定具體的分 區(qū),計算過程中只查詢對應(yīng)分區(qū),從而減少計算輸入量。 分區(qū)表的分區(qū)列的個數(shù)不能超過6級,也可以理解成底層存儲數(shù)據(jù)的目錄層數(shù)不能超過6層。對分區(qū)表設(shè)置 合適的生命周期,可以按照分區(qū)細(xì)粒度做到對部分?jǐn)?shù)據(jù)進(jìn)行周期管理。

注意:

  • 可以從數(shù)據(jù)管理范圍和常用的數(shù)據(jù)掃描范圍考慮將對應(yīng)字段設(shè)置成分區(qū)字段。

  • 對于不具備規(guī)律或者類型數(shù)量大于10000且不經(jīng)常作為查詢條件的字段設(shè)置成普通字段。

分區(qū)字段定義依據(jù)

按優(yōu)先級高低排序:

  • 區(qū)列的選擇應(yīng)充分考慮時間因素,盡量避免對于存量分區(qū)進(jìn)行更新。

  • 如果有多個事實(shí)表(不包括維度表)進(jìn)行join,查詢條件where范圍的列作為分區(qū)列。 選

  • 擇group by 或distinct 包含的列作為分區(qū)列。

  • 選擇值分布均勻的列,不要選擇分區(qū)傾斜的列作為分區(qū)列。

  • 常用SQL包含某列的等值或in查詢條件,選擇該列作為分區(qū)列。

例如:

Select ... from table where id=123 and ....;

分區(qū)個數(shù)定義依據(jù)

  • 時間分區(qū):可按天進(jìn)行分區(qū)或者按月進(jìn)行分區(qū),如按照小時進(jìn)行分區(qū),二級分區(qū)平均數(shù)量不應(yīng)大于8 個。

  • 地域分區(qū):省,市,縣進(jìn)行分區(qū),考慮進(jìn)行多級分區(qū)。23個省,5個自治區(qū),4個直轄市,2個特別行 政區(qū);50個地區(qū)(州、盟);661個市,其中:直轄市4個;地級市283個;縣級市374個;1636個縣(自治縣、旗、自治旗、特區(qū)和林區(qū)),按照最細(xì)粒度縣級進(jìn)行分區(qū)后更細(xì)粒度不應(yīng)再按照小時進(jìn)行 分區(qū)。

  • 單分區(qū)下的數(shù)據(jù)建議64M數(shù)據(jù)提交一次。如果為多級分區(qū),保證每個最細(xì)粒度級分區(qū)下的二級分區(qū)的 數(shù)據(jù)都是按照這個規(guī)則。

  • 單表分區(qū)數(shù)(包括下級分區(qū))不能超過6萬。

分區(qū)數(shù)量和數(shù)據(jù)量建議

在計算的時候可以使用分區(qū)裁剪是分區(qū)的優(yōu)勢。

  • 建議單個分區(qū)中數(shù)據(jù)量不要太大,如可以單個分區(qū)中數(shù)據(jù)在1萬條,但是建了5萬個分區(qū)。

  • 應(yīng)盡量避免分區(qū)數(shù)據(jù)傾斜,單個表不同分區(qū)的數(shù)據(jù)量差異查過100萬以上。

  • 做分區(qū)設(shè)計時應(yīng)合理規(guī)劃分區(qū)個數(shù),較細(xì)粒度的分區(qū)在跨分區(qū)掃描時會影響到SQL的執(zhí)行性能。

  • 單個分區(qū)中數(shù)據(jù)量較大的情況下,MaxCompute執(zhí)行任務(wù)時會做分片處理不影響分區(qū)裁剪的優(yōu)勢。

  • 單個分區(qū)中文件數(shù)較多時,會影響MaxComputeInstance數(shù)量,造成資源浪費(fèi)和SQL性能的影響。

  • 采用多級分區(qū),先按日期分區(qū),然后按交易類型分區(qū)。

  • 拆表,一種交易類型就獨(dú)立成一張表,再每張表按日期分區(qū)。

  • 維度表不做分區(qū)。

看完上述內(nèi)容,你們掌握MaxCompute 表設(shè)計規(guī)范有哪些的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道,感謝各位的閱讀!

本文題目:MaxCompute表設(shè)計規(guī)范有哪些-創(chuàng)新互聯(lián)
文章來源:http://bm7419.com/article42/dgdphc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計關(guān)鍵詞優(yōu)化、企業(yè)建站、建站公司手機(jī)網(wǎng)站建設(shè)、網(wǎng)站導(dǎo)航

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站優(yōu)化排名