1. 程式人生 > >資料倉庫物理模型設計規範整理

資料倉庫物理模型設計規範整理

1.背景
日常資料功能開發過程中,會經常要開發人員自己設計物理儲存模型(底層模型),在設計過程中往往會遇到一些設計共性問題,比如:物理模型需要的主鍵採用自然鍵還是業務鍵、相關時間戳欄位(業務相關表和非業務相關表)、冗餘欄位是否需要、是否要保留 “歷史臺賬資訊”、在使用PowerDesigner設計物理表過程中常遇到的問題等等。
2.規範要點
2.1自然鍵OR代理建
自然鍵:由現有實體存在的屬性組成的鍵值,在業務概念上是唯一的。
代理鍵:不具有業務含義的鍵值表示資料唯一。
一個典型的例子,對於自然人唯一性的判別,可以以姓名+身份證件型別+身份證件號碼為主唯一標識,但實際我們儲存的時候並沒有採用這三個屬性欄位作為唯一鍵,而是採用了自增序列的代理鍵,登記序號作為唯一鍵。
對於自然鍵,它不需要引入一個新的“非自然”列,並且與業務直接緊密耦合,很清楚透過自然鍵就可以明確業務上唯一的標準。但是,自然鍵正是由於直接對接業務屬性值,當業務需求發生變更時,可能導致屬性發生變更,唯一鍵可能就要重新指定。
對於代理鍵,需要引入一個新的“非自然”列,它不與業務直接耦合,更容易維護。當業務需求發生變更時,不會對它產生影響。從某種意義上講代理鍵可以看做是直接物理儲存唯一性的鍵值。但其自身由於跟業務沒有直接耦合,通常是“不可讀”的,無法通過一個代理鍵值直接定位出資料的業務含義。
這兩種鍵型別,並沒有說哪種是最優的,在模型設計中,該如何選用根據實際情況來定奪,選擇更合適的。
2.2 時間戳欄位
資料的變化一般是發生在欄位一級的,在欄位一級新增跟蹤時間,即給每一個欄位蓋上一個時間戳。該方法是反映資料變化最詳細的記錄標識,但也因此會大大增加資料儲存量,一般不會採用。我們一般會在行級新增時間戳,當資料發生變化時,此欄位同時被修改。在資料抽取程式中,時間戳是非常重要的欄位,通過系統時間與時間戳欄位的值來決定抽取哪些資料。資料庫快照就是在該層次上隱式或顯式地加蓋時間戳,所有時間推移線上的資料庫變化,基本都是基於時間戳來體現。
2.3 可變性質冗餘欄位保留與否


2.4 元資料欄位的統一性
元資料是資料倉庫環境的一個重要組成部分。所謂元資料就是資料的資料(可以理解為定義資料的資料)。對於目前我們使用的自然庫來說,最為重要並且目前問題較多的地方在於,同一種實體的某種屬性(ERD的關鍵字物理上暫時理解為欄位列)在物理化為不同物理儲存時發生了變化,這種變化即有名稱上的變化也有屬性度量上的變化。即:物理表從源端歸集到自然庫時,對於相同意義的欄位,在不同表裡定義不一致。
在資料倉庫中,相同意義的欄位屬性應該統一定義,或者定義為具有關聯性的欄位。前期建設或後期擴建時進行統一處理轉化定義。對於提到的統一定義,即名稱和欄位長度屬性保持一致,在元資料中只有一條定義資料與實體屬性對應。例如:自然人的姓名欄位,在DJ_ZRR表中定位XM,在其他表裡涉及到此欄位對應的屬性時也應該統一使用XM定義。實際中在不同的表裡定義是不同的,比如在核心徵管中涉及到自然人姓名的定義各式各樣不盡相同。這樣的資料,如果歸集到自然庫不做統一處理轉化時,就會出現當姓名發生定義的變更時,很難全部將所有自然人姓名進行修改,總會那麼幾個被遺漏。
在實際設計中,我們經常會遇到在源系統中同一物理欄位對應著不同ERD實體的屬性。比如:DJXH在源系統中,企業登記表與自然人登記表不同物理表裡儲存的資料物件完全不一樣,但是欄位定義卻一致。當兩種資料放到同一個物理表時為了加以區分就會做名稱的調整,在原有欄位前面加上來源命名簡稱字首做以區分,這樣就涉及到了在元資料統一時做到關聯性。如:DJXH ----- DJXH_ZRR、DJXH_QY。當發生DJXH定義調整時,就可關聯到所有DJXH相關定義的欄位,對其進行統一修改。
當一張物理表某幾個欄位被冗餘到另外一張物理表中,為了與被冗餘表的相同欄位(或者不相同,為了區分是被冗餘的欄位)加以區分,一般是將冗餘表表名或者簡稱加到欄位後邊,如:SB_SBXX表的LRRQ欄位,冗餘到SB_KJGRSDSBGB_MX表中,欄位命名為LRRQ_SBXX。
2.5分割槽表主鍵OR唯一分割槽索引
對於分割槽表不建議使用主鍵,因為在建立主鍵的同時,會自動建立全域性唯一索引,當刪除分割槽、TRUNCATE分割槽、交換分割槽等會造成主鍵和全域性索引的失效。事後要重建,則會因為資料量非常大導致重建主鍵要花很長時間,並且有時在刪除主鍵重建時發現,主鍵被成功刪除,但唯一索引卻沒有被同時刪掉。所以,建議採用本地分割槽唯一索引,如果分割槽欄位設計合理,使用分割槽索引要比全域性索引效率高一些,而且主鍵和唯一分割槽索引的效率大體相當,當發生上述的刪除分割槽、分割槽交換等操作時,只會對相關分割槽產生影響,重建時也只需要重建相關分割槽對應的唯一索引。
建立分割槽唯一索引時,只需要建立唯一索引時包含分割槽鍵即可。如:SDFX_ZRRNSD表,主鍵為:PK_SDFX_ZRRNSD (CYZXH+SDNF+GRSDSSDXM_DM),由於已經包含分割槽鍵SDNF,可以直接修改為分割槽唯一索引:
CREATE UNIQUE INDEX  IDX_SDFX_ZRRNSD_1  
ON SDFX_ZRRNSD(CYZXH,GRSDSSDXM_DM,SDNF) 
LOCAL TABLESPACE TS_GS_ZRRSJK_IDX;
2.6命名規範
2.6.1表命名
2.6.2 檢視命名
3. 使用PowerDesign設計過程中的注意事項
在使用PowerDesign設計物理表過程中,對於物理表的code、name、comment 以及欄位相關的code、name、comment、default value是否要預設等都有一定的規範和要求。主鍵所帶的唯一索引要指定索引表空間、普通索引、唯一索引也要指定索引表空間以及命名規範等。
3.1 物理模型設計
3.1.1物理表設計
表名的code要大寫、name 為中文名稱、表的comment為表的詳細說明
對於表的Owner不建議勾選,預設為None
欄位的comment為欄位詳細註釋、name為欄位簡要說明、欄位的code要大寫
欄位型別要大寫
不建議在模型表裡,直接定義default value 的值
主鍵定義:PK + table Name  如:PK_DJ_ZRR;同時應該指定主鍵使用索引儲存表空間
索引定義:IDX_ 開頭,後面跟表名(可以簡寫)加上欄位名,同時指定儲存的索引表空間
對於本地分割槽索引有個local屬性需要新增,這個在PowerDesign上不好加,可以選擇在索引的【Physical Option】裡的SQL框裡直接填寫,如:
 


3.1.2檢視設計
檢視的name為中文名稱、code需要大寫、comment為檢視的詳細說明
檢視的Owner預設為None
檢視的Usage預設為updatable
檢視模型的【oracle】屬性中勾選強制建立的【Force】選項
檢視SQL定義的末尾不要出現結束的分號“;”以及註釋
分號以及註釋會導致PowerDesign生成檢視定義語句時報錯
 

相關推薦

資料倉庫物理模型設計規範整理

1.背景日常資料功能開發過程中,會經常要開發人員自己設計物理儲存模型(底層模型),在設計過程中往往會遇到一些設計共性問題,比如:物理模型需要的主鍵採用自然鍵還是業務鍵、相關時間戳欄位(業務相關表和非業務相關表)、冗餘欄位是否需要、是否要保留 “歷史臺賬資訊”、在使用Power

資料倉庫專題20-案例篇:電商領域資料主題域模型設計v0.1(改進意見徵集中)

一、電商分類(平臺+自營+複合)  (1)平臺型電商:淘寶+天貓+百度Mall等;  (2)自營型電商:         2.1 綜合型:京東(早期)+噹噹(早期);         2.2 垂直型:好像這種型別越來越少了;  (3)複合型電商(平臺+自營):京東+噹噹+

UI設計規範整理一iOS字體和切圖及規範

icon 頁面設計 nologin 例如 必須 協作 設計規範 ogr 喜歡 UI設計規範一iOS字體和切圖及規範 說明: 1.對象為程序員等開發人員。 2.方法有千種,僅供參考。 3.文檔的本質是備份與查看,對外方便協作與對內提升效率。 4.文檔不是萬能的,如果文檔查看

Hbase架構及工作原理、資料物理模型、Hbase優化

 一、HBase 簡介 1.HBase 概述 HBase 是一個構建在HDFS之上的,分散式的、面向列的開源資料庫 HBase 是 Google BigTable的開源實現,它主要用於儲存海量資料 個人理解:      

2018最新iOS端介面UI設計規範整理

轉自:http://www.shui-mai.com/2018zuixiniosduanjiemianuishejiguifanzhengli/在iPhone 6還沒出的時候,都是用640×1136 px來做設計稿的,自從6的釋出,所有的設計稿尺寸以750×1334 px來做

安卓app設計規範整理和Android APP設計

隨著安卓智慧手機不停的更新換代。安卓手機系統越來越完美,螢幕尺寸也越來越大啦!比如最近小米的miui 6的釋出和魅族手機系統的更新等等。 以小米MIUI6的安卓手機來說,MIUI6進行了全新設計,堅持“內容才是本質”的設計哲學,重新提煉內容,簡化圖示設計。 所以

Hive學習(六)資料倉庫的表設計

資料倉庫的起源可以追溯到計算機與資訊系統發展的初期。它是資訊科技長期複雜演化的產物,並且直到今天這種演化仍然在繼續進行著。而資料倉庫容易讓人糊塗的地方在於它是一種體系結構,而不是一種技術。這點使得許多技術人員和風投都感到沮喪,因為他們希望的是打好成包的專業技術,而非具有哲學意

三個例子,讓你看懂資料倉庫多維資料模型設計

一、概述   多維資料模型是最流行的資料倉庫的資料模型,多維資料模型最典型的資料模式包括星型模式、雪花模式和事實星座模式,本文以例項方式展示三者的模式和區別。 二、星型模式(star schema)   星型模式的核心是一個大的中心表(事實表),一組小的附屬表(維表)。

資料倉庫設計規範

名詞 名詞簡稱 名詞解釋 Data Warehouse DW 資料倉庫主體 Operational Data Store ODS

資料倉庫】1.資料模型

0x00 前言 翻出來之前零零散散寫的資料倉庫的內容,重新修正整理成一個系列,此為第一篇《資料模型》。 資料倉庫包含的內容很多,比如系統架構、建模和方法論。對應到具體工作中的話,它可以包含下面的這些內容: 以Hadoop、Spark、Hive等元件為中心的資料架構體系

資料倉庫】6. ETL 的設計

0x00 前言 資料倉庫體系裡面的主要內容也寫的差不多了,現在補一點之前遺漏的點。這一篇就來聊一下 ETL。 文章結構 先聊一下什麼是 ETL。 聊一下大致的概念和一般意義上的理解。 聊一聊資料流是什麼樣子。因為 ETL 的工作主要會體現在一條條的資料處理流上,因此這裡做一個

5資料倉庫的架構與設計

公司之前的資料都是直接傳到Hdfs上進行操作,沒有一個數據倉庫,趁著最近空出幾臺伺服器,搭了個簡陋的資料倉庫,這裡記錄一下資料倉庫的一些知識。涉及的主要內容有: 什麼是資料倉庫? 資料倉庫的架構 資料倉庫多維資料模型的設計 1. 什麼是資料倉庫 1.1 資料倉庫的概念 官方定義 資料倉庫是一

資料倉庫】5.如何優雅地設計資料分層

0x00 前言 一、文章主題 本文主要講解資料倉庫的一個重要環節:如何設計資料分層!其它關於資料倉庫的內容可參考之前的文章。 本文對資料分層的討論適合下面一些場景,超過該範圍場景 or 資料倉庫經驗豐富的大神就不必浪費時間看了。 資料建設剛起步,大部分的資

資料倉庫中的幾種資料模型

資料倉庫中常見的模型有:正規化建模,雪花模型,星型建模,事實星座模型. 星型模型 星型模型是資料集市維度建模中推薦的建模方法。星型模型是以事實表為中心,所有的維度表直接連線在事實表上,像星星一樣。星型模型的特點是資料組織直觀,執行效率高。因為在資料集市的建設過程中,資料經過了預

Django資料模型--欄位整理

一、欄位 1.CharField: 欄位資料型別為字串 class Test(models.Model): test = models.CharField(max_length=) 2.IntegerField: 欄位資料型別為整形 3.BooleanFi

收集整理mysql資料庫設計規範與原則

1、 資料庫命名規範  採用26個英文字母(區分大小寫)和0-9的自然數(經常不需要)加上下劃線'_'組成;命名簡潔明確(長度不能超過30個字元);例如:user, stat, log, 也可以wifi_user, wifi_stat, wifi_log給資料庫加個字首;除非是備份資料庫可以加0-9的自然數:

時序資料庫技術體系(一):時序資料儲存模型設計

時序資料庫技術體系中一個非常重要的技術點是時序資料模型設計,不同的時序系統有不同的設計模式,而不同的設計模式對時序資料的讀寫效能、資料壓縮效率等各個方面都有非常重要的影響。這篇文章筆者將會分別針對OpenTSDB、Druid、InfluxDB以及Beringei這四個時序系統中的時序資料模型設計進行

【網站點選流資料分析】05-資料倉庫設計

採用星型模型  1、事實表 原始資料表:t_origin_weblog valid string 是否有效

資料庫設計---PowerDesigner(物理模型和概念模型

上一篇介紹了個工具建資料庫:PowerDesigner V16.5 安裝教程以及漢化(資料庫建模)?,現在我就說一下怎麼用這個建資料庫吧。 1、首先新建模型--選擇概念模型(CDM) 2、新建實體(學生和卡),設定相應的屬性

資料模組開發----資料倉庫設計

1. 維度建模基本概念 維度建模(dimensional modeling)是專門用於分析型資料庫、資料倉庫、資料集市建模的方法。資料集市可以理解為是一種"小型資料倉庫"。 維度表(dimension) 維度表示你要對資料進行分析時所用的一個量,比如你要分析產品銷售情況