一. 數據倉庫層次結構規范
1.1 基本分層結構
系統的信息模型從存儲的內容方面可以分為,STAGE接口信息模型、ODS/DWD信息模型,MID信息模型、DM信息模型、元數據信息模型。
在各個信息模型中存儲的內容如下描述:
1) SRC接口層信息模型:提供業務系統數據文件的臨時存儲,數據稽核,數據質量保證,屏蔽對業務系統的干擾,對於主動數據采集方式,以文件的方式描述系統與各個專業子系統之間數據接口的內容、格式等信息。與該模型對應的數據是各個專業系統按照該模型的定義傳送來的數據文件。STAGE 是生產系統數據源的直接拷貝,由ETL過程對數據源進行直接抽取,在格式和數據定義上不作任何改變。與生產系統數據的唯一不同是,STAGE層數據具有時間戳。
STAGE層存在的意義在於兩點:
(1) 對數據源作統一的一次性獲取,數據倉庫中其他部分都依賴於STAGE層的數據,不再重復進行抽取,也不在生產系統上作運算,減小生產系統的壓力;
(2) 在生產系統數據已經刷新的情況下,保存一定量的生產系統的歷史數據,以便在二次抽取過程中運算出錯的情況下可以進行回溯。
2) ODS/DWD層(對應原模型的ODS和DW層)信息模型:簡稱DWD層是數據倉庫的細節數據層,是對STAGE層數據進行沉淀,減少了抽取的復雜性,同時ODS/DWD的信息模型組織主要遵循企業業務事務處理的形式,將各個專業數據進行集中。為企業進行經營數據的分析,系統將數據按分析的主題的形式存放,跟STAGE層的粒度一致,屬於分析的公共資源。
3) MID 信息模型:輕度綜合層是新模型增加的數據倉庫中DWD層和DM層之間的一個過渡層次,是對DWD層的生產數據進行輕度綜合和匯總統計。輕度綜合層與DWD的主要區別在於二者的應用領域不同,DWD的數據來源於生產型系統,並為滿足一些不可預見的需求而進行沉淀;輕度綜合層則面向分析型應用進行細粒度的統計和沉淀。
4) DM信息模型:為專題經營分析服務,系統將數據按分析的專題組織成多維庫表的形式存放,屬於分析目標范疇的數據組織與匯總,屬於分析的專有資源。其信息主要來源於DWD 和MID層匯總,反映實時的經營狀況,時間維度為天。而歷史經營狀況的分析,時間維度一般為月,同時也具有季度、年這樣的維度。
5) MDW元數據信息模型:描述數據及其環境的數據,即是對數據資源的描述,是信息共享和交換的基礎和前提,用於描述數據集的內容、質量、表示方式、空間參考、管理方式以及數據集的其他特征。一般來說,它有兩方面的用途。首先,元數據能提供基於用戶的信息,如記錄數據項的業務描述信息的元數據能幫助用戶使用數據。其次,元數據能支持系統對數據的管理和維護, 元數據機制主要支持以下五類系統管理功能:
(1)描述哪些數據在數據倉庫中;
(2)定義要進入數據倉庫中的數據和從數據倉庫中產生的數據;
(3)記錄根據業務事件發生而隨之進行的數據抽取工作時間安排;
(4)記錄並檢測系統數據一致性的要求和執行情況;
(5)衡量數據質量。
1.2 各層物理表前綴
在構建數據倉庫時,至少應該具備以下物理幾層:
聯通數據模型規范要求的層次 |
數據中心物理模型層次名稱 |
物理表前綴 |
|
維度數據層 |
DIM_ |
數據集市層(DM) |
展示層 |
DM_ |
主題域 |
DW_F_ |
|
輕度匯總層(MID) |
輕度匯總層 |
DW_M_ |
細節數據層(ODS/DWD) |
細節數據層 |
DW_V_ |
接口層(STAGE) |
接口層 |
SRC_ |
1.3數據庫對象命名規范
所有數據庫對象名稱均使用26個大寫英文字母、下划線或數字來命名,並不得以下划線開頭。
1.3.1 用戶
用戶名和表空間的名稱應該采用同系統應用相似的英文字符或字符縮寫,表空間所對應的一個或多個物理文件名也應有相關性。用戶創建的數據索引最好和數據文件分開存放在不同表空間,以減少數據爭用和提高響應速度。
以上從邏輯上分出的各數據層應當在數據庫中用戶實現其分離,規定如下:
數據層名稱 |
用戶 |
物理表 |
備注 |
接口層 |
SRC |
SRC |
|
沉淀數據層 |
DW |
DW_V,DW_M,DW_F |
|
數據集市層 |
DM |
DM_ |
|
元數據層 |
MDW |
MDW_ |
目前未設計 |
維度數據層 |
DIM |
DIM_ |
|
1.3.2 數據庫表空間
數據庫表空間命名,原則上以數據倉庫的基本分層結構為准,以TBS_作前綴,為避免單個表空間數據量過大,帶來管理上的不便或者引起I/O瓶頸,對於STAG和ODS/DWD數據量比較大的層,可采用多個表空間存儲數據,單表空間容量不要太大,以便於業務划分和存儲管理為原則,建議單表空間容量控制在800G之內,表空間數據文件建議值為4G。
- 數據表空間
數據倉庫分層結構 |
用戶 |
表空間名 |
數據文件/裸設備 |
STAG |
SRC |
TBS_STAG001 …… TBS_STAGXXX |
2G=<單設備文件<=8G,建議值:4G |
DWD |
DW |
TBS_DWV001 …… TBS_DWVXXX |
存放以dw_v開頭的表 |
INDX_TBS_DMV |
存放以dw_v開頭的表的索引 |
||
MID
|
MID
|
TBS_MID |
同上 |
DM |
DM |
TBS_DM |
同上 |
INDX_TBS_DM |
DM索引 |
||
DIM |
DIM |
TBS_DIM |
同上 |
表名長度不能超過28個字符,表名中含有單詞全部采用單數形式,單詞選擇能夠概括表內容的一個或多個英文單詞,多個單詞間使用下划線分割,單詞如果過長可以使用縮寫形式。
命名規則如下:
表的類型 |
前綴 |
層次 |
說明 |
示例 |
維度表 |
DIM_ |
DIM |
DIM_+主鍵 |
|
客戶視圖 |
DW_V_USER_ DW_M_USER |
DW |
三個視圖 |
|
產品視圖 |
DW_V_PROD_ DW_M_PROD_ |
DW |
|
|
市場營銷視圖 |
DW_V_MART_ DW_M_MART_ |
DW |
|
|
發展域 |
DW_F_DEV_ |
DW |
8個主題域 |
根據業務具體分為: 移動業務DW_F_DEV_M_ 智能網DW_F_DEV_I_ 數固DW_F_DEV_D_ |
收入域 |
DW_F_INCO_ |
DW |
同上 |
|
使用域 |
DW_F_USE_ |
DW |
同上 |
|
增值域 |
DW_F_INC_ |
DW |
|
|
成本域 |
DW_F_COST_ |
DW |
|
|
資源域 |
DW_F_RES_ |
DW |
|
|
競爭域 |
DW_F_COMP_ |
DW |
|
|
服務域 |
DW_F_SERV_ |
DW |
|
1.3.4 數據庫分區表規范
對於海量數據表要考慮設計為分區表。
- 三戶日資料保存一個月,按日期主分區按地區子分區,
- 主分區命名為:P兩位日期編碼(如P01),
- 子分區命名為:P兩位日期編碼_SP地區編碼(如 P01_SP188),並且必須加上月份字段否則沒法區分是那月的資料。
2.三戶月資料按帳期主分區按地區子分區,
主分區命名為:P帳期編碼(如P200701),
子分區命名為:P帳期編碼_SP地區編碼(如 P200701_SP188)。
3.視圖級日數據表按帳期和地區主分區按日期子分區,
主分區命名為:P帳期編碼_地區編碼(如P200701_188),
子分區命名為:P帳期編碼_地區編碼_SP兩位日期編碼(如 P200701_188_SP01)。
4.視圖級月數據表按帳期主分區按地區子分區,
主分區命名為:P帳期編碼 (如P200701),
子分區命名為:P帳期編碼_SP地區編碼(如 P200701_SP188)。
5.主體域級數據按帳期主分區按日期子分區,
主分區格式為:P帳期(如 P200701),
子分區格式為:P帳期_SP兩位日期編碼(如 P200701_SP01)。
老楊讓把主題域建表分區規范改為:
主體域級數據按帳期和地區主分區按日期子分區,
主分區命名為:P帳期編碼_地區編碼(如P200701_188),
子分區命名為:P帳期編碼_地區編碼_SP兩位日期編碼(如 P200701_188_SP01)
1.3.5 數據庫表索引
命名以IDX+表名+一位流水號.例:IDX_ODS_BUSI_USER_1;如果表名過長可以使用縮寫形式
1.3.6 數據庫表鍵值
主鍵命名以PK+表名+一位流水號(1~9).例: PK_DEPT_1 ;如果表名過長可以使用縮寫形式
外鍵命名以FK+表名+一位流水號(1~9).例: FK_DEPT_1;如果表名過長可以使用縮寫形式
1.3.7 數據庫字段命名規范
數據庫字段名中含有單詞選擇能夠概括表內容的一個或多個英文單詞,多個單詞間使用下划線分割,單詞如果過長可以使用縮寫形式。
一些基本字段名示例:
用戶id USER_NO
用戶數 USER_COUNTS
話單數 CDR_NUM
通話時長 CALL_DURATION
計費次數 MOBILE_TIMES
每個字段必須有注釋,並且在生成SQL腳本時一並生成,創建表時必須創建注釋。
保持字段名和類型的一致性,同一字段名在不同表中必需保持同一數據類型。數據類型長度在定義時應稍大於目前標准的長度,用空間來換取將來變更帶來的不便。
1.3.8 數據庫存儲過程規范
(1)存儲過程命名規則:P_目標表。
(2)存儲過程要求有注釋,注釋內容為:列出創建人,創建用途,創建時間。
(3)存儲過程日志規范:
每一存儲過程均應記錄執行存儲過程的日志信息。必須調用專用寫日志的存儲過程,同時有exception時的處理機制。
(4)存儲過程修改規范
修改時應注釋清楚修改人,修改日期,修改原因和修改內容。
1.3.9 數據庫函數命名規范
函數命名規則F_功能,比如F_TRAN_AREA。
1.3.10 據庫觸發器的命名規范
觸發器以TR作為前綴,觸發器名為相應的表的別名加上后綴,INSERT觸發器加‘_INSERT’,Delete觸發器加‘_DELETE’,Update觸發器加‘_UPDATE’,如:TR_CUST_INSERT。
1.3.11 序列命名規范
序列以S作為前綴,序列命名規則為S_字段別名。
二. 實施流程規范(完善中。。)
(1)規划
對實施計划的規划.
(2)設計
設計實施方案(包括統一模型的修改)。
(3)實施
具體實施過程。
(4)測試
對實施結果測試。
(5)反饋
對實施過程中收集到的相關信息(系統需求、實施中遇到的問題和測試結果等)
反饋到相關部門和人員。
三. 數據庫安全管理規范
為了規范管理,做好經營分析數據倉庫的安全管理工作,實現不同的責任人不同的層次,將用戶權限盡可能的管理起來同時又不影響正常工作,需要對數據庫進行安全管理。
數據庫安全管理從以下幾個方面來進行:
3.1. 用戶組管理
對用戶進行分類,目前經營分析應用用戶可以分為如下幾部分
- 前台程序開發人員
- 數據庫開發人員
- 數據庫管理員
- 外部使用人員
數據庫管理人員由項目經理和數據經理來掌控,一般情況下不得使用DBA角色登陸數據庫。
數據人員使用數據庫開發人員角色登陸,每個數據人員一個用戶,歸屬數據庫開發人員組。
前台程序開發人員,由界面開發人員使用,可以查看所有的表,但是無法進行DDL操作。
外部使用人員,主要是面向聯通用戶和臨時用戶
3.2. 用戶權限設定
對不同的用戶組,在不影響正常工作的情況下,對用戶組及用戶權限的設定原則為權限越小越好。
3.3. 用戶密碼管理
對用戶密碼進行限制,必須由2位以上數字,2位以上字符,2位以上特殊字符組成
不允許用戶密碼和用戶名同名
不允許用戶密碼和用戶名相似
3.4. 用戶資源管理
除了系統使用的用戶(SRC/ODS/DW)等外
對用戶使用的系統資源進行限定
限定用戶使用表空間
限定用戶使用臨時表空間
限定用戶使用回滾斷
限定用戶使用內存
3.5. IP限定
對於普通用戶,實行IP和用戶名綁定的策略
對於外部開放用戶,要進行IP申請,由數據經理或者項目經理審核通過后予以開通
3.6. 數據庫監控
數據庫監控,主要對以下幾個方面進行監控:
3.6.1. 數據庫空間占用率
select a.tablespace_name,
free,
total,
round(((b.total-a.free)/b.total),2) 剩余占比
from ( select tablespace_name,round(sum(bytes)/power(1024,3),2) free
from dba_free_space
group by tablespace_name
) a,
( select tablespace_name,round(sum(bytes)/power(1024,3),2) total
from dba_data_files
group by tablespace_name
) b
where a.tablespace_name = b.tablespace_name;
3.6.2. 會話情況
select *
from v$session a,
v$sql b
where a.sql_address = b.address;
3.6.3. aix操作系統中殺掉一些進程的腳本
select 'kill -9 '|| p.spid||'',s.sid
from v$session s,v$process p
where s.paddr = p.addr
and s.username is not null
and s.sid = 54
3.6.4. 查看JOB
SELECT *
FROM User_Jobs
3.6.5. 分區操作
查看分區子分區
SELECT *
FROM ALL_TAB_PARTITIONS
WHERE TABLE_NAME = 'DW_V_USER_MOBILEUSER';
SELECT *
FROM ALL_TAB_SUBPARTITIONS
WHERE TABLE_NAME = 'DW_V_USER_MOBILEUSER';
增加分區
格式:alter table 表名 add partition分區名 values less than (值)
如: alter table dm_reinnet_user add partition p200801 values less than ('200802')
alter table dm_reinnet_user add subpartition p200801_SP001 values ('002')
刪除分區
格式:alter table 表名 drop partition partition 分區名
如: alter table dm_reinnet_user drop partition 200801
alter table dm_reinnet_user drop subpartition p200801_SP001
3.6.6. 數據庫的無效索引
查看目前數據庫中的索引情況
3.6.7. 數據庫的無效對象
查看目前數據庫的對象有效性,主要針對腳本
3.6.8. 數據庫表分區的是否到達限額
查看是否有表分區不滿足需求的情況,這項監控根據具體需求來
3.6.9. 數據庫內存占用情況
查看目前數據庫內存的占用情況
3.6.10.DDL語句的監控
查看各種DDL語句的使用情況,記錄操作者的IP,時間,用戶名等情況
3.6.11.特定DML語句的監控
對某些特定的重要的數據庫對象,記錄DML操作的歷史
3.7. 數據庫審計
3.7.1. 語句審計(Statement Auditing)
對預先指定的某些SQL語句進行審計。這里從SQL語句的角度出發,進行指定。
審計只關心執行的語句。
例如,audit CREATE TABLE;命令,就表明對"create table"語句的執行進行記錄。
不管這語句是否是針對某個對象的操作
3.7.2. 權限審計(Privilege Auditing)
對涉及某些權限的操作進行審計。這里強調"涉及權限"
例如,audit CREATE TABLE;命令,又可以表明對涉及"CREATE TABLE"權限的操作進行審計,所以說,在這 種命令的情況下,既產生一個語句審計,又產生了一個權限審計。有時候"語句審計"和"權限審計"的相 互重復的。這一點可以后面證明。
3.7.3. 對象審計(Object Auditing)
記錄作用在指定對象上的操作。
四.管理說明
4.1 關於數據模型和數據倉庫的管理
為了使數據倉庫安全、層次清晰、版本的穩定以及和總部模型的一致,我們規定數據經理對數據倉庫和數據模型全權負責,具體包括如下:
1. 所有關於數據庫結構的更改都要由數據經理完成,其中包括對控制文件、參數文件、日志文件、表空間等的修改。
2. 刪除原模型中的表、向模型中增加表或者向原有表中增加字段都要讓數據經理知道、批准並且做好修改記錄,修改后的模型以及修改記錄要及時提交到總部的SVN服務器。修改記錄參照:
時間 |
表名稱 |
更改說明 |
修改人 |
備注 |
2007-4-2 |
DW_F_INCO_M_CHARGE_MONTH |
字段IS_GROUP的類型改為VARCHAR2(1) |
屈大虎 |
|
DW_V_USER_CHARGE_DAY |
增加字段AREA_NO、CITY_NO、LONG_TIMES、FLUX、ACCT_MONTH |
|
||
DW_F_DEV_M_ONNET_USER |
更改入網年度字段IINNET_YEAR為入網年月INNET_MONTH; |
|
||
DIM_USER_STATUS |
增加停機類型字段 |
|
||
DW_V_USER_SINGLE_CALL_MONTH |
更名為DW_M_USER_SINGLE_CALL_MONTH |
|
||
2007-4-3 |
DW_V_USER_CDR_NOMASTER |
增加一個無主詳單表(河北需求) |
屈大虎 |
|
DW_M_USER_NAR_STW_DAY |
增加一個神通王用戶日窄表(河北需求) |
|||
DW_M_USER_NAR_STW |
增加一個神通王用戶月窄表(河北需求) |
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|