MongoDB není třeba představovat. Od svého debutu v roce 2007 databáze dokumentů neustále roste na popularitě a podle DB Engines je nyní na 5. místě na světě. Nyní zaostává pouze za Oracle, MySQL, SQL Server a PostgreSQL. To je o to působivější, když uvážíte, že první čtyři jsou tradiční relační databáze, které vyšly v minulém století. MongoDB je číslo jedna mezi novou generací škálovatelných, distribuovaných „NoSQL“ databází.
Růst rtuti MongoDB lze připsat silnému zaměření na vývojářské zkušenosti. Samotný produkt je jednoduchý, snadno se používá a poskytuje šťastnou cestu od prototypu k výrobě. Při zkoušení MongoDB mají vývojáři tendenci být úspěšní při přesunu fungujících prototypů do plnohodnotného produkčního nasazení. To je příběh k zapamatování.
Zatímco MongoDB zjednodušil vývoj databází pro miliony vývojářů po celém světě, Redpanda je na podobném poslání zjednodušit aplikace pro streamování v reálném čase. Od začátku byla Redpanda postavena se stejným odhodláním k jednoduchosti, snadnému použití a především produktivitě vývojáře.
Různé, ale stejné
Zatímco MongoDB a Redpanda řeší různé části technologického zásobníku, je zajímavé si všimnout podobnosti v tom, jak poskytují příjemný vývojářský zážitek jednotlivě a jak se vzájemně doplňují, když jsou kombinovány. Pro vtip:
- MongoDB se dodává jako jeden binární soubor. Stejně tak Redpanda. Na rozdíl od jiných srovnatelných streamovacích platforem nemá Redpanda žádnou závislost na externích službách, jako je Apache Zookeeper. Díky tomu se Redpanda instaluje prostřednictvím správců balíčků stejně snadno jako lokálně na vývojářském notebooku. Dodává se také jako obraz Dockeru, takže jej můžete roztočit pomocí Docker Compose, integrovat s kanály CI/CD nebo nasadit v Kubernetes pomocí jednoduchého ovladače.
- Redpanda i MongoDB jsou distribuované systémy. Chcete-li dosáhnout rozsahu a odolnosti, jednoduše nainstalujete přesně stejný binární soubor na více serverů a nasměrujete je na sebe. To umožňuje vývojářům a architektům odložit rozhodnutí o škálovatelnosti a výkonu v rané fázi vývojového procesu. Mentální model a kód aplikace jsou stejné, ať už běží na notebooku, jednojádrovém virtuálním počítači nebo na několika výkonných produkčních serverech.
- Redpanda i MongoDB se dodávají s rozumnými výchozími nastaveními. Tím se minimalizuje počet knobů, které vývojáři nebo správci potřebují vyladit, ať už vytvářejí prostředí pro prototypování (jako u Docker Compose) nebo zajišťují produkční cluster. Redpanda jde ještě dále se schopností automatického ladění proti základnímu hardwaru, což jí umožňuje maximalizovat dostupné zdroje CPU, paměti a disku s minimálním úsilím.
- Kognitivní zátěž pro vývojáře nespočívá pouze ve škálovatelnosti bajtů za sekundu, ale také v rozhodnutí, jaký tvar dát svým datům a jaké typy zvolit. MongoDB poskytuje vývojářům flexibilitu pro vývoj schématu v průběhu času pomocí přátelského datového modelu podobného JSON. Podobně události a zprávy odeslané do Redpanda nevyžadují předem schéma. Existuje však možnost použít schéma v případě potřeby a vyvinout schéma tak, aby odpovídalo měnícím se obchodním potřebám.
Připojení MongoDB k Redpanda
MongoDB se integruje s Redpanda dvěma způsoby:jako umyvadlo, kdy jsou události Redpanda spotřebovávány a odesílány do MongoDB pro vložení nebo aktualizace, nebo jako zdroj CDC, kde MongoDB externalizuje svůj changelog do tématu Redpanda pro ostatní (včetně dalších instancí MongoDB) konzumovat. Integrace se provádí přes Kafka Connect. Protože je Redpanda drátově kompatibilní s Apache Kafka, stávající konektory Kafka fungují bez problémů. Tato schopnost využít obrovský ekosystém Kafka je dalším způsobem, jak Redpanda usnadňuje vývojářům život!
Naši přátelé z MongoDB sestavili ukázku burzy, která integruje MongoDB a Redpanda přes Kafka Connect. Demo vyžaduje Docker Compose a docker-compose.yml
soubor vypadá nějak takto:
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"
Úplný návod a návod najdete v doplňkovém příspěvku na blogu MongoDB. Vítáme každého z komunity MongoDB, aby vyzkoušel Redpanda a připojil se ke komunitě Redpanda Slack, kde se můžete spojit s inženýry, kteří staví Redpanda a utvářejí budoucnost streamování v reálném čase!
Další čtení
- Dokumentace Redpanda
- Benchmark of Redpanda versus Kafka
- Začínáme s Redpanda