Ich arbeite gerade an einem Gruppenchat Entwickelt speziell für die Zusammenarbeit von Entwicklern. Ich übertrage gerade das System von nur einer Lobby (Chat-Raum), um jedem Benutzer zu erlauben, ihre eigene einzigartige Lobby (mit einer Lobby-ID) zu haben.Wie organisiere ich meine Datenbank am besten?
ich jedem Benutzer die Lobby-ID zuweisen, so dass, wenn sie sich anmelden die richtigen Nachrichten laden. Um die richtigen Nachrichten für eine bestimmte Lobby anzuzeigen, weise ich in der Datenbank jeder Nachricht die eindeutige Lobby-ID zu. Dies habe ich derzeit umgesetzt.
Allerdings habe ich mich gefragt, ob es eine gute Idee sein würde jeder Lobby seinen eigenen Tisch zu geben, in seine Botschaften zu setzen.
Auf diese Weise eines Tages statt 200.000 Nachrichten in einer Tabelle zu haben, könnten sie sein verteilt zwischen vielen Tabellen und verringert somit die Abfragezeiten.
Vorschläge?
Nein, tu das nicht. Generiere keine Tabellen abhängig vom Inhalt. –
können Sie zwei Tabellen für inaktive Lobby und eine für aktive Lobbys haben. Wenn eine Lobby geschlossen ist, werden ihre Nachrichten in die inaktive Lobbys-Nachricht übertragen. Auf diese Weise können Sie Ihren Tisch so klein wie möglich halten. – Mahmoud
Wie der andere sagte: Tu das nicht. Ihre DB wird nach ein paar Monaten ein Durcheinander sein und Sie werden sicher zu Ihrem Ein-Tisch zurückrollen. [Key Partionning] (http://dev.mysql.com/doc/refman/5.1/de/partitioning-key.html) ist wahrscheinlich ein Track, um zu untersuchen, ob Performance deine Hauptsorge ist. Der Schlüssel sollte natürlich Ihr Chat room_id sein und Ihre Anfragen in einem bestimmten Chat-Raum werden (fast) so ausgeführt, als wären sie in einer separaten Tabelle. –