MongoDB няма нужда от представяне. От дебюта си през 2007 г., базата данни с документи непрекъснато нараства популярността си и сега е 5-та в класацията база данни в света според DB Engines. Сега следва само Oracle, MySQL, SQL Server и PostgreSQL. Това е още по-впечатляващо, като се има предвид, че първите четири са традиционни релационни бази данни, които се появиха през предходния век. MongoDB е номер едно сред новото поколение мащабируеми, разпределени „NoSQL“ бази данни.
Живателният растеж на MongoDB може да се дължи на силен фокус върху опита на разработчиците. Самият продукт е прост, лесен за използване и осигурява щастлив път от прототипа до производството. Когато изпробват MongoDB, разработчиците са склонни да бъдат успешни в преместването на работещи прототипи към пълно разгръщане на производство. Това е историята, която трябва да запомните.
Докато MongoDB опрости разработването на бази данни за милиони разработчици по целия свят, Redpanda е на подобна мисия да опрости стрийминг приложенията в реално време. От самото начало Redpanda беше създадена със същата отдаденост към простотата, лекотата на използване и най-важното, производителността на разработчиците.
Различни, но еднакви
Докато MongoDB и Redpanda се занимават с различни части от технологичния стек, интересно е да се отбележи приликите в начина, по който предоставят приятно изживяване на разработчиците поотделно и как се допълват взаимно, когато се комбинират. А именно:
- MongoDB се доставя като единичен двоичен файл. Същото прави и Redpanda. За разлика от други сравними платформи за стрийминг, Redpanda няма зависимости от външни услуги като Apache Zookeeper. Това прави Redpanda толкова лесна за инсталиране чрез мениджъри на пакети, колкото е локално на лаптопа на разработчика. Той също така се доставя като изображение на Docker, така че можете да го развъртите чрез Docker Compose, да се интегрирате с CI/CD конвейери или да внедрите в Kubernetes с обикновен контролер.
- И Redpanda, и MongoDB са разпределени системи. За да постигнете мащаб и устойчивост, просто инсталирате точно същия двоичен файл на множество сървъри и ги насочвате един към друг. Това позволява на разработчиците и архитектите да отлагат решенията относно мащабируемостта и производителността в началото на процеса на разработка. Мисловният модел и кодът на приложението са едни и същи, независимо дали работи на лаптоп, едноядрена виртуална машина или на няколко мощни производствени сървъра.
- И Redpanda, и MongoDB се доставят с разумни настройки по подразбиране. Това свежда до минимум броя на копчетата, които разработчиците или администраторите трябва да настроят, независимо дали създават среда за създаване на прототипи (както при Docker Compose) или осигуряват производствен клъстер. Redpanda отива още по-далеч с възможността за автоматично настройване спрямо основния хардуер, което й позволява да максимизира наличните ресурси на процесора, паметта и диска с минимални усилия.
- Когнитивното натоварване за разработчиците не е само в мащабируемостта на байтове в секунда, но и в това, че трябва да решат каква форма да дадат на данните си и какви типове да изберат. MongoDB дава на разработчиците гъвкавостта да развиват схемата с течение на времето с приятелски JSON-подобен модел на данни. По същия начин събитията и съобщенията, изпратени до Redpanda, не изискват предварително схема. Въпреки това, има опция за използване на схема, когато е необходимо, и за развитие на схемата, за да отговаря на променящите се бизнес нужди.
Свързване на MongoDB с Redpanda
MongoDB се интегрира с Redpanda по два начина:като приемник, при който събитията на Redpanda се консумират и изпращат до MongoDB за вмъкване или актуализации, или като източник на CDC, където MongoDB екстернализира своя регистър на промените към тема на Redpanda за други (включително други екземпляри на MongoDB), за да консумират. Интеграцията се извършва чрез Kafka Connect. Тъй като Redpanda е съвместим с Apache Kafka, съществуващите конектори на Kafka работят безпроблемно. Тази способност за използване на огромната екосистема на Kafka е още един начин, по който Redpanda улеснява живота на разработчиците!
Нашите приятели от MongoDB са събрали демонстрация на борсов тикер, която интегрира MongoDB и Redpanda чрез Kafka Connect. Демонстрацията изисква Docker Compose и docker-compose.yml
файл изглежда така:
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"
За пълен урок и инструкции посетете допълнителната публикация в блога в MongoDB. Приветстваме всички от общността на MongoDB да изпробват Redpanda и да се присъединят към общността Redpanda Slack, където можете да се ангажирате с инженерите, които изграждат Redpanda и оформят бъдещето на стрийминг в реално време!
Допълнително четене
- Документация на Redpanda
- Еталон на Redpanda срещу Kafka
- Първи стъпки с Redpanda