0
我正在開發一個聊天應用程序。您可以與一個人聊天或創建(加入)一個組。我正在考慮數據庫應該如何存儲所有消息。聊天應用程序中的消息數據庫設計
我想出了兩個解決方案:
解決方法1.存儲的所有郵件到一個表;
解決方案2.爲用戶加入的每個人或組創建消息數據庫。
解決方案1很容易實現,但我不知道隨着消息的增長它是否保持良好的性能。
該應用在iOS上運行,我將使用sqlite數據庫。任何意見,將不勝感激。提前致謝。
我正在開發一個聊天應用程序。您可以與一個人聊天或創建(加入)一個組。我正在考慮數據庫應該如何存儲所有消息。聊天應用程序中的消息數據庫設計
我想出了兩個解決方案:
解決方法1.存儲的所有郵件到一個表;
解決方案2.爲用戶加入的每個人或組創建消息數據庫。
解決方案1很容易實現,但我不知道隨着消息的增長它是否保持良好的性能。
該應用在iOS上運行,我將使用sqlite數據庫。任何意見,將不勝感激。提前致謝。
通常,具有相同結構的多個表是數據庫不正確的標誌之一normalized。
如果您有單獨的表格,則不容易編寫必須查看多個人員/組的查詢,例如「我最近經常與誰聊天?」
您的數據庫將以任何方式增長。 通過無需讀取所有數據即可獲得高效的查詢,這可以通過正確編寫查詢並創建適當的索引來完成。
參見Query Planning,The SQLite Query Planner和The Next Generation Query Planner。
感謝您的回答。如果我想通過'date'在組「1000」中選擇最新的10條消息,查詢是否會使數據庫讀取消息表中的所有數據?我認爲你的意見是使用solution1,對嗎? – KudoCC
這取決於查詢和數據庫結構。 –
假設表的屬性是「autoincreasement-id userOrGoupeId groupFlag messageId messageContent date」,並且查詢是「select * message其中groupId = 1000按日期DESC限制10」。我可以使查詢更有效嗎? – KudoCC