No estoy seguro de si los consultores externos serían el mejor soporte para su empresa si va a manejar conjuntos de datos realmente grandes y necesita comenzar desde cero. Por favor, no me malinterpreten, pero si uno arruina un proyecto con tantos clientes, tendrá un impacto de relaciones públicas en su empresa.
Con respecto a las 10 millones de tuplas en una tabla, si tiene una buena indexación, estará bien. Necesitamos almacenar varias tuplas de 100M en una tabla aquí (artículos vendidos) que funciona bien en un gran oráculo 11g
Aquí hay una publicación de 2010 con un mapa de diseño de base de datos de Facebook : diseño de la base de datos de Facebook
Es posible que desee leer la documentación de mysql sobre tipos de particiones como esta: Documentación de MySQL: Particionamiento
MySQL admite estos tipos:
RANGO de particionamiento. Este tipo de particionamiento asigna filas a particiones basadas en valores de columna que se encuentran dentro de un rango dado. Consulte la Sección 18.2.1, “Particionamiento de RANGO”.
LISTA particionamiento. Similar a la partición por RANGE, excepto que la partición se selecciona en base a columnas que coinciden con uno de un conjunto de valores discretos. Consulte la Sección 18.2.2, “Particionamiento LISTA”.
Particionamiento HASH . Con este tipo de particionamiento, se selecciona una partición en función del valor devuelto por una expresión definida por el usuario que opera en valores de columna en filas para insertar en la tabla. La función puede consistir en cualquier expresión válida en MySQL que produzca un valor entero no negativo. También está disponible una extensión para este tipo, LINEAR HASH. Consulte la Sección 18.2.3, “Particionamiento HASH”.
Particionamiento CLAVE . Este tipo de particionamiento es similar al particionamiento por HASH, excepto que solo se suministran una o más columnas a evaluar, y el servidor MySQL proporciona su propia función de hashing. Estas columnas pueden contener valores distintos a los enteros, ya que la función de hash proporcionada por MySQL garantiza un resultado entero independientemente del tipo de datos de la columna. También está disponible una extensión para este tipo, LINEAR KEY. Consulte la Sección 18.2.4, “Particionamiento CLAVE”.
I can't believe they would have one global user table with 950 million entries.
Puedo, no es tan grande. He trabajado con mesas más grandes. Es bastante común. La otra opción que consideraría si tiene muchos otros datos es una base de datos NoSQL .