Schema

無限制地執行數據庫

  • April 13, 2011

我們正在考慮將新的專有高性能數據庫引擎用於 OLAP 和 OLTP 場景。現在它的一個重要方面是它不支持外鍵或其他約束。對於是否應將此限制視為 OLTP 應用程序的非首發,您有何看法?

考慮為任何插入、更新和刪除實現我們自己的引用完整性檢查是不是很瘋狂?

滾動您自己的參照完整性檢查具有以下缺點:

  1. 速度 - 您自己的檢查永遠不會像數據庫內部檢查一樣快。
  2. 完整性 - 當你自己動手時,你總是有可能會錯過一些東西。

如果數據庫引擎的高性能可以彌補損失,速度問題是可以接受的,但使用您自己的檢查可能會失去數據完整性仍然是一個問題。

該系統的數據質量問題的成本是多少?這些成本是否超過了使用這個系統而不是其他一些實際強制引用完整性的系統的好處?

不幸的是,那裡有很多應用程序(尤其是那些“與數據庫無關”的應用程序)實現了自己的約束,而不是依賴數據庫來強制執行關係完整性。他們在確保他們產生的數據是合理的方面取得了截然不同的成功——有些人做得很好,有些人似乎創造了一堆雜亂無章的東西,並稱之為數據。但它們都會產生至少一些無效數據。

鑑於此,問題就變成了無效數據將花費您多少費用才能解開。例如,如果您試圖跟踪證券銷售,任何與有效客戶無關的交易都會產生一個必須追查的問題。另一方面,如果您試圖跟踪內部項目的時間,如果個人工作的一些時間沒有與有效的項目相關聯,那可能只是令人討厭。如果您要花費數千個工時來清理您生成的數據,那麼使用約束的系統將更具成本效益。如果足夠接近就足夠好,那麼實現您自己的約束可能就足夠了。

引用自:https://dba.stackexchange.com/questions/2147