Jak wstawić 20 milionów rekordów do bazy danych NoSQL

Opublikowany: 2022-11-24

Istnieją różne sposoby wstawiania 20 milionów rekordów do bazy danych NoSQL. Jednym ze sposobów byłoby użycie funkcji ładowania zbiorczego bazy danych. Wymagałoby to, aby dane były w określonym formacie zrozumiałym dla bazy danych i byłby to najskuteczniejszy sposób ładowania danych. Innym sposobem byłoby użycie skryptu lub aplikacji do wstawiania danych po jednym rekordzie na raz. Byłby to wolniejszy proces, ale nie wymagałby danych w określonym formacie.

Czy Mongodb poradzi sobie z milionami rekordów?

Źródło: freecodecamp.org

Aby przetwarzać miliony rekordów w czasie rzeczywistym, powinieneś używać MongoDB i ElasticSearch. Korzystne byłoby również wykorzystanie tych struktur i pojęć w dużym zbiorze danych .

Optymalizując ogromne wstawki MongoDB, możemy załadować 50 milionów rekordów szybciej o 33%! Na stronie Github Setup znajdziesz kody wszystkich tych programów. Przetestowałem mojego Macbooka Pro z szybkością wysyłania 25–35 Mb/s i szybkością połączenia 25–35 Mb/s. W tym eksperymencie możliwe jest, że wyniki będą się różnić od wyników uzyskanych na gotowym do użycia urządzeniu EC2. Platforma do testowania danych Kaggle to doskonały wybór do testowania danych , ponieważ ma przygotowane zestawy danych. yelp_academic_dataset_review.json, plik o wielkości 5 GB, zawiera 6,9 miliona rekordów. Po odczytaniu pliku przez węzły zapisanie 1 miliona rekordów zajęło Mongo 2,5 godziny.

To narzędzie jest zalecane do generowania nie więcej niż 2 milionów punktów danych. Jednostka bufora Node.js nie może zawierać więcej niż 2 GB plików. To ma sens, że strumienie powinny być tutaj używane. W tym przykładzie możemy wstawić sekwencję 100k z niewielkim opóźnieniem. Włożenie wkładki zajęło 29 minut. Ponieważ EventEmitter jest używany we wszystkich strumieniach, tak jest. To użycie procesora wzrosło do 40%, czyli o 10% więcej niż sekwencyjne wstawienie 100 000.

Liczba IOPS prawie się podwoiła z 50 do 100, a liczba połączeń wzrosła z 40 do 60. Powinien przeglądać każdy folder, czytać plik i zapisywać tam licznik długości tablicy recenzji. Jeśli to podejście sprawdzi się w przyszłości, można je zastosować do późniejszych wstawek; poświęć trochę czasu, aby zobaczyć, jak to działa. W tej sekcji przyjrzeliśmy się, ile czasu zajęłoby odczytanie 51936 folderów i wstawienie 63 milionów rekordów. Musimy wiedzieć, ile folderów zostało odczytanych, aby dotrzeć do kolejnego miliona rekordów, ponieważ wstawianie danych może być później zrównoleglone. Wstawienie 63 milionów rekordów zajmuje systemowi około półtorej godziny. Wcześniej przewidywaliśmy, że będzie to o 33% szybsze niż to!

W ciągu półtorej godziny załadowaliśmy prawie 45 GB danych. IOPS wyniósł 125 przez cały okres, a połączenia przez większość czasu utrzymywały się na poziomie około 100. Teraz, gdy wyniki są już dostępne, myślę, że mogę zacząć planować przyszłość. InsertMany pozwala wstawić 1 milion rekordów w mniej niż minutę. W przypadku ładowania między 1 a 10 metrów Stream API byłby najprawdopodobniej wymagany do zrównoleglenia wstawek. Ponieważ procesor klastra i liczba operacji we/wy na sekundę są tak duże, wydajność aplikacji może znacznie ucierpieć. Uruchom skrypt harmonogramu, aby określić, ile operacji/procesów można wykonać jednocześnie.

MongoDB ma wiele zalet w porównaniu z innymi systemami przechowywania plików, a ponadto jest doskonałym wyborem dla dużych plików. Na początek duże pliki można łatwo przechowywać w bazie danych. Ponadto baza danych ma zdolność przetwarzania dużej liczby obiektów. Wreszcie baza danych jest skalowalna w poziomie, co pozwala na obsługę większej ilości danych bez przeciążania. Jeśli chcesz przechowywać ogromne pliki w bazie danych, MongoDB jest doskonałym wyborem. Korzystanie z niego ma wiele zalet w porównaniu z innymi opcjami przechowywania i skalowalności.

Jaki jest maksymalny rozmiar dokumentu Mongodb?

Źródło: brain-mentors.com

Maksymalny rozmiar dokumentu MongoDB to 16 megabajtów.

Jak wstawić miliony rekordów w Mongodb

Zakładając, że masz działający serwer MongoDB i utworzoną bazę danych oraz kolekcję, możesz wstawiać rekordy za pomocą metody insert(). Ta metoda może przyjmować tablicę dokumentów lub pojedynczy dokument.
Aby wstawić pojedynczy dokument, użyj następującej składni:
db.kolekcja.wstaw(
{
imię: „John Doe”
}
)
Aby wstawić wiele dokumentów, użyj następującej składni:
db.kolekcja.wstaw([
{
imię: „John Doe”
},
{
imię: „Jane Doe”
}
])

Masz kilka opcji. Możliwe jest utworzenie oddzielnej kolekcji dla każdego identyfikatora urządzenia, a następnie osobne zapytanie o ten identyfikator. Jeśli masz wiele urządzeń, może to być kosztowne. Jeśli chcesz wyszukać wszystkie dokumenty w kolekcji, możesz zrobić to samo z tą samą kolekcją dla wszystkich urządzeń. Koszt tej usługi może być zbyt wysoki, jeśli masz dużą liczbę urządzeń. Trzecią opcją jest utworzenie podzielonej kolekcji. Obciążenie zostanie rozłożone na Mongo, co spowoduje szybsze przetwarzanie zapytań . Jeśli chcesz utworzyć kolekcję przy użyciu opcji kolekcji sharded, upewnij się, że opcja shards ma wartość true.

Mongodb: system zarządzania bazą danych Nosql

MongoDB to system zarządzania bazą danych NoSQL stworzony do obsługi dokumentów. Może obsługiwać szeroką gamę plików danych, z domyślnym limitem 100 000 kluczy indeksu na dokument. Platforma MongoDB jest zatem w stanie przechowywać dużą ilość danych bez nadmiernego obciążenia. Wstawianie zbiorcze to wygodna funkcja w MongoDB. Może to być przydatne, jeśli masz dużo danych do dodania, ponieważ umożliwia wstawianie wielu dokumentów jednocześnie.

Limit wstawiania zbiorczego Mongodb

Wersja MongoDB 3.6 daje obecnie 100 000.

Metoda wstawiania zbiorczego umożliwia jednoczesne wstawianie wielu dokumentów do MongoDB. Jako parametr metoda insert generuje tablicę dokumentów. Użytkownicy nie muszą uwzględniać wszystkich pól w swoim zapytaniu. W tym przykładzie użyjmy wiersza poleceń, aby wstawić wiele dokumentów za pomocą wstawiania zbiorczego MongoDB. Masowe wstawianie liczby odbywa się za pomocą metody Bulk.insert(). Ta metoda, wprowadzona po wersji 2.6, jest podobna do nieuporządkowanej wkładki zbiorczej. Najpierw tworzymy uporządkowaną listę samochodów o nazwie carbulk1, a następnie wstawiamy dokumenty, wykonując na nich metodę execute. Ten program Java demonstruje, jak po raz pierwszy uruchamiać różne operacje zbiorcze przy użyciu poleceń powłoki.

Czy Mongodb ma limit?

MongoDB obsługuje zagnieżdżoną głębokość 100 poziomów, więc dokumenty mogą mieć rozmiar nawet 16 MB. Baza danych MongoDB może zawierać maksymalnie 20 GB danych.