Database-Design
動態表DB設計意見
我需要一些關於“最佳實踐”的建議或意見來清理我一年前所做的(快速而骯髒的)爛攤子(以展示我的想法),它增長得很快。我們在多個遠端站點中有大約 10 個工具(每年增長 5 個工具),我從中收集元數據。我們正在談論 MariaDB :) 我的數據庫目前由大約 20 個較小的表和一個帶有實際元數據的大表組成 - 35 列和大約 800k 條目(大約 200MiB)並且每個月以 100k 條目的速度增長。
除此之外,我需要重組我的數據庫以將列數減少到 20 左右,我可以通過工具動態分離元數據表。
依賴動態表是個好主意嗎?(我認為是的,因為表的數量仍然很低)鑑於我對該數據每小時更新多次統計資訊,我能否獲得顯著的性能提升?(我想也許吧,因為我仍然需要查看這些數據,但不需要過濾得那麼重,當我添加數據集時,我也不需要檢查這麼多行(如果它是分開的)。
ArchiveTables 是舊數據集的好主意嗎?表分區?
親切的問候
約翰內斯
聽起來您的每個工具都需要不同的“視圖”
$$ the same $$數據。
如果是這種情況,那麼為什麼不在 MetaData 表上為每個工具創建一個視圖,並且只返回該工具需要的列呢?
-- Base Table select c1, c2, c3, c4, c5, ..., c35 from MetaData ; -- Tool1 column subset create view Tool1View as select c1, c2, c5 from MetaData ; -- Tool2 column (and row) subset create view Tool2View as select c1, c2, c3, c4 from MetaData where c5 = 'T2Subset' ;
CREATE
並且ALTER
應該在建構應用程序後最小化。像 WordPress 這樣的應用程序是建立在靈活的模式上的,但性能會受到影響。“實體-屬性-值”是他們使用的模式的通用術語。
PARTITIONing
僅在少數情況下有用,例如“清除舊數據”。