熱點推薦:
您现在的位置: 電腦知識網 >> 操作系統 >> Windows系統管理 >> 正文

數據訪問技術

2022-06-13   來源: Windows系統管理 

  通常您不會將 Pi 計算到小數點後第 n 位或是沒事訓練神經網絡您是在訪問一個數據庫對它進行查詢和更新並且在訪問數據庫方面遇到麻煩對數據訪問技術的正確使用加上對後端數據庫的了解對保持高性能和持續可擴展性需求很關鍵下面是可能想從業務層考慮的一些問題
  
  使用最新版本的 Microsoft 數據訪問組件
  
  Windows 附帶了Microsoft 數據訪問組件 (MDAC) 該 MDAC 版本包括了改進和增加的功能例如不需要創建文件的 XML 集成URL 資源支持和層次結構命名空間導航
  
  MDAC 也可用於運行 Windows NT 和 Windows x 的計算機參見下面的鏈接可以獲得更詳細的信息並可下載
  
  MDAC 包括 MS ODBC 和 OLE DB 組件請使用 MDAC 軟件包中附帶的最新版本組件不要混合和匹配 ODBC 及 OLE DB 組件來創建新口味MDAC 解決方案經過測試並通過離散的 DLL 包進行部署下面的關鍵詞已經過測試其他配置很有可能偶爾使用
  
  參考
  
  從 /data/ 可獲得最新的 MDAC 版本和信息
  
  盡快將 ADO 對象關閉並設置為 Nothing
  
  在使用 ADO 對象時請確保在用完後立即顯式調用 Close 方法並將使用的記錄集和連接設置為 Nothing一種最常見的 ADO 編碼錯誤是在用完對象後忘記關閉雖然顯式關閉對象不是強制的但是這麼做可能是成功或失敗的應用程序之間的差別
  
  將 ADO 對象設置為 Nothing 會清除存儲在 Err 中的錯誤信息如果清除了錯誤處理程序中的 ADO 對象可能會帶來問題因此如果希望存儲該信息請在關閉對象之前的 ADO 對象清除過程中將 NumberSource 和 Description 存入變量
  
  注意 如果要返回斷開連接的記錄集則不應該關閉記錄集關閉記錄集則會取消它的內部高速緩存因此只要將它的 ActiveConnection 設置為 Nothing 就可以了
  
  操作方式
  
  要確認是否正確關閉了 Connection 或 Recordset 對象可以實現下面的代碼
  
  If Not oMyRecordset Is Nothing Then
   If oMyRecordsetState <> Then oMyRecordsetClose
   Set oMyRecordset = Nothing
  End If
  
  正如以前所提到的不能在將返回給客戶機的記錄集中調用 Close 方法
  
  避免復用 ADO 連接對象來執行多個命令
  
  避免在多個數據庫命令上復用打開連接對象也就是說每當需要時請打開使用和關閉連接
  
  在數據庫訪問對象中封裝 ADO 代碼是不會有問題的原因是這些封裝是在無狀態方式下執行的但是如果對象中有 ADO 對象尤其是在類級別上存儲了 ADO 連接那麼請參考下面的知識庫文章主要問題在於如何在執行其他任務時保持打開的數據庫游標如果正在檢索要發送到客戶機的記錄集那麼請從 RDBMS 斷開它們的連接
  
  實現一種復用 ADO 連接對象的方式會大大加重維護任務並且可能導致通過良好封裝能夠避免的設計錯誤ADOOLE DB 層實現了它自己的內部連接池該連接池使下面的流程成為訪問服務器上數據的首選方式
  
  創建 ADO 連接
  
  
  打開連接
  
  
  使用它
  
  
  關閉連接
  
  
  將 ADO 連接對象設為 Nothing
  開發和維護將更方便並且更快速和可擴展
  
  使用 OLE DB 提供程序而不是 ODBC 驅動程序
  
  在通過 ADO 使用 OLE DB 時可以選擇使用本機 OLE DB 提供程序或者選擇能夠轉換並將所有調用轉發給 ODBC 驅動程序的指定的 OLE DB 提供程序(MSDASQL — 即OLE DB Provider for ODBC Drivers)
  
  如果有的話可以使用能夠與數據庫進行本機對話的 OLE DB 提供程序以便獲得更高的性能更多功能轉發兼容性以及參與活躍的 OLE DB 第三方解決方案市場
  
  操作方式
  
  如果下面的任何條件為真就說明正在使用 ODBC
  
  您在 ODBC 管理單元中配置系統用戶文件 DSN以便使用某個應用程序
  
  
  您的連接字符串中包括MSDASQLDSN
  
  
  沒有在連接字符串中指定提供程序
  如果使用的是 ODBC請確定本機提供程序是否訪問有相同功能支持的同一數據庫要查看的關鍵部位是連接池分布式事務支持等等
  
  參考
  
  MDAC 伙伴領域目前市場上的 OLE DB 產品(英文)
  針對 ODBC 編程人員的 OLE DB(英文)
  Merant Corporation(英文)
  
  使用通用數據鏈接 (UDL) 文件來保存連接字符串
  
  使用 UDL 文件存儲數據庫連接的方式和使用ODBC 數據源名稱 (DSN)非常相似UDL 文件存儲 OLE DB 連接信息例如提供程序用戶名密碼和其他選項用存儲在該 UDL 文件中的信息可以打開 ADO 連接從而允許管理員在需要的情況下更改它並且避免了打開注冊表或者使用 ODBC
  
  確保軟件包身份有權讀取該文件並且恰當的管理員有權讀寫該文件(實際上是編輯它)如果是 Web 站點的情況請確保 DLL 和 UDL 文件不在虛擬目錄中否則就可以通過 Web 直接訪問和下載它們了
  
  要創建 UDL 文件請創建一個空文件並用 UDL 擴展名命名它通過雙擊該文件輸入所有信息然後在它的屬性表中輸入信息如下面所示
  
  要用 UDL 打開 ADO 連接請用以下語法
  
  oOConnectionOpen FILE Name=C:\SecureStuff\MyDataLinkUDL
  
  您可以要求管理員將 DLL 和 UDL 都放在同一安全目錄中在這種情況下必須對完整的 UDL 文件路徑進行硬編碼如圖 所示您必須需要設置允許保存存儲完整連接字符串的密碼系統會發出警告指出您正以純文本方式將密碼存儲在文件中如果對此文件設置了正確的 NTFS 權限這不會成為問題
  
  不要將 UDL 文件放在文件共享區中以避免其他服務器都能打開它如果有許多服務器請在每個服務器上保存一個 UDL 文件的副本
  
  
  
  圖 設置允許保存密碼
  
  性能可能是倍受關心的問題畢竟這是對磁盤的訪問對嗎?實際上在使用該技術時文件系統將在內存中緩存該文件而且強度測試表明如果完全可以度量的話在比較它訪問系統或訪問文件 DSN性能的下降是可以忽略的
  
  使用存儲過程而不是動態 SQL 字符串
  
  使用存儲過程有許多優點包括
  
  通過將概念數據命令與命令的實現隔離添加來自數據庫架構的抽象級別存儲過程還使應用程序代碼減少耦合使測試更方便
  
  
  提供更好的代碼分布與構造發送和分析 SQL 字符串加上上面的所有工作相比包裝參數和返回結果集的邏輯要更少
  
  
  由於它們的執行計劃是預編譯的因此在運行時會更有效動態 SQL 串必須包括能夠使它們的查詢計劃優化緩存的參數
  
  
  允許更多的運行時靈活性 — 一旦被部署後要更改在 DLL 中編譯的 SQL 串比更改存儲過程更難
  
  
  由於它們的參數已經聲明了方向和類型因此允許更好的工程代碼
  
  
  允許更好的安全配置使存儲過程限制在不同的應用程序/軟件包標識或者限制在不同服務器應用程序上的不同連接串通常是更容易維護些
  
  
  如果您已經用了存儲過程那麼在需要改變時完成的速度會更快
  操作方式
  
  添加存儲過程是很方便的只要查看 TSQL 中的 CREATE PROCEDURE 語句並按那些准則做就可以了如果在數據訪問對象的實現中選擇使用存儲過程那麼為了維護起見請保持它們的一致性請把它們作為一個整體使用或者完全不用這有助於排除故障有助於為今後的開發而構造的功能不必預言動態 SQL 和存儲過程的混合
  
  使用存儲過程的 OUTPUT 參數以獲得單行返回值
  
  在從數據庫查詢中返回單項數據或者單行時請使用 OUTPUT 參數而不是結果OUTPUT 參數不使用在服務器上構造的任何游標/結果集並且使組件和數據庫之間能進行更有效的數據傳輸
  
  但是根據體系結構的不同您可能不希望單行或多行查詢有不同的代碼路徑必須同時考慮數據庫架構的動態性有了更強大的類型化存儲過程後它們就會更緊密地耦合到您的數據庫和其他情況一樣靈活性和性能是密切相關的
  
  不要在單元之間傳送 ADODBConnection 對象
  
  在數據庫連接的交叉單元/進程匯集上需要注意一些問題我們建議您不要這麼做匯集和數據庫驅動程序的局限性可能會引起一些意想不到的行為
  
  如果這麼做那麼可能需要自己管理連接池並且實現自己的連接分配程序在大多數情況下自己提供池功能可能太困難了通常情況下即使是最嚴格的資源管理器也會允許在同一單元上發生的不同活動上有不同的連接如果 ODBC 驅動程序或者 OLE DB 提供程序允許池(通常是這樣的)那麼請關閉連接再在需要的時候打開它們並且允許 OLE DB/ODBC 層提供基本結構
  
  如果使用交叉單元/進程匯集的原因是為了提供正確的連接串那麼請按前面討論的方式在 SPM 中存儲字符串然後按我們建議的方式重新在每個方法調用中創建連接
  
  記住 ACID 規則
  
  請記住事務操作的規則它通常
From:http://tw.wingwit.com/Article/os/xtgl/201311/9438.html
    推薦文章
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.