Nie jestem pewien, czy zewnętrzni konsultanci byliby lepszym wsparciem dla Twojej firmy, jeśli zamierzasz obsługiwać naprawdę duże zbiory danych i musisz zacząć od zera. Nie zrozumcie mnie źle, ale jeśli spieprzą projekt z tyloma klientami, wpłynie to na PR firmy.
Jeśli chodzi o 10 milionów krotek w jednej tabeli, jeśli masz dobre indeksowanie, będzie dobrze. Musimy tutaj przechowywać kilka 100 mln krotek w jednym stole (sprzedawane przedmioty), co działa dobrze na dużej wyroczni 11g
Oto post z 2010 roku z mapą projektu db facebooks: projekt bazy danych Facebook
Możesz przeczytać dokumentację mysql na temat typów partycji takich jak ta: Dokumentacja MySQL: Partinioning
MySQL obsługuje następujące typy:
Podział ZAKRESU . Ten typ partycjonowania przypisuje wiersze do partycji na podstawie wartości kolumn mieszczących się w danym zakresie. Patrz rozdział 18.2.1, „ZAKRES PARTYCJI”.
Podział LIST . Podobne do partycjonowania według RANGE, z tym wyjątkiem, że partycja jest wybierana na podstawie kolumn pasujących do jednego z zestawu wartości dyskretnych. Patrz rozdział 18.2.2, „Podział listy LIST”.
Partycjonowanie HASH . W przypadku tego rodzaju partycjonowania partycja jest wybierana na podstawie wartości zwróconej przez wyrażenie zdefiniowane przez użytkownika, które działa na wartościach kolumn w wierszach, które mają zostać wstawione do tabeli. Funkcja może składać się z dowolnego wyrażenia poprawnego w MySQL, które daje nieujemną liczbę całkowitą. Dostępne jest również rozszerzenie tego typu, LINEAR HASH. Patrz rozdział 18.2.3, „Partycjonowanie HASH”.
KLUCZOWE partycjonowanie. Ten typ partycjonowania jest podobny do partycjonowania przez HASH, z tym wyjątkiem, że dostarczana jest tylko jedna lub więcej kolumn do oceny, a serwer MySQL zapewnia własną funkcję haszującą. Te kolumny mogą zawierać wartości inne niż liczby całkowite, ponieważ funkcja mieszająca dostarczana przez MySQL gwarantuje wynik w postaci liczby całkowitej niezależnie od typu danych kolumny. Dostępne jest również rozszerzenie tego typu, KLUCZ LINIOWY. Patrz rozdział 18.2.4, „KLUCZOWE partycjonowanie”.
I can't believe they would have one global user table with 950 million entries.
Mogę, to nie jest tak duże. Pracowałem z większymi stołami. To dość powszechne. Inną opcją, którą rozważę, jeśli masz wiele innych danych, jest baza danych NoSQL .