我想知道如果你認爲這是合理的,使用monetdb(或另一個列式數據庫)將所有數據放在一個大的平坦表中,而不是將它分解成幾個相關的表。使用類似MonetDB的列式數據庫來避免維度建模?
例如,二手車,平的數據庫,可能看起來像:
Make Model Year Color Mileage
Chevy Malibu 2009 orange 102100
Chevy Malibu 2009 orange 98112
Chevy Malibu 2008 orange 210232
Chevy Malibu 2009 pink 150100
注意到在化妝示範歲的顏色冗餘,在SQL數據庫或Excel電子表格或什麼的,你可能有兩個表所示:
mId Make Model Year Color
1 Chevy Malibu 2009 orange
2 Chevy Malibu 2008 orange
3 Chevy Malibu 2009 pink
mId Mileage
1 102100
1 98112
2 210232
3 150100
這有助於在更復雜的查詢費用的冗餘和不必考慮如何分解(分手)的表。
我正在閱讀關於柱狀數據庫和monetdb特別。看起來好像,因爲monetdb單獨壓縮列,所以冗餘無關緊要,您可以使用扁平表,期望相同或更好的性能(查詢時間,磁盤使用率),這是一個良好分解的關係表集合。這可以節省設計工作量,但通過避免它,甚至可以讓您完全自動化模式設計。
您認爲如何?有沒有我看不到的隱藏成本?
SQL Server,Oracle等也都可以壓縮數據,往往很好。這個問題通常不是規模,甚至不是性能,這是通過建立未正確規範化的模型不可避免地引入的邏輯錯誤。面向列的數據庫非常棒 - 用於分析,而不是事務處理。列壓縮在那裏是有益的,因爲星形和雪花模式預計會有很多列,每列都有很多行的相當窄的列。但是這些模式對OLTP來說是非常糟糕的選擇。 – Aaronaught
我可以有你當前的觀點,因爲我也在研究用柱狀數據庫替換/使用星型模式設計的方法。任何幫助材料,你可以參考。 –
爲正確的用例創建了列數據庫。這些用例與我們目前在關係規範化數據庫中的用例不同。我們無法將所有內容都放在柱狀數據庫中。列式數據庫不適用於需要頻繁更新的數據。 – v83rahul