Я не впевнений, що зовнішні консультанти будуть кращою підтримкою для вашої компанії, якщо ви збираєтеся обробляти дійсно великі набори даних і вам потрібно починати з місця. Будь ласка, не зрозумійте мене неправильно, але якщо хтось накрутить проект із такою кількістю клієнтів, це вплине на PR на вашу компанію.
Щодо 10М кортежів в одній таблиці, якщо у вас є хороша індексація, це буде добре. Нам потрібно зберігати кілька кортежів 100М в одній таблиці (продані предмети), що чудово працює на великому оракулі 11г
Ось публікація з 2010 року з картою дизайну db design facebooks: Дизайн баз даних Facebook
Ви можете прочитати документацію mysql про такі типи розділів: MySQL документація: Partinioning
MySQL підтримує такі типи:
RANGE розділення. Цей тип розподілу присвоює рядки розділам на основі значень стовпців, що знаходяться в заданому діапазоні. Див. Розділ 18.2.1, "Розділ RANGE".
СПИСОК розділ. Аналогічно поділу 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 .