Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Datenbanknormalisierung für Facebook-ähnliches Messaging-System

Du hast recht, so ein großer Tisch ist nicht nutzbar. Wenn Sie ein echtes Nachrichtenverwaltungssystem benötigen, schauen Sie sich besser NoSQL-Lösungen an (wie HBase, Cassandra, MongoDB usw.), Sie müssen einfach alles vergessen, was Sie über relationale Datenbanken wissen.

Mit MySQL können Sie jedoch immer noch etwas Skalierbares tun, wenn Sie die Tabelle in sehr kleine Teile aufteilen. Lassen Sie eine Tabelle Nachrichten von maximal 1.000 Benutzern speichern (Sie müssen alle Nachrichten zweimal schreiben, es sei denn, beide Benutzer stammen aus derselben Tabelle). Halten Sie außerdem nicht mehr als 1.000 Tabellen in einer DB und erstellen Sie automatisch eine weitere, wenn dieses Limit erreicht ist. Das Vorhandensein mehrerer Datenbanken (sogar auf einem physischen Server) macht es dem DBA leicht, jede auf einen neuen Server zu übertragen, wenn der aktuelle überlastet ist. Um Nachrichten eines bestimmten Benutzers zu erhalten, muss Ihr Code die erforderliche DB/Tabelle von einer Karte erhalten, die Sie haben werden.