我必須創建一個數據倉庫(星型模式),並且客戶希望在SQL 2014內存中使用它。我的理解是在內存中有很多FK約束,索引等的限制。這些對我們來說至關重要,因爲我們的事實表的數量是數百萬。作爲另一種選擇,我認爲建議創建一堆非規範化表格,並將它們加入SQL進行報告,而不是與Kimball DWH一起使用。我有大約9個事務和4個主表。在內存數據倉庫還是不行?
有沒有更好的建議或替代方案來解決這個問題?
我必須創建一個數據倉庫(星型模式),並且客戶希望在SQL 2014內存中使用它。我的理解是在內存中有很多FK約束,索引等的限制。這些對我們來說至關重要,因爲我們的事實表的數量是數百萬。作爲另一種選擇,我認爲建議創建一堆非規範化表格,並將它們加入SQL進行報告,而不是與Kimball DWH一起使用。我有大約9個事務和4個主表。在內存數據倉庫還是不行?
有沒有更好的建議或替代方案來解決這個問題?
通常,當您在內存與SQL Server說,這意味着在內存中的OLTP(Hekaton),這是專爲特定的情況下,主要處理在鎖定和鎖定瓶頸。我認爲在這種情況下,這不是你的意思。
微軟也使用內存名稱以clustered columnstore,這在我的腦海裏至少使事情變得相當混亂。羣集列存儲專爲數據倉庫而設計,而不是一般的基於行的方法,它以列格式存儲數據。如果你有企業版,至少值得嘗試事實表。與普通的壓縮表相比,你應該節省大量的空間(我的事實表縮小了75% - 90%,與頁面壓縮的行存儲相比) - 這當然有助於緩存的性能,性能應該是更好,但當然很多取決於你的數據,數據庫結構和查詢。
有相當多的限制太多,最大的可能是那些被你不能有唯一索引或主/外鍵。這個限制在SQL Server 2016中將被刪除,所以如果你可以等到這個限制,或者可以升級一次,那可能不是什麼大問題。
您提到不支持索引。這是真的,但您不需要具有羣集列存儲的其他索引,因爲數據是以列格式存儲的並且是高度壓縮的。
另外一件事情我會注意到,'內存'中的數據倉庫的最大大小會很快被限制。有多少地方可以承受硬件與TB的RAM。就轉向SSD進行對話可能會使實現更有成效。 –
我的客戶堅持使用SQL Server 2014內存。在那種情況下,如果我必須設計一個模式,我可以使用一個外鍵引用事實和暗淡嗎?我以前從來沒有聽說過或做過這樣的事情。 –
@ Arun.K至少我可以在數據倉庫中沒有外鍵的情況下生存 - 並且在ETL中檢索替代鍵檢查行是否存在或無論如何。 –