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>

        數(shù)據(jù)倉庫建設(shè)規(guī)范.pdf

        共 6039字,需瀏覽 13分鐘

         ·

        2020-12-31 09:40

        本文完整版PDF下載


        為了方便大家學(xué)習(xí),本文已整理為PDF格式,識別下方二維碼,回復(fù)【數(shù)倉】,獲得下載鏈接。

        之后會持續(xù)整理一些可下載的學(xué)習(xí)資料分享給大家,大家記得將公眾號設(shè)置星標(biāo)哦!更多資料獲取、學(xué)習(xí)交流后臺回復(fù)【加群

        -----------------------



        1 概述

        本文檔制定了XX數(shù)據(jù)倉庫中數(shù)據(jù)庫對象的命名規(guī)范(用戶、表、視圖、存儲過程、函數(shù)、表分區(qū)、主鍵、索引、序列等)、數(shù)據(jù)庫編程規(guī)范,JAVA編程規(guī)范為系統(tǒng)設(shè)計和開發(fā)工作提供統(tǒng)一的命名標(biāo)準(zhǔn),提高系統(tǒng)的規(guī)整性和代碼的可讀性,減輕維護工作量,提高工作效率。

        2 數(shù)據(jù)庫對象命名規(guī)范

        2.1? 層次劃分

        ?

        序號

        模型層次

        用途

        1

        ODS

        存放來自各個系統(tǒng)的原始數(shù)據(jù);

        2

        DW

        根據(jù)業(yè)務(wù)分析需求,對主題域內(nèi)的數(shù)據(jù)進行輕度匯總;

        3

        DM

        建立跨域的業(yè)務(wù)主題模型;

        4

        DIM

        統(tǒng)一服務(wù)于數(shù)據(jù)中心的參數(shù)表;

        5

        APP

        ?

        應(yīng)用層,用于生成報表

        6

        XX

        XX

        數(shù)據(jù)層級按照自己數(shù)據(jù)倉庫規(guī)劃的命名即可~

        2.2? 表、視圖、存儲過程、函數(shù)命名規(guī)范

        <對象類型><_模型層次><_主題><_對象描述>[_匯總類型][_存儲類型]

        說明:<> 尖括號中的內(nèi)容為必須項,適用于所有用戶層對象,[] 方括號中的內(nèi)容為可選項,會因用戶層及對象的不同而不同

        命名約束:數(shù)據(jù)庫對象命名可能受最大長度限制,因此在實際命名中如果按照規(guī)范約定的命名方式存在超長的現(xiàn)象,需要開發(fā)人員靈活控制。

        2.2.1 對象類型

        <對象類型><_模型層次><_主題域><_對象描述>[_匯總類型][_存儲類型]。

        適用范圍:所有用戶層對象。

        對象類型

        對象

        說明

        TB

        TABLE

        VW

        VIEW

        視圖

        ……

        ……

        ……

        ?

        2.2.2 模型層次

        <對象類型><_模型層次><_主題域><_對象描述>[_匯總類型][_存儲類型]

        說明:對象屬性一般為對象歸屬用戶的簡寫。

        適用范圍:所有用戶層對象。可以參照自己的對象屬性命名規(guī)范,對此不要求統(tǒng)一。

        ?

        模型層次

        說明

        ODS

        獲取層,存放從各個源系統(tǒng)接收的原始數(shù)據(jù);

        DW

        根據(jù)業(yè)務(wù)分析需求,對數(shù)據(jù)進行匯總,

        應(yīng)用分析原則優(yōu)先訪問DW層,其次DWD層,不允許訪問ODS層;

        DM

        建立跨域的業(yè)務(wù)主題模型;

        DIM

        維表

        APP

        報表層,根據(jù)DM模型數(shù)據(jù)生成報表。

        ?

        2.2.3 主題域

        <對象類型><_模型層次><_主題域><_對象描述>[_匯總類型][_存儲類型][_][序號或描述]

        說明:主題域是對數(shù)據(jù)進行大類劃分,不同用戶下的分類有所不同。適用所有業(yè)務(wù)層;每個新增的業(yè)務(wù)主題均需到該規(guī)范備案登記。

        主題域

        命名

        簡稱

        描述

        客戶域

        Customer

        XX

        泛客戶

        ?

        2.2.4 對象描述

        <對象類型><_模型層次><_主題域><_對象描述>[_匯總類型][_存儲類型]

        • 適用范圍:所有用戶層對象;

          對象描述要求簡潔準(zhǔn)確,盡可能的直觀表達對象的含義,通常包含業(yè)務(wù)+功能;

        如果是通用命名規(guī)則:<對象類型><_模型層次><_主題域><_對象描述>[_匯總類型][_存儲類型],這里的對象描述是多業(yè)務(wù)的合成體,這時不加業(yè)務(wù)。

        匯總類型

        <對象類型><_模型層次><_主題域><_對象描述>[_匯總類型][_存儲類型]

        適用范圍:除字典表、日志表之外的對象。

        描述

        匯總類型

        DAY

        MON

        YEAR

        2.2.5 存儲類型

        <對象類型><_模型層次><_主題域><_對象描述>[_匯總類型][_存儲類型]

        適用范圍:所有用戶層除日志、字典表、維表之外的對象。

        對象描述

        存儲類型

        說明

        目標(biāo)程序


        臨時表

        TMP

        程序中臨時使用的中間表,用于存放程序運行中使用的臨時數(shù)據(jù),程序運行結(jié)束后表由程序自行清空,只保留結(jié)構(gòu)。

        配置表

        CFG


        2.2.5.1??? 日表

        日表以統(tǒng)計周期字段做日分區(qū)。數(shù)據(jù)保留周期為業(yè)務(wù)需要的周期,月底最后一天的數(shù)據(jù)不保存,如有需要則沉淀到月表中。

        2.2.5.2??? 月表

        月表以統(tǒng)計周期字段做月分區(qū)。除該字段外,其余字段與日表必須相同。數(shù)據(jù)保留周期為業(yè)務(wù)需要的周期。所有的月報表、月KPI數(shù)據(jù)必須從月表出,禁止從日表出。

        2.2.5.3??? 周表

        周表數(shù)據(jù)保留周期為業(yè)務(wù)需要的周期。

        2.3? 其他對象命名規(guī)范

        對象

        命名規(guī)則

        說明

        表分區(qū)

        根據(jù)實際情況自行確定

        建議等

        主鍵

        PK<_表名><_列名>


        索引

        IDX<_表名><_列名>


        ?

        2.4? 常用字段命名規(guī)范

        字段名

        數(shù)據(jù)類型

        字段說明

        備注

        常用字段1

        常用類型1

        字段說明1

        備注1

        字段命名需做到見名知其意,避免用中文拼音,或者拼音+英語的方式。

        可以參考企業(yè)現(xiàn)有業(yè)務(wù)數(shù)據(jù)庫的數(shù)據(jù)字典命名。

        2.5? 常用單位規(guī)范

        約定數(shù)據(jù)倉庫中字段的默認(rèn)單位,比如車速默認(rèn)單位是KM/h。

        2.6? 數(shù)據(jù)庫對象命名注意事項

        • 命名盡量采用富有意義的英文詞匯,不準(zhǔn)采用漢語拼音。

        • XX……

        2.7? 數(shù)據(jù)倉庫建表注意事項

        • 表名,列名等需要添加注釋,否則不予上線。

        • XX……。

        3?? 主機目錄及文件命名規(guī)范

        3.1? 用戶命名規(guī)范

        主機用戶名命名規(guī)范:

        序號

        主機用戶名

        賬號類型

        用途

        1

        hadoop

        應(yīng)用程序賬號

        hadoop集群管理用戶

        2

        ftp賬號

        3.2? 目錄規(guī)劃

        <根目錄>/<二級目錄>/[三級目錄/]<業(yè)務(wù)域>[/自定義]

        目錄規(guī)劃不做強制性的要求,但是要做到層次清晰、命名規(guī)范,見名知意。

        l? 根目錄

        ?? ?? 取值為:根據(jù)物理存儲掛載情況而定;

        l? 二級目錄

        ?? ?? 取值為:主機如果沒有文件系統(tǒng)掛載點,則二級目錄為用戶家目錄,否則取值用戶名;

        l? 三級目錄

        取值為:用戶自行定義,如果存儲在用戶家目錄下則需要三級目錄;

        l? 業(yè)務(wù)域

        取值為:抽取的文件按業(yè)務(wù)類型進行分類存儲。

        業(yè)務(wù)簡稱

        說明

        業(yè)務(wù)1

        說明1

        業(yè)務(wù)2

        說明2

        ?

        l? 自定義

        取值為:可選項,如果文件存儲有其它要求,可根據(jù)實際情況靈活調(diào)整,如需要分省存放等。

        3.3? 文件命名規(guī)范

        <文件類型>_<主題域>_<數(shù)據(jù)周期>_<接口文件序號>.dat

        • 主題域

        主題域取值情況咱定為各項目名稱:

        • 數(shù)據(jù)周期

        取值為:周期日數(shù)據(jù)8位長度,YYYYMMDD,月數(shù)據(jù)6位長度YYYYMM;

        • 接口文件序號

        取值為:接口文件序號長度為3,默認(rèn)從000開始;

        3.4? 文件格式規(guī)范

        • 文件分隔符

        文件字段盡量不采用定長分隔,采用“|”等特殊字符作為分隔符,另外在抽取文件時需要確定字段內(nèi)容中不會出現(xiàn)分隔符字符,以免錯列;

        • 文件編碼

        文件編碼采用UTF-8。

        4?? 數(shù)據(jù)保存周期規(guī)范

        周期類型

        模型層次

        保留周期(HIVE)

        備注

        ODS

        365

        ……





        5?? 數(shù)據(jù)庫編程規(guī)范

        5.1? 參數(shù)和變量命名規(guī)范

        5.1.1 對象變量

        對象變量命名規(guī)則如下:

        • 命名規(guī)則:<對象類型><_><變量描述>

        • ......

        5.1.2 參數(shù)和對象命名注意事項

        • 所有名稱采用英文單數(shù)名詞或動詞,避免出現(xiàn)復(fù)數(shù)。

        • 固定長度的字符串類型采用char,長度不固定的字符串采用varchar,一定要避免長度不固定的情況下采用char。

        • 如無特殊需求,避免使用大字段(blob, clob, long, text, image 等)。

        • 命名使用英文單詞,避免使用拼音,特別不應(yīng)該使用拼音簡寫。命名不允許使用中文或者特殊字符。

        • 命名中若使用特殊約定或縮寫,則必須要注釋說明。

        • 使用有意義、易于記憶、描述性強、簡短及唯一的英文單詞。自已特有的命名風(fēng)格,要自始自終保持一至,不可來回變化。

        • 對于變量命名,禁止取單個字符(如i、j… ),建議除了要有具體含義外,還能表明變量

        • 除非必要,不允許使用數(shù)字或較奇怪的字符來定義標(biāo)識符。

        5.2? 書寫規(guī)范

        5.2.1 代碼大小寫規(guī)范

        • 所有數(shù)據(jù)代碼統(tǒng)一使用小寫字母書寫,以方便不同數(shù)據(jù)庫之間的移植,同時也避免程序調(diào)用問題。參數(shù)和局部變量,全局變量用大寫。

        • ……

        5.2.2 代碼縮進規(guī)范

        • 程序塊采用縮進風(fēng)格書寫,保證代碼清晰易讀,風(fēng)格一致。縮進格數(shù)統(tǒng)一為 4 格。

        • 必須使用空格,禁止使用TAB鍵。

        • 同一條語句占用多于一行時,每行的第一個關(guān)鍵字應(yīng)當(dāng)右對齊。

        • 對于Insert … values 和update 語句,一行寫一個字段,這段后面緊跟注釋(注釋語句左對齊),vales 和insert 左對齊,左括號和右括號與insert、values 左對齊

        • insert...select語句中,應(yīng)使每行的字段順序?qū)?yīng),以每行不超過80字符為準(zhǔn),以增強可讀性。

        5.2.3 空格及換行

        • 關(guān)鍵字之后要留空格。

        • 創(chuàng)建表、存儲過程、函數(shù)時,表名、存儲過程名和函數(shù)名之后不要留空格。

        • 不允許把多個語句寫在一行中,即一行只寫一條語句。

        • 相對獨立的程序塊之間、變量說明之后必須加空行。

        • 超過80字符的語句要分行書寫,長表達式應(yīng)在低優(yōu)先級操作符處換行,操作符或關(guān)鍵字放在新行之首。劃分出的新行應(yīng)適當(dāng)?shù)乜s進,使排版整齊,語句可讀。

        • if后的條件要用括號括起來,括號內(nèi)每行最多兩個條件。

        • 不同類型的操作符混合使用時,建議使用括號進行隔離,以使代碼清晰。

        • 減少控制語句的檢查次數(shù),如在else(if…else)控制語句中,對符合條件頻率高的盡量放到前面。

        • 盡量避免使用嵌套的if語句,在這種情況應(yīng)使用多個if語句來判斷其可能。

        5.2.4 其它

        • 避免使用select * 語句。

        • insert 語句必須給出字段列表,否則對后續(xù)表的擴展回帶來維護上的麻煩。

        • 當(dāng)一個SQL 語句中涉及到多個表時,必須使用別名來限定字段名,這使其它人閱讀起來更方便,避免了含議模糊的引用,其中能夠別名中清晰地判斷出表名。

        • 確保變量和參數(shù)在類型和長度與表數(shù)據(jù)列類型和長度相匹配。

        5.3? 注釋規(guī)范

        • 一般情況下,源程序有效注釋量不低于30%以上。說明:注釋的原則是有助于程序閱讀理解,便于后期維護,在該加的地方都加了,注釋不宜太多但也不能太少,注釋語言須準(zhǔn)確、易懂、簡潔。

        • 所有變量定義需要加注釋,說明該變量的用途和含義。

        • 注釋內(nèi)容要清晰明了,含義準(zhǔn)確,防止注釋二義性。

        • 禁止在注釋中使用縮寫,特別是非常用的縮寫。

        • 注釋與所描述代碼進行同樣的縮排。

        • 對程序分支必須書寫注釋。

        • 保證代碼和注釋的一致性。修改代碼同時修改相應(yīng)的注釋,不再有用的注釋要同步刪除。

        • 注釋應(yīng)與其描述的代碼相似,對代碼注釋應(yīng)放在其上方或右方(單條語句的注釋)相應(yīng)的位置,不可放在下面。

        • 注釋上面的代碼應(yīng)空行隔開。

        • 統(tǒng)一文件頭的注釋。

        • 在代碼的功能、意圖層次上進行注釋,提供有用、額外的信息。

        • 函數(shù)應(yīng)對返回代碼詳細描述。

        • 盡量使用”#”進行注釋。

        • 避免在一行代碼或表達式的中間插入注釋。

        • 所有硬編碼必須加注釋,如 id='0' 則需要優(yōu)先注釋 '0'的含義, 或者在注釋中說明對應(yīng)的字典表。

        5.4? 語法規(guī)范

        所有DDL和DML語句盡量遵循標(biāo)準(zhǔn)SQL,以SQL99為基準(zhǔn)。

        說明:采用標(biāo)準(zhǔn)SQL編寫,方便移植時各種數(shù)據(jù)庫之間做對應(yīng)修改。

        正例:

        delete from table1;

        反例:

        delete table1;

        數(shù)據(jù)類型采用基本數(shù)據(jù)類型,盡量不要使用某數(shù)據(jù)庫特有的類型。

        說明:采用基本數(shù)據(jù)類型,各種數(shù)據(jù)庫均支持,減少不同版本的維護。設(shè)計數(shù)據(jù)類型和長度時要考慮應(yīng)用編程開發(fā)的方便以及后續(xù)可維護性。

        • l對于特別復(fù)雜的sql(特別是多層嵌套,帶字句或相關(guān)的查詢),應(yīng)先考慮是否設(shè)計不當(dāng)引起,對復(fù)雜的sql可以通過程序?qū)崿F(xiàn),原則上遵循一句話只做一件事情,避免多重嵌套SQL的使用。必要時采用中間表。

        • 對于超過2個以上的大表關(guān)聯(lián),必須進行執(zhí)行計劃驗證,并在設(shè)計中有所體現(xiàn)。

        • 不要將空的變量值直接與比較運算符比較。如果變量可能為空,應(yīng)該使用is null或is not null來進行比較。

        • 每個程序過程生成的目標(biāo)數(shù)據(jù)表不允許出現(xiàn)空值。

        • 盡可能地使用相關(guān)表字段的類型定義,如%type,%rowtype等。

        • 對數(shù)據(jù)庫腳本代碼中所定義的變量要進行初始化。\

        • ?……

        5.5? 程序結(jié)構(gòu)

        5.5.1 程序結(jié)構(gòu)模板

        定義一個模板供大家參考!


        5.5.2 程序代碼


        5.5.2.1??? 程序代碼規(guī)范

        • 程序代碼段左側(cè)要留有1個縮進(4個空格)。

        • 除特殊程序(如空調(diào)度、日志程序等)外,程序開始、程序結(jié)束、程序出錯時都要記錄日志,日志記錄使用公用的函數(shù)或存儲過程,具體使用方法參見后面日志內(nèi)容。

        • 關(guān)鍵字要換行輸寫,不同行關(guān)鍵字要右對齊。

        • 對于內(nèi)容超過一行的代碼,換行時要有一個縮進,并注意對齊以保證美觀。

        • 每個字段后面都要有字段說明(字段描述、值內(nèi)容、單位等),字段說明要對齊。

        • 字段說明內(nèi)容可以換行,但同樣要與上行字段說明內(nèi)容對齊。

        • 對于比較簡單的SQL語句,也可根據(jù)實際情況寫在一行或幾行中,但多行的要注意縮進,并且要注意美觀性。

        • 對于insert字段數(shù)量比較多的語句,對應(yīng)的select中的字段盡可能定義別名,別名要與insert中字段名相同,這樣很容易找到字段的對應(yīng)關(guān)系。

        • 對于多層嵌套,一定要注意各層嵌套的縮進層次,才能保證代碼良好的可讀性,否則代碼將非常難讀。

        • 關(guān)鍵字、保留字之間必須留有空格。

        • ……

        5.5.2.2??? 程序代碼示例

        XXXX


        5.5.3 程序日志

        5.5.3.1??? 日志分類

        程序日志分為兩種:

        • 一種是記錄程序運行狀態(tài)情況,一個程序運行一次只記錄一條日志,包括程序名稱、目標(biāo)表名、統(tǒng)計時間、程序運行開始和結(jié)束時間、運行狀態(tài)、出錯位置和出錯信息等,用于簡單查詢程序運行情況,以及以后可能的日志監(jiān)控。

        • 一種是記錄程序運行過程情況,一次程序運行會記錄多條日志,每條日志記錄程序中不同階段的運行狀況,用于跟蹤程序中各階段的運行狀況。與單條日志記錄相比,時間上只記錄運行開始時間即可。

        5.5.3.2??? 日志記錄

        考慮如何記錄程序日志,制定日志規(guī)范!


        5.6? 分區(qū)管理規(guī)范

        • 分區(qū)表的分區(qū)增加、分區(qū)刪除操作,統(tǒng)一由分區(qū)控制程序完成,應(yīng)用數(shù)據(jù)處理程序中不允許包含增加、刪除分區(qū)的操作;分區(qū)表清空分區(qū)的操作,應(yīng)在應(yīng)用數(shù)據(jù)處理程序中進行,這樣可以避免因為程序多次運行導(dǎo)致的數(shù)據(jù)重復(fù)。

        • 保留多個周期數(shù)據(jù)的表必須建立分區(qū),分區(qū)鍵可以根據(jù)業(yè)務(wù)需要和數(shù)據(jù)大小分為日、月、年,這樣即可以避免因為表越來越大導(dǎo)致程序運行速度越來越慢,又解決分區(qū)太多浪費空間。全量替換的數(shù)據(jù)表(如維表、臨時表)可以不建立分區(qū)。

        • 日分區(qū)表禁止保留月底最后一天數(shù)據(jù),如果要用到月底最后一天數(shù)據(jù),需要單獨建立月表保存。

        ?

        6?? JAVA編碼規(guī)范

        6.1? 避免引發(fā)錯誤的編寫規(guī)范

        • 使用字符串的equals方法比較判斷時,如有常量字符串,一定要養(yǎng)成常量在前,變量在后的編寫習(xí)慣。

        • 養(yǎng)成這種編碼習(xí)慣能夠有效減少當(dāng)比較的變量是null時發(fā)生空指針的錯誤

        • 在finally中執(zhí)行關(guān)閉操作,能夠確保出現(xiàn)異常時數(shù)據(jù)庫連接、IO讀寫句柄被正常關(guān)閉。

        • ……

        6.2? 編程注意事項說明

        • 明確方法功能,精確(不是近似)地實現(xiàn)方法的設(shè)計。一個方法僅完成一件功能,即時簡單功能也應(yīng)該編寫方法實現(xiàn)。

        • 異常捕獲后,如果不對改異常進行處理,則應(yīng)該記錄日志或使用。

        • 如果是自己拋出的異常,則必須要填寫詳細的異常描述信息,這樣才能方便。

        • 判斷時要注意運算符的優(yōu)先級,并用括號明確表達式的操作順序,避免使用默認(rèn)的優(yōu)先級。

        • 不要在循環(huán)體內(nèi)定義變量。

        • ……

        6.3? 程序排版及注釋規(guī)范

        6.3.1 程序排版

        • 程序塊要采用縮進風(fēng)格編寫,縮進的空格數(shù)為4個。

        • ……

        6.3.2 程序注釋

        • 一般情況下,源程序的有效注釋量必須在30%以上。

        • 類或者接口的注釋需要包含其功能描述、使用方法、注意事項、作者、始于那個版本。

        • ……

        7?? shell編碼規(guī)范

        7.1? shell編程案例

        ?制定程序案例,供大家參考


        --end--


        掃描下方二維碼
        添加好友,備注【交流
        可私聊交流,也可進資源豐富學(xué)習(xí)群

        瀏覽 29
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

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

        手機掃一掃分享

        分享
        舉報
        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>
            少妇边喂奶边被躁bd小说 | 我要看操逼毛片 | 伊人开心网 | 一级特黄色 | 国产美女毛片 | 美女扒开粉嫩尿囗桶爽免费网站 | 99re成人精品视频免费看 | av老司机在线播放 | 国产sm喝尿视频 | 国产午夜一区二区 |