Oracle Transactional Event Queues (TxEventQ) nativně přináší streamování událostí přímo do databáze Oracle. TxEventQ, postavený na platformě Advanced Queuing (AQ), ale vylepšený pro škálování, dělení a sémantiku pub-sub, eliminuje v mnoha architekturách potřebu samostatné infrastruktury brokerů.
Pro bezproblémovou integraci systémů založených na Kafce nabízí Oracle dvě klíčové možnosti:
- Kafka Java Client pro TxEventQ (OKafka) – náhradní cesta bez zprostředkovatele.
- Kafka Connect Source a Sink konektory pro TxEventQ – most mezi databází Oracle a stávajícími clustery Kafka.
Každý přístup slouží jiné potřebě – buď zjednodušení vašeho stacku, nebo umožnění hybridní interoperability.
Možnost A: Kafka Java klient pro TxEventQ (OKafka)
Co to je
OKafka je Java klient kompatibilní s Kafkou, který nahrazuje externího Kafka brokera samotnou databází Oracle. Implementuje známá Kafka API, jako například Producer, Consumera Admin, ale směruje zprávy přes JDBC a AQ do témat TxEventQ uvnitř databáze.
To umožňuje stávajícím Kafka aplikacím běžet s minimálními změnami – většinou úpravami konfigurace.
Jak to funguje
V cestě OKafka se témata Kafka mapují přímo na fronty TxEventQ.
Oddíly odpovídají oddílům na úrovni databáze a offsety jsou udržovány transakčním způsobem.
Každá operace zařazení do fronty (produce) a vyřazení z fronty (consume) se účastní stejné transakce Oracle, což zaručuje atomicitu a sémantiku přesně jednou.
Váš kód producenta a spotřebitele zůstává téměř identický; pouze odkazujete bootstrap.serversna posluchač Oracle, konfigurujete přihlašovací údaje JDBC nebo peněženky a používáte názvy témat psané velkými písmeny.
Databáze Oracle funguje jak jako úložiště událostí, tak jako zprostředkovatel zpráv, který automaticky udržuje perzistenci, řazení a obnovu.
Základy nastavení
- Ujistěte se, že používáte Oracle Database 21c nebo novější, kde je k dispozici TxEventQ.
- Vytvořte nebo udělte uživateli oprávnění AQ (
DBMS_AQADM,DBMS_AQ, atd.). - Nastavte vhodný
STREAMS_POOL_SIZEposluchač databáze a ujistěte se, že je dosažitelný. - Přidejte knihovny OKafka a Oracle JDBC/AQ do cesty tříd vaší aplikace.
- Vytvořte téma TxEventQ
DBMS_AQADM.CREATE_DATABASE_KAFKA_TOPICa odkazujte na něj z vašeho producenta.
Příklad použití
Properties props = new Properties();
props.put("bootstrap.servers", "dbhost:1521");
props.put("oracle.service.name", "ORCLPDB1");
props.put("security.protocol", "PLAINTEXT");
props.put("oracle.net.tns_admin", "/path/to/tns");
AdminClient admin = AdminClient.create(props);
NewTopic topic = new NewTopic("MY_TOPIC", 3, (short)1);
admin.createTopics(Collections.singleton(topic)).all().get();
KafkaProducer producer =
new KafkaProducer<>(props, new StringSerializer(), new StringSerializer());
producer.send(new ProducerRecord<>("MY_TOPIC", "key", "value")).get();
producer.close();
admin.close();
Výhody a nevýhody
Výhody
- Minimální změny kódu oproti stávajícím klientům Kafka.
- Silné transakční záruky pro produkci a spotřebu.
- Jednodušší stack – žádní externí brokeři k provozu.
- Nižší latence pro pracovní postupy v databázi.
Nevýhody
- Škálování závisí spíše na databázových zdrojích než na distribuovaném brokeru.
- Některá API nebo funkce Kafky jsou omezené.
- Úzké propojení mezi databází a infrastrukturou pro zasílání zpráv.
- Pozorovatelnost se liší od nativního modelu nástrojů Kafka.
Možnost B: Kafka Connect Source a Sink konektory pro TxEventQ
Co to je
Pro týmy, které si chtějí zachovat cluster Kafka, ale integrovat ho s databází Oracle, nabízejí konektory Kafka Connect praktický most.
Sink Connector přesouvá data z témat Kafka do TxEventQ, zatímco Source Connector streamuje zprávy z témat TxEventQ zpět do Kafka.
To umožňuje hybridní streamování, obousměrnou synchronizaci a postupné migrační scénáře.
Jak to funguje
JAR soubor konektoru TxEventQ nasadíte do Kafka Connect workerů.
Konektor používá Oracle JMS a JDBC k interakci s TxEventQ a mapování zpráv JMS na záznamy Kafka.
Konfigurační soubory definují URL databáze, cestu k peněžence, názvy témat/front a možnosti dávkování.
Kafka Connect spravuje offsety, škálování a logiku opakování.
Příklady konfigurací
Konektor jímky (Kafka → TxEventQ)
Zdrojový konektor (TxEventQ → Kafka)
Výhody a nevýhody
Výhody
- Zachovává stávající pracovní postupy Kafka a zároveň zavádí streamování databáze Oracle.
- Ideální pro hybridní nebo postupné zavádění.
- Využívá ekosystém a monitorování Kafka Connect.
- Horizontálně se škáluje s úkoly pracovníků.
Nevýhody
- Dodatečná latence přes most Connect.
- Vyžaduje provoz infrastruktury Kafka Connect.
- Omezené transakční propojení mezi systémy.
- Vyžaduje sladění verzí napříč Kafka Connect, konektorem a databází Oracle.
Volba správné cesty
| Aspekt | OKafka (Java klient) | Kafka Connect Bridge |
|---|---|---|
| Primární cíl | Nahraďte Kafku systémem pro zasílání zpráv v databázi | Integrace nebo propojení Oracle a Kafka |
| Složitost | Nízká – pouze databáze + klient | Vyšší – vyžaduje Kafka Connect |
| Latence | Nejnižší, bez externího skákání | Mírně vyšší |
| Transakční integrace | Plná ACID v rámci DB | Nejlepší úsilí napříč systémy |
| Flexibilita | Vhodné pro aplikace zaměřené na databáze | Ideální pro hybridní ekosystémy |
| Škálovací model | Vertikální (zdroje databáze) | Horizontální (Kafkovští dělníci) |
Doporučení:
Při konsolidaci úloh v rámci databáze Oracle nebo v případech, kdy je transakční konzistence klíčová, používejte OKafku.
Při spolupráci s externími systémy nebo postupné migraci z clusterů Kafka používejte most Kafka Connect.
Závěrem
Oracle TxEventQ nabízí dva doplňkové způsoby propojení světa databází pomocí streamování událostí ve stylu Kafka. Klientská cesta OKafka
přináší jednoduchost a transakční hloubku pro databázově nativní mikroslužby, zatímco most Kafka Connect nabízí interoperabilitu pro hybridní nasazení. Společně dávají architektům svobodu volby mezi integrovaným a federovaným streamováním – bez kompromisů ve spolehlivosti nebo integritě podnikových dat.
Zdroj: Oracle