Szukasz 100 000 000 szczegółowych rekordów dla 100 000 użytkowników?
Wielu ludzi nie rozumie, że MongoDB jest dobry w skalowaniu poziomym. Skalowanie poziome jest zwykle klasyfikowane jako skalowanie ogromnych pojedynczych kolekcji danych na wielu (wielu) serwerach w ogromnym klastrze.
Tak więc już w przypadku korzystania z pojedynczego zbioru dla typowych danych (tj. Jednej kolekcji o nazwie user
i jednej o nazwie detail
) odpowiadasz głównym celom i kompilacjom MongoDB.
MongoDB, jak wspomniano, przez innych nie jest tak dobry w skalowaniu w pionie w wielu kolekcjach. Na początku ma limit nssize i nawet jeśli początkowe kolekcje 12K to szacowane na w rzeczywistości ze względu na rozmiar indeksu, możesz mieć tylko 5K kolekcji w bazie danych.
Tak więc kolekcja na użytkownika nie jest w ogóle możliwa. Będzie używać MongoDB wbrew jego głównym zasadom.
Posiadanie bazy danych na jednego użytkownika wiąże się z tymi samymi problemami, a może nawet więcej, ze względu na pojedyncze kolekcje na użytkownika.
Nigdy nie spotkałem się z kimś, kto nie jest w stanie przeskalować MongoDB do miliardów, a nawet blisko 100 miliardów (lub więcej) na zoptymalizowanej konfiguracji, jednak nie rozumiem, dlaczego nie jest w stanie; po tym wszystkim Facebook jest w stanie wprowadzić skalę MySQL do 100 miliardów na użytkownika (dla odłamków 32K +), a koncepcja shardingu jest podobna między dwiema bazami danych.
Tak więc istnieje teoria i możliwość. Chodzi przede wszystkim o wybór właściwego schematu i koncepcji odłamków oraz klucza (i serwerów i sieci itd. Itd. Itd.).
Jeśli miałeś okazję napotkać problemy, które można podzielić na dzielenie kolekcji archiwalnych lub usunięte elementy z głównej kolekcji, ale myślę, że to przesada, zamiast tego chcesz mieć pewność, że MongoDB wie, gdzie znajduje się każdy segment Twojego ogromnego zbioru danych. w dowolnym momencie na serwerze głównym i upewnij się, że dane są zawsze gorące, w ten sposób zapytania, które nie wykonują globalnego i rozproszonego OP, powinny być dość szybkie.
Z pewnością nie ostatni 2. –
Z punktu widzenia architektury bazy danych polecam użyć pojedynczego zbioru, ale nie jestem pewien, czy nadal są one skalowane tak dobrze, gdy masz w nich setki * miliardów * rekordów. – Philipp