Postgresql
儲存電子郵件收件箱資訊
我正在開發一個網路郵件客戶端。我想將遠端郵箱資訊儲存在 Postgres 數據庫中。作為一般經驗法則,大多數 IMAP 伺服器將具有類似的預設文件夾結構,如下所示:
- 收件箱
- 草稿
- 發件箱
- 發送資訊
- 垃圾
- 垃圾郵件
等等等等
當我將使用者添加到我的系統時,此資訊將在大多數使用者中重複。所以這是我的問題:
考慮到這些都是小字元串,我最好將所有郵箱資訊儲存在一行中(即:郵箱名稱、屬性、分隔符、parentId、hasChildren)還是應該將郵箱名稱儲存在單獨的表中並加入外鍵?
現在我認為是前者,因為儲存額外資訊的成本可能低於在數據庫中投入更多計算能力以保持相同性能的成本。但在數據庫設計方面我是個新手,我希望我的應用程序能夠很好地擴展。
如果任何特定使用者想要更改任何給定文件夾的名稱,而不為其他所有人更改該名稱,那麼使用外鍵將郵箱表連接到“FolderNames”表將是有問題的。您可以通過在表中設置一個可為空的
CustomFolderName
列來解決此問題mailbox
。根據預期的帳戶數量,將郵箱名稱儲存在
mailbox
表中可能不會影響性能,除非您可能沒有與我們分享詳細資訊。當您說這些是“小字元串”時,如果您的應用程序將文件夾名稱限制為 15 個字元,請不要將列指定為最大長度為 1000 個字元。早期過度考慮優化可能會給開發工作帶來負擔。專注於數據庫,只是不要在開發的最初階段完全過火。無論如何,隨著開發的進展,您很可能會更改結構。確保您使用正確的數據類型將變得更加重要。例如,請不要將日期儲存在字元串列中。使用日期列。如果有時間元素,請使用日期/時間列。不要在 32 位就足夠的情況下使用 128 位整數。