Я не уверен, что внешние консультанты будут лучшей поддержкой для вашей компании, если вы собираетесь работать с действительно большими наборами данных, и вам нужно начинать с нуля. Пожалуйста, не поймите меня неправильно, но если кто-то испортит проект с таким количеством клиентов, это повлияет на вашу компанию.
Что касается 10М кортежей в одной таблице, если у вас хорошая индексация, все будет хорошо. Нам нужно хранить несколько 100M кортежей в одной таблице здесь (проданные товары), которая отлично работает на большом оракуле 11g
Вот сообщение от 2010 года с картой Facebook db design: дизайн базы данных Facebook
Вы можете прочитать документацию mysql о типах разделов, например: Документация MySQL: Partinioning
MySQL поддерживает эти типы:
ДИАПАЗОН разметки. Этот тип разделения назначает строки разделам на основе значений столбцов, попадающих в заданный диапазон. См. Раздел 18.2.1, «ДИАПАЗОН РАЗДЕЛЕНИЯ».
СПИСОК РАЗДЕЛЕНИЯ. Аналогично разделению по RANGE, за исключением того, что раздел выбирается на основе столбцов, соответствующих одному из набора дискретных значений. См. Раздел 18.2.2, «Разделение списка».
HASH- разделение. При таком типе разбиения раздел выбирается на основе значения, возвращаемого пользовательским выражением, которое оперирует значениями столбцов в строках, которые нужно вставить в таблицу. Функция может состоять из любого выражения, действительного в MySQL, которое выдает неотрицательное целочисленное значение. Расширение для этого типа, LINEAR HASH, также доступно. См. Раздел 18.2.3, «Разделение HASH».
КЛЮЧЕВОЕ РАЗДЕЛЕНИЕ. Этот тип разделения аналогичен разделению с помощью HASH, за исключением того, что предоставляется только один или несколько столбцов для оценки, а сервер MySQL предоставляет свою собственную функцию хеширования. Эти столбцы могут содержать значения, отличные от целочисленных, поскольку функция хеширования, предоставляемая MySQL, гарантирует целочисленный результат независимо от типа данных столбца. Расширение для этого типа, LINEAR KEY, также доступно. См. Раздел 18.2.4, «КЛЮЧЕВОЕ РАЗДЕЛЕНИЕ».
I can't believe they would have one global user table with 950 million entries.
Я могу его не что большой. Я работал с большими таблицами. Это довольно часто. Другой вариант я хотел бы рассмотреть , если у вас есть много других данных является NoSQL базы данных.