試論廣東省基礎水文數據庫表結構升級實現技術探討

論文類別:工學論文 > 水利工程論文
論文作者: 林健
上傳時間:2010/6/8 16:54:00

  論文關鍵詞:水文數據庫 表結構 升級
  論文摘要:該文概述了廣東省水文數據庫現狀,討論了水文數據庫表結構3. 0與4. 0的主要差異,針對水文數據庫由表結構升級所要解決的問題,提出了具體的工作流程與解決方法,並用以對表結構3. 0進行優化、調整、補充,完成了表結構到4, 0的升級。
  1我省水文數據庫現狀概述
  水文資料是水利工程的基礎,為了達到準確快速地提供水文資料,資料的科學存儲是個關鍵問題。當前水文資料主要包括:降雨量、蒸發量、水位、流量、含沙量等內容。數據庫是現今企業數據存儲的主要方式,應用數據庫技術來存儲水文觀測資料就形成了水文數據庫。在水文數據庫中數據以表的形式存儲,這些表的名稱、表中每列的名稱、數據類型等稱為表結構。
  廣東省水文數據庫由1991年開始建設,到1998年建成驗收,至今每年都加人新的整編數據。水文數據庫的建立改變了水文資料以紙介質存儲數據的方式,使資料的存儲進人磁介質的時代,以電子版本的方式提供數據極大方便了數據的查詢和使用,為水情專用數據庫、三防指揮系統、流域水信息與管理等許多水利信息化項目提供了方便,在實際生產應用中發揮了重要作用。
  水文數據庫使用SQL SERVER 2000做數據庫管理系統,表結構經歷了由1. 0版本到3. 0版本的演變過程。3. 0版本是一個比較成熟的版本,歷經十年的應用,在水文數據存儲的標準化方面做出了重要貢獻,但在長期的應用中3. 0版本也發現了一些不足之處,於是部水文局組織有關專家在3. 0的基礎上修訂形成了4. 0版本。從而使我省水文數據庫從3, 0版本到4. 0版本的升級成為現實需要解決的問題。
  2水文數據庫表結構3. 0與4. 0的對比
  水文數據庫表結構3. 0主要存在的問題有:①時間維的處理不合理;②一些表表列數太多;③一些有用數據沒有建表存儲;④沒有字典表。
  表結構4. 0針對以上缺點做了改善,首先使用時間數據類型( DT類型)統一時間維的表示,如:逐日平均水位表3. 0表結構如表1;逐日平均水位表4. 0表結構如表2。
试论广东省基础水文数据库表结构升级实现技术探讨
  對比表1、表2可見日平均水位3. 0表結構有66列,而4. 0表結構只有4列,3. 0表結構的時間維中年份、月份、各日在列中表示,4. 0表結構中的時間維統一在一列中表示,這樣極大方便了SQL語句的編寫,而且時間集中到一列上表示有利於隨後的數據分析工作。其次,一個表包含太多的列時,說明這個表缺乏內聚,它試圖存放來自幾類實體的數據,使用垂直分割將一些列移到另一個表中,可以減少表的規模,改善性能。如:表結構3. 0把月、旬、年的數據放在同一表中,導致一個表中有上百的表列,而4. 0把月、旬、年的數據分開到三個表中存放,改善了性能。再次表結構4. 0增加和修改了一些表,使得存儲的內容得到擴充,存儲更加合理高效。如增加了關系線表來存儲水位流量關系,修改了實測大斷面表等。最後表結構4. 0增加了字典表類,這樣有利於元數據的描述和使用。
  3表結構升級實現技術
  3.1表結構升級轉換需要解決的問題
  表結構的升級可能會涉及很多問題,主要要解決的問題有:
  1)新表的建立。新表的建立主要討論新表結構的合理性,確保新表的設立是正確的。
  2)數據質量控制,要控制從舊庫到新庫轉移數據時出現的數據轉換錯誤。新庫中錯誤的數據可能來自於舊庫中的錯誤,也可能來自於轉換程序的錯誤或考慮不周。應該確保新庫的數據質量比舊庫有所提高。
  3)功能恢復,主要是參照完整性、方法(存儲過程、存儲函數、觸發器)、外部程序的恢復。水文數據庫是多應用數據庫,有許多外部程序對其進行訪問,數據庫升級人員對這些程序幾乎是不能控制的,在這種情況下數據庫的修改必然對外部訪問系統造成影響,解決的方法有二:一是進行功能恢復,升級人員與應用程序開發者協作,修改應用程序使其能適應新的數據庫表結構;二是設立過渡期,在這其間使新老數據庫同時運行,原來的應用程序繼續使用老庫,新應用使用新庫。通常會結合使用上述兩種方法,即進行部分功能恢復同時設立過渡期。
  4)數據加載策略,由於水文數據量較大,而且每年都有新增數據,所以數據加載要有增量加載功能。同時,在過渡期間如果數據的增、刪、改比較頻繁,應該保持新舊庫內容的同步。
  3. 2升級轉換的過程
  在生產環境中安全的數據庫升級轉換流程如圖1:
  驗證數據庫是否需要升級轉換是綜合考慮轉化所獲得的價值與投人之比,以確定是否需要這樣的轉換,是否開銷過大。水文部門的數據源很多,如基礎水文數據庫、水情專用數據庫等。升級人員要確定各種數據所放的位置才能引用。數據庫的轉換是一個重復的過程,每次形成一個新表都要經過建表、編寫數據轉換加載及同步代碼、數據加載、結果測試這樣一個過程,只有測試無誤了才進人下一個新表的建立,這種采取每次一小步的辦法容易降低實現程序的復雜性,容易發現轉換錯誤所在。所有新表測試通過後才可以發布使用。
试论广东省基础水文数据库表结构升级实现技术探讨 免費論文下載中心 http://www.hi138.com   3. 3實現方法
  首先對SL324-2005《基礎水文數據庫表結構及標識符標準》(即表結構4. 0 )進行分析以驗證轉化的必要性,由於存放測驗數據的表類是常用的表類,而且測驗數據格式比較固定,表結構比較完善,所以優先轉換該類表,方法如下:
  使用SQL SERVER企業管理器創建新表結構,如圖2。
试论广东省基础水文数据库表结构升级实现技术探讨
  使用T一SQL語言編寫數據轉換與加載程序,如:使用語句(Insert into HY YRZ F select STCD, YR,YRAVZ,YRAVR,YRMXZ,YRMXR,YRMXMD,YRMNZ,YRMNR , YRMNMD from ZMYST where YR = 2007)就可以把表結構3. 0水位月年統計表中2007年的數據增量加載到4. 0的年水位表中。
  如果轉換過程中有類型轉化、數據格式檢測等質量控制要求,則需要用比較復雜的程序段來完成。如:降雨量摘錄表的T一SQL轉換程序如下:
  聲明變量@sled , @ yr , @ and , @ bghrmt , @ edhrmt ,
  @p , @ prm存儲查詢數據
  聲明變量@ bgdt, @ eddt存儲轉換後的時間數據
  創建遊標my_ cursorl關聯到降雨量摘錄表prex
  通過遊標讀一條記錄到變童@sled , @ yr , @ and , @
  bghrmt,@edhrmt,@P,@prm中
  WHILE@@fetch status=0)
  Begin
  處理降雨量結束時間、
  if@edhrmt=2400)
  begin
  處理降雨結束時間為24:00的情況
   end
  else
  if@edhrmt<@bghrmt)
 begin
 處理摘錄時段跨日的情況
 end
  else
  摘錄時段無跨日的情況
  處理降雨量開始時間、
  插人數據、
  insert into hy_prex_ b values(@sled,@bgdt,@eddt,@P,@prm )
  取下一條記錄
  end另外,可使用觸發器保持舊表和新表的同步增刪,這樣當數據加人到舊表或從舊表中刪除數據的時候就通過觸發器在新表中作相應的修改,如:對3. 0中降雨量摘錄表寫插人觸發器,插人相應記錄的T一SQL程序如下:
  Create trigger prex insert On PREX For insert as
  同時寫刪除觸發器,刪除相應記錄的T一SQL程序如下:
  Create trigger prex delete On PREX For delete as
  這樣就維護了舊表到新表的同步更新。
  3. 4成果
  應用以上技術筆者完成了廣東省水文數據庫表結構3. 0到4. 0數值表類的轉化,並通過觸發器同步技術使每年新增資料的轉換過程自動化。通過表結構4. 0的轉換及向用戶提供數據表明,新表結構使用方便,提供的數據格式更為科學合理。而且由於在升級轉換過程中嚴格數據質量控制,改正了舊庫中許多錯誤,統一了數據表達方式,使新庫數據質量得到了提升。
  4結語
  對於規模較大的數據庫表結構,由於不可能一次設計完美,數據庫升級是必要的和常見的。企業數據庫升級是一個復雜的系統過程,需要協調考慮各方面的問題才能較好地完成任務。水文數據庫表結構由3. 0升級到4. 0提升了數據庫的性能,為水文資料使用用戶提供了更優質的服務。 免費論文下載中心 http://www.hi138.com
下载论文

論文《試論廣東省基礎水文數據庫表結構升級實現技術探討》其它版本

水利工程論文服務

網站聲明 | 聯系我們 | 網站地圖 | 論文下載地址 | 代寫論文 | 作者搜索 | 英文版 | 手機版 CopyRight@2008 - 2017 免費論文下載中心 京ICP备17062730号