Ich bin mir nicht sicher, ob externe Berater die bessere Unterstützung für Ihr Unternehmen darstellen, wenn Sie mit sehr großen Datenmengen arbeiten und von Grund auf neu beginnen müssen. Verstehen Sie mich bitte nicht falsch, aber wenn jemand ein Projekt mit so vielen Kunden vermasselt, hat dies PR-Auswirkungen auf Ihr Unternehmen.
In Bezug auf 10 Millionen Tupel in einer Tabelle ist es in Ordnung, wenn Sie eine gute Indizierung haben. Wir müssen hier mehrere 100 Millionen Tupel in einer Tabelle aufbewahren (verkaufte Artikel), was auf einem großen Orakel 11 g gut funktioniert
Hier ist ein Beitrag aus dem Jahr 2010 mit einer Karte von Facebooks DB Design: Facebook-Datenbank-Design
Vielleicht möchten Sie die MySQL-Dokumentation zu Partitionstypen wie folgt lesen: MySQL-Dokumentation: Partitionierung
MySQL unterstützt folgende Typen:
RANGE- Partitionierung. Diese Art der Partitionierung weist Partitionen Zeilen zu, die auf Spaltenwerten basieren, die in einen bestimmten Bereich fallen. Siehe auch Abschnitt 18.2.1, „RANGE-Partitionierung“.
LIST- Partitionierung. Ähnlich wie bei der Partitionierung nach RANGE, mit der Ausnahme, dass die Partition basierend auf Spalten ausgewählt wird, die einem Satz diskreter Werte entsprechen. Siehe auch Abschnitt 18.2.2, „LIST-Partitionierung“.
HASH- Partitionierung. Bei dieser Art der Partitionierung wird eine Partition basierend auf dem Wert ausgewählt, der von einem benutzerdefinierten Ausdruck zurückgegeben wird, der Spaltenwerte in Zeilen verarbeitet, die in die Tabelle eingefügt werden sollen. Die Funktion kann aus einem beliebigen in MySQL gültigen Ausdruck bestehen, der einen nichtnegativen ganzzahligen Wert ergibt. Eine Erweiterung dieses Typs, LINEAR HASH, ist ebenfalls erhältlich. Siehe auch Abschnitt 18.2.3, „HASH-Partitionierung“.
KEY Partitionierung. Diese Art der Partitionierung ähnelt der HASH-Partitionierung, mit der Ausnahme, dass nur eine oder mehrere auszuwertende Spalten angegeben werden und der MySQL-Server eine eigene Hashing-Funktion bietet. Diese Spalten können andere als ganzzahlige Werte enthalten, da die von MySQL bereitgestellte Hashing-Funktion unabhängig vom Spaltendatentyp ein ganzzahliges Ergebnis garantiert. Eine Erweiterung dieses Typs, LINEAR KEY, ist ebenfalls verfügbar. Siehe auch Abschnitt 18.2.4, „KEY-Partitionierung“.
I can't believe they would have one global user table with 950 million entries.
Ich kann, es ist nicht so groß. Ich habe mit größeren Tischen gearbeitet. Es ist ziemlich häufig. Die andere Option, die ich in Betracht ziehen würde, wenn Sie viele andere Daten haben, ist eine NoSQL- Datenbank.