我目前正在設計一個應用程序,用戶可以在其中創建/加入組,然後在組內發佈內容。我試圖找出如何最好地將這些內容存儲在RDBMS中。動態創建表以存儲用戶內容是否是個好主意?
選項1:爲所有用戶內容創建一個表。此表中的其中一列將是groupID,指定發佈內容的組。使用groupID創建索引,以便快速搜索特定組內的內容。所有的內容讀取/寫入都會打到這張單獨的表格。
選項2:每當用戶創建一個新組時,我們都會動態創建一個新表。類似於group_content_ {groupName}。所有內容讀取/寫入將被路由到特定組的動態創建表。
優點爲選項1:
- 它更容易搜索多個論壇的內容,用一個單一的簡單的查詢,對單個表進行操作。
- 由於內容表是靜態的且定義明確,因此構建簡單的交叉表查詢會更容易。
- 由於只有一個表來維護,因此更容易實現模式更改和對索引/觸發器等的更改。
贊成選項2:
- 所有的讀取和寫入操作將在衆多的表來分配,從而避免可能導致大量的流量創下了單個表中的瓶頸(但無可否認,這些表仍然在一個單一的數據庫中)
- 每個表的大小都會小得多,允許更快的查找,更快的模式更改,更快的索引等。
- 如果我們想在未來分割數據庫,如果所有的數據已經被「分解」,那麼就會更容易nt表。
從性能/開發/維護的角度來看,上述2個選項之間的一般建議是什麼?
我與選項1去。但如果你擔心性能使用分區https://www.postgresql.org/docs/10/static/ddl-partitioning.html –