Database-Design

動態表DB設計意見

  • January 20, 2022

我需要一些關於“最佳實踐”的建議或意見來清理我一年前所做的(快速而骯髒的)爛攤子(以展示我的想法),它增長得很快。我們在多個遠端站點中有大約 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僅在少數情況下有用,例如“清除舊數據”。

引用自:https://dba.stackexchange.com/questions/306273