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

Strumieniowanie danych NoSQL z MongoDB i Kafka

Programiści opisują Kafkę jako „rozproszony, odporny na awarie, o wysokiej przepustowości, pub-sub, system przesyłania wiadomości. „ Kafka jest dobrze znana jako podzielona na partycje, rozproszona i replikowana usługa dziennika zatwierdzania. Zapewnia również funkcjonalność systemu przesyłania wiadomości, ale ma unikalny projekt. Z drugiej strony MongoDB jest znana jako „Baza danych dla gigantyczne pomysły. MongoDB jest w stanie przechowywać dane w dokumentach podobnych do JSON, które mogą mieć różną strukturę, oferując dynamiczny, elastyczny schemat. MongoDB zaprojektowano z myślą o wysokiej dostępności i skalowalności, z wbudowaną replikacją i auto-shardingiem.

MongoDB jest sklasyfikowany w kategorii „Bazy danych”, podczas gdy Kafka należy do kategorii „Kolejka wiadomości” stosu technologicznego. Deweloperzy uważają, że Kafka „wysoka przepustowość”, „rozproszona” i „skalowalna” to kluczowe czynniki; mając na uwadze, że „przechowywanie zorientowane na dokumenty”, „brak SQL” i „łatwość użytkowania” są uważane za główne powody, dla których preferowany jest MongoDB.

Przesyłanie strumieniowe danych w Kafce

W dzisiejszym ekosystemie danych nie ma jednego systemu, który może zapewnić wszystkie wymagane perspektywy, aby zapewnić prawdziwy wgląd w dane. Uzyskanie lepszej wizualizacji wglądu w dane z danych wymaga mieszania ogromnej ilości informacji z wielu źródeł danych. W związku z tym jesteśmy chętni do natychmiastowego uzyskania odpowiedzi; jeśli czas potrzebny na analizę szczegółowych informacji o danych przekracza 10 sekund milisekund, wartość jest tracona lub nieistotna. Aplikacje takie jak wykrywanie oszustw, transakcje o wysokiej częstotliwości i silniki rekomendacji nie mogą sobie pozwolić na czekanie. Ta operacja jest również znana jako analiza napływu danych, zanim zostaną zaktualizowane, ponieważ baza danych z zerową tolerancją na utratę danych, a wyzwanie staje się jeszcze bardziej zniechęcające.

Kafka pomaga pozyskiwać i szybko przenosić niezawodnie duże ilości danych z wielu źródeł danych, a następnie przekierowywać je do systemów, które ich potrzebują, filtrując, agregując i analizując na trasie. Kafka ma wyższą przepustowość, niezawodność i charakterystykę replikacji, skalowalną metodę przesyłania strumieni danych o zdarzeniach od jednego lub większej liczby producentów Kafka do jednego lub większej liczby odbiorców Kafka. Przykłady wydarzeń to:

  • Dane dotyczące zanieczyszczenia powietrza zbierane okresowo
  • Konsument dodający produkt do koszyka w sklepie internetowym
  • Tweet opublikowany z określonym hashtagiem

Strumienie wydarzeń Kafki są przechwytywane i porządkowane w predefiniowane tematy. Producent Kafki wybiera temat do wysłania danego wydarzenia, a konsumenci wybierają, z jakich tematów czerpią wydarzenia. Na przykład aplikacja finansowa giełdy może pobierać transakcje giełdowe z jednego tematu, a informacje finansowe firmy z innego w celu wyszukiwania możliwości handlowych.

Współpraca MongoDB i Kafka stanowi obecnie serce wielu nowoczesnych architektur danych. Kafka została zaprojektowana z myślą o nieograniczonych strumieniach danych, które sekwencyjnie zapisują zdarzenia w dziennikach zatwierdzenia, umożliwiając przenoszenie danych w czasie rzeczywistym między MongoDB a Kafką za pomocą Kafka Connect.

Oficjalny łącznik MongoDB dla Kafki został opracowany i jest obsługiwany przez MongoDB Inc. inżynierowie. Jest on również weryfikowany przez firmę Confluent (która jest pionierem platformy do strumieniowego przesyłania zdarzeń dla przedsiębiorstw), zgodnie z wytycznymi określonymi przez program Verified Integrations firmy Confluent. Łącznik umożliwia skonfigurowanie MongoDB zarówno jako ujścia, jak i źródła Kafki. Łatwo twórz solidne, reaktywne potoki danych, które przesyłają strumieniowo zdarzenia między aplikacjami i usługami w czasie rzeczywistym.

Złącze zlewu MongoDB

Sink MongoDB pozwala nam zapisywać zdarzenia z Kafki do naszej instancji MongoDB. Łącznik Sink konwertuje wartość z Kafka Connect SinkRecords na dokument MongoDB i wykona wstawianie lub upsert w zależności od wybranej konfiguracji. Oczekiwał, że baza danych zostanie utworzona z góry, docelowe kolekcje MongoDB utworzone, jeśli nie istnieją.

Łącznik źródłowy MongoDB Kafka

Łącznik źródłowy MongoDB Kafka przenosi dane z repliki MongoDB do klastra Kafka. Łącznik konfiguruje i wykorzystuje dokumenty zdarzeń strumienia zmian oraz publikuje je w temacie. Strumienie zmian, funkcja wprowadzona w MongoDB 3.6, generują dokumenty zdarzeń, które zawierają zmiany w danych przechowywanych w MongoDB w czasie rzeczywistym i zapewniają gwarancje trwałości, bezpieczeństwa i idempotentności. Strumienie zmian można skonfigurować, aby obserwować zmiany na poziomie kolekcji, bazy danych lub wdrożenia. Używa następujących ustawień do tworzenia strumieni zmian i dostosowywania danych wyjściowych w celu zapisania w klastrze Kafka. Opublikuje zmienione zdarzenia danych w temacie Kafki, który składa się z bazy danych i nazwy kolekcji, z której pochodzi zmiana.

 Przypadki użycia MongoDB i Kafki

Witryny e-commerce

Użyj strony internetowej eCommerce, w której dane inwentaryzacyjne są przechowywane w MongoDB. Gdy stan magazynowy produktu spadnie poniżej określonego progu, firma chciałaby złożyć automatyczne zamówienie na zwiększenie stanu magazynowego. Proces zamawiania jest wykonywany przez inne systemy poza MongoDB, a użycie Kafki jako platformy dla takich systemów sterowanych zdarzeniami jest doskonałym przykładem potęgi MongoDB i Kafki, gdy są używane razem.

Śledzenie aktywności w witrynie

Aktywność w witrynie, taka jak odwiedzane strony lub renderowane reklamy, są rejestrowane w tematach Kafki – jeden temat na typ danych. Tematy te mogą być następnie wykorzystywane przez wiele funkcji, takich jak monitorowanie, analiza w czasie rzeczywistym lub archiwizacja do analizy offline. Wgląd w dane przechowywane w operacyjnej bazie danych, takiej jak MongoDB, gdzie można je analizować wraz z danymi z innych źródeł.

Internet przedmiotów (IoT)

Aplikacje IoT muszą radzić sobie z ogromną liczbą zdarzeń generowanych przez wiele urządzeń. Kafka odgrywa kluczową rolę w dostarczaniu wachlarza i gromadzenia w czasie rzeczywistym wszystkich danych z czujników. Powszechnym przypadkiem użycia jest telematyka, w której diagnostyka z czujników pojazdu musi być odbierana i przetwarzana z powrotem w bazie. Po uchwyceniu w tematach Kafki dane można przetwarzać na wiele sposobów, w tym przetwarzanie strumieniowe lub architektury Lambda. Prawdopodobnie będzie również przechowywany w operacyjnej bazie danych, takiej jak MongoDB, gdzie można go łączyć z innymi przechowywanymi danymi w celu wykonywania analiz w czasie rzeczywistym i obsługi aplikacji operacyjnych, takich jak uruchamianie spersonalizowanych ofert.

Wnioski

MongoDB jest dobrze znana jako nierelacyjne bazy danych, które są publikowane na licencji wolnego i otwartego oprogramowania. MongoDB jest przede wszystkim bazą danych zorientowaną na dokumenty, przeznaczoną do użytku z częściowo ustrukturyzowanymi danymi, takimi jak dokumenty tekstowe. Jest to najpopularniejsza nowoczesna baza danych stworzona do obsługi ogromnych i ogromnych ilości heterogenicznych danych.

Kafka to szeroko popularna platforma do przesyłania strumieniowego rozproszonego, z której korzystają tysiące firm, takich jak New Relic, Uber i Square, do tworzenia skalowalnych, wydajnych i niezawodnych systemów przesyłania strumieniowego w czasie rzeczywistym.

MongoDB i Kafka razem odgrywają kluczową rolę w naszym ekosystemie danych i wielu nowoczesnych architekturach danych.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. wiele instancji Mongo DB na tym samym serwerze

  2. Mongod skarży się, że nie ma folderu /data/db

  3. Importuj plik CSV do MongoDB za pomocą mongoimport

  4. Mongoengine:ConnectionError:Nie zdefiniowałeś domyślnego połączenia

  5. Wstawianie/aktualizacja wsadowa przy użyciu Mongoid?