2010-07-08 33 views

回答

1

查詢通常不被認爲是確定性的,因爲基礎表可以在調用之間改變。在討論UDF時,決定論通常只會發揮作用。

+0

我知道決定論並不真正與查詢有關。但是有一個業務需求(用於審計目的)查詢結果必須是可重現的。 – Josh 2010-07-08 00:24:28

+0

確保這一點的唯一方法是絕對不允許對查詢中引用的行進行更新或刪除。如果你有一對多的關係,即使插入有問題。這裏最好的辦法是以某種方式將實際的查詢結果(可能作爲報告)進行歸檔,以便稍後生成。 – Donnie 2010-07-08 00:27:21

+0

我們不允許更新或刪除,但我們允許插入。正如你所提到的,當存在一對多關係時會產生問題。我真正追求的是檢查查詢沒有處理的沒有一對多關係的人。 – Josh 2010-07-08 00:30:49

0

我知道在數據庫中生成確定性數據的唯一方法是在適當的時間點創建必要數據的快照。通常情況下,數據將被轉換並加載到數據倉庫中,以及要歸檔的行的時間戳,以供日後檢索。可以針對數據倉庫運行審計和其他類型的報告查詢,並且結果對於任何給定的時間段都是「確定性的」,但不是跨越時間段。

如果需要,安置在數據倉庫中的信息也可以預先計算到多維立方體中以加快處理速度。爲了保持適當的表格,數據倉庫表只能插入到數據倉庫表中,並且新的批次數據應始終與唯一的時間戳相關聯。通常最好以star or snowflake schema的某種形式存儲數據,這有助於在必要時生成立方體。