MongoDB nie wymaga przedstawiania. Od czasu debiutu w 2007 roku baza danych dokumentów stale rosła na popularności i jest obecnie piątą bazą danych w rankingu na świecie według DB Engines. Teraz podąża tylko za Oracle, MySQL, SQL Server i PostgreSQL. Jest to tym bardziej imponujące, jeśli weźmie się pod uwagę, że cztery najlepsze to tradycyjne relacyjne bazy danych, które pojawiły się w poprzednim stuleciu. MongoDB jest numerem jeden wśród nowej generacji skalowalnych, rozproszonych baz danych „NoSQL”.
Rtęciowy wzrost MongoDB można przypisać silnemu skupieniu się na doświadczeniu programisty. Sam produkt jest prosty, łatwy w użyciu i zapewnia szczęśliwą drogę od prototypu do produkcji. Podczas wypróbowywania MongoDB programiści z powodzeniem przenoszą działające prototypy do pełnych wdrożeń produkcyjnych. To jest historia do zapamiętania.
Podczas gdy MongoDB uprościł tworzenie baz danych dla milionów programistów na całym świecie, Redpanda ma podobną misję, polegającą na uproszczeniu aplikacji do przesyłania strumieniowego w czasie rzeczywistym. Od samego początku Redpanda była budowana z takim samym zaangażowaniem w prostotę, łatwość użytkowania i, co najważniejsze, produktywność programistów.
Różne, ale takie same
Podczas gdy MongoDB i Redpanda zajmują się różnymi częściami stosu technologicznego, warto zauważyć podobieństwa w tym, w jaki sposób zapewniają przyjemne wrażenia programistyczne indywidualnie i jak uzupełniają się nawzajem w połączeniu. To znaczy:
- MongoDB jest dostarczany jako pojedynczy plik binarny. Podobnie Redpanda. W przeciwieństwie do innych porównywalnych platform do przesyłania strumieniowego, Redpanda nie jest uzależniona od usług zewnętrznych, takich jak Apache Zookeeper. Dzięki temu Redpanda jest tak łatwa do zainstalowania za pomocą menedżerów pakietów, jak lokalnie na laptopie programisty. Jest również dostarczany jako obraz Docker, dzięki czemu można go rozkręcić za pomocą Docker Compose, zintegrować z potokami CI/CD lub wdrożyć w Kubernetes za pomocą prostego kontrolera.
- Zarówno Redpanda, jak i MongoDB to systemy rozproszone. Aby osiągnąć skalowalność i odporność, wystarczy zainstalować dokładnie ten sam plik binarny na wielu serwerach i wskazać je sobie nawzajem. Pozwala to programistom i architektom na odkładanie decyzji dotyczących skalowalności i wydajności na wczesnym etapie procesu projektowania. Model mentalny i kod aplikacji są takie same, niezależnie od tego, czy są uruchomione na laptopie, jednordzeniowej maszynie wirtualnej, czy na kilku wydajnych serwerach produkcyjnych.
- Zarówno Redpanda, jak i MongoDB są dostarczane z rozsądnymi ustawieniami domyślnymi. Minimalizuje to liczbę pokręteł, które programiści lub administratorzy muszą dostroić, niezależnie od tego, czy tworzą środowisko prototypowe (jak w przypadku Docker Compose), czy udostępniają klaster produkcyjny. Redpanda idzie jeszcze dalej dzięki możliwości automatycznego dostrajania do podstawowego sprzętu, co pozwala zmaksymalizować dostępne zasoby procesora, pamięci i dysku przy minimalnym wysiłku.
- Obciążenie poznawcze dla programistów to nie tylko skalowalność bajtów na sekundę, ale także konieczność decydowania, jaki kształt nadać danym i jakie typy wybrać. MongoDB zapewnia programistom elastyczność w rozwijaniu schematu w czasie za pomocą przyjaznego modelu danych podobnego do JSON. Podobnie zdarzenia i komunikaty wysyłane do Redpanda nie wymagają z góry schematu. Istnieje jednak możliwość korzystania ze schematu w razie potrzeby i rozwijania schematu w celu dopasowania do zmieniających się potrzeb biznesowych.
Łączenie MongoDB z Redpanda
MongoDB integruje się z Redpanda na dwa sposoby:jako sink, w którym zdarzenia Redpanda są zużywane i wysyłane do MongoDB w celu wstawienia lub aktualizacji, lub jako źródło CDC, gdzie MongoDB udostępnia swój dziennik zmian do tematu Redpanda dla innych (w tym innych instancji MongoDB) do konsumować. Integracja odbywa się za pośrednictwem Kafka Connect. Ponieważ Redpanda jest przewodowo kompatybilny z Apache Kafka, istniejące złącza Kafka działają bezproblemowo. Ta możliwość wykorzystania ogromnego ekosystemu Kafki to kolejny sposób, w jaki Redpanda ułatwia życie programistom!
Nasi przyjaciele z MongoDB stworzyli demo giełdowe, które integruje MongoDB i Redpanda za pośrednictwem Kafka Connect. Demo wymaga Docker Compose i pliku docker-compose.yml
plik wygląda mniej więcej tak:
version: '3.7'
services:
redpanda:
command:
- redpanda
- start
- --smp
- '1'
- --reserve-memory
- 0M
- --overprovisioned
- --node-id
- '0'
- --kafka-addr
- PLAINTEXT://0.0.0.0:9092,OUTSIDE://0.0.0.0:9093
- --advertise-kafka-addr
- PLAINTEXT://redpanda:9092,OUTSIDE://localhost:9093
image: docker.vectorized.io/vectorized/redpanda:v21.9.3
ports:
- 9093:9093
connect:
image: confluentinc/cp-kafka-connect-base:latest
build:
context: .
dockerfile: Dockerfile-MongoConnect
depends_on:
- redpanda
ports:
- "8083:8083"
environment:
CONNECT_BOOTSTRAP_SERVERS: 'redpanda:9092'
CONNECT_REST_ADVERTISED_HOST_NAME: connect
CONNECT_REST_PORT: 8083
CONNECT_GROUP_ID: connect-cluster-group
CONNECT_CONFIG_STORAGE_TOPIC: docker-connect-configs
CONNECT_CONFIG_STORAGE_REPLICATION_FACTOR: 1
CONNECT_OFFSET_FLUSH_INTERVAL_MS: 10000
CONNECT_OFFSET_STORAGE_TOPIC: docker-connect-offsets
CONNECT_OFFSET_STORAGE_REPLICATION_FACTOR: 1
CONNECT_STATUS_STORAGE_TOPIC: docker-connect-status
CONNECT_STATUS_STORAGE_REPLICATION_FACTOR: 1
CONNECT_PLUGIN_PATH: "/usr/share/java,/usr/share/confluent-hub-components"
CONNECT_AUTO_CREATE_TOPICS_ENABLE: "true"
CONNECT_KEY_CONVERTER: "org.apache.kafka.connect.json.JsonConverter"
CONNECT_VALUE_CONVERTER: "org.apache.kafka.connect.json.JsonConverter"
mongo1:
image: "mongo:5.0.3"
volumes:
- /data/db
ports:
- "27017:27017"
restart: always
nodesvr:
image: node:16
build:
context: .
dockerfile: Dockerfile-Nodesvr
depends_on:
- redpanda
- mongo1
ports:
- "4000:4000"
Aby zapoznać się z pełnym samouczkiem i przewodnikiem, odwiedź uzupełniający wpis na blogu w MongoDB. Zapraszamy wszystkich członków społeczności MongoDB do wypróbowania Redpandy i dołączenia do społeczności Redpanda Slack, gdzie możesz współpracować z inżynierami, którzy budują Redpanda i kształtują przyszłość strumieniowania w czasie rzeczywistym!
Dalsza lektura
- Dokumentacja Redpanda
- Wzorzec Redpanda kontra Kafka
- Pierwsze kroki z Redpanda