MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

MongoDB:miliardy dokumentów w kolekcji

Trudno powiedzieć, jaka jest optymalna wstawka zbiorcza — zależy to częściowo od rozmiaru wstawianych obiektów i innych niemierzalnych czynników. Możesz wypróbować kilka zakresów i zobaczyć, co zapewnia najlepszą wydajność. Alternatywnie, niektórzy ludzie lubią używać mongoimport, który jest dość szybki, ale dane importu muszą być w formacie json lub csv. Oczywiście istnieje mongorestore, jeśli dane są w formacie BSON.

Mongo może z łatwością obsługiwać miliardy dokumentów i może mieć miliardy dokumentów w jednej kolekcji, ale pamiętaj, że maksymalny rozmiar dokumentu to 16mb . W MongoDB jest wielu ludzi z miliardami dokumentów i jest wiele dyskusji na ten temat na Grupa użytkowników MongoDB Google . Oto dokument o korzystaniu z dużej liczby kolekcji, które możesz chcieć przeczytać, jeśli zmienisz zdanie i zamiast tego chcesz mieć wiele kolekcji. Im więcej masz kolekcji, tym więcej będziesz mieć indeksów, co prawdopodobnie nie jest tym, czego chcesz.

Oto prezentacja z Craigslist o wrzuceniu miliardów dokumentów do MongoDB i kolesia wpis na blogu .

Wygląda na to, że sharding byłby dobrym rozwiązaniem dla Ciebie, ale zazwyczaj sharding jest używany do skalowania na wielu serwerach i wiele osób robi to, ponieważ chcą skalować swoje zapisy lub nie są w stanie utrzymać zestawu roboczego (dane i indeksy) w pamięci RAM. Rozsądne jest rozpoczęcie od jednego serwera, a następnie przejście do fragmentu lub zestawu replik w miarę wzrostu danych lub potrzeby dodatkowej redundancji i odporności.

Jednak są inni użytkownicy, którzy używają wielu mongodów, aby ominąć ograniczenia blokowania jednego mongoda z dużą ilością zapisów. To oczywiste, ale nadal warto powiedzieć, ale konfiguracja multi-mongod jest bardziej złożona w zarządzaniu niż pojedynczy serwer. Jeśli twoje IO lub procesor nie są tutaj maksymalne, twój zestaw roboczy jest mniejszy niż pamięć RAM, a twoje dane są łatwe do utrzymania w równowadze (dość losowo dystrybuowane), powinieneś zauważyć poprawę (z shardingiem na jednym serwerze). Jako FYI istnieje możliwość rywalizacji o pamięć i IO. W wersji 2.2 poprawiono współbieżność z db blokowanie , podejrzewam, że powód takiego wdrożenia będzie znacznie mniejszy.

Musisz odpowiednio zaplanować swój ruch do shardingu, czyli dobrze przemyśleć wybór klucza sharda. Jeśli pójdziesz w ten sposób, najlepiej wstępnie podzielić i wyłączyć balanser. Przenoszenie danych w celu utrzymania równowagi przyniesie efekt przeciwny do zamierzonego, co oznacza, że ​​będziesz musiał z góry zdecydować, jak je podzielić. Ponadto czasami ważne jest, aby zaprojektować dokumenty z myślą, że niektóre pola będą przydatne do shardingu lub jako klucz podstawowy.

Oto kilka dobrych linków —



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Wiosenne buty z MongoTemplate

  2. Używanie identyfikatorów UUID w manguście dla odniesień do ObjectID

  3. Jak sortować i ograniczać wyniki w mongodb?

  4. Grupuj MongoDB według czasu trwania

  5. Testowanie i dekrementacja w operacji atomowej?