2014-02-10 36 views
2

我有一個有260列的遺留表:4存儲全局值和256列存儲參數。我需要擴展表來存儲512個值。如何在舊數據庫中存儲500個鍵值對?

最佳解決方案是創建一個只有三列(id,value,parent_id)的子表,並根據需要存儲許多參數。然而,這將需要對代碼進行重大改寫,我不確定其性能。

另一個解決方案是簡單地擴展表(使其更寬)來存儲兩倍的值。這是一個更安全的解決方案,因爲我需要對我的代碼進行微小的更改。此外,新表格將在未來4年內(至少)不會被修改,所以堅持使用它可能是有意義的。

只是爲了提供更多的信息,我的系統沒有單元測試(因此我不願意修改代碼),不使用ORM(因此我需要在代碼編寫和讀取DB),PM擔心第一種解決方案可能比現有解決方案慢。我可以期望在表中存儲10000行,所以建議的子表將會有大約5M行。

任何人都可以給我一個證明,提出的設計實際上比目前的設計更快?設計考慮是不夠的(當前系統工作...)。是否有任何其他好的(或不好的)理由轉向提議的設計?

+0

做孩子的主意。 500個值不會影響性能。如果它們變化不大,請考慮在啓動時將它們緩存在HashMap中。 – Bohemian

回答

2

您正在查看數據庫倉庫和雪花之間的密鑰。

如果這是一個表格,你將要處理大量的讀取和大量的寫入,你有不同的事情需要關注。

將條目插入數據庫後,將其插入到「子表」中,現在將使用512個插入而不是1個。但是,編輯單個參數將修改一個小區域,並且不會影響其他511個區域。我個人認爲512列有點過分,但我會考慮是否有其他關係可以轉化爲邏輯表,而不是我需要的任何值的「匿名錶」,而不是「匿名錶」 。

與所有數據庫的東西,你可以做的最好的事情測試它。只有你知道表最常用的方式,編寫一個插入1M行並讀取1M次的測試非常簡單。

+0

感謝您的回答。我會盡可能做一些測試。 – MicheleFG