SlideShare a Scribd company logo
1 of 52
Download to read offline
BASEL | BERN | BRUGG | BUCHAREST | COPENHAGEN | DÜSSELDORF | FRANKFURT A.M. | FREIBURG I.BR.
GENEVA | HAMBURG | LAUSANNE | MANNHEIM | MUNICH | STUTTGART | VIENNA | ZURICH
http://guidoschmutz@wordpress.com@gschmutz
Solutions for bi-directional integration
between Oracle RDBMS & Apache Kafka
Guido Schmutz
UKOUG Techfest 2019
Agenda
1. Introduction
2. Blueprints Oracle RDBMS => Apache Kafka
3. Blueprints Apache Kafka => Oracle RDBMS
4. Summary
BASEL | BERN | BRUGG | BUKAREST | DÜSSELDORF | FRANKFURT A.M. | FREIBURG I.BR. | GENF
HAMBURG | KOPENHAGEN | LAUSANNE | MANNHEIM | MÜNCHEN | STUTTGART | WIEN | ZÜRICH
Guido
Working at Trivadis for more than 22 years
Consultant, Trainer, Platform Architect for Java,
Oracle, SOA and Big Data / Fast Data
Oracle Groundbreaker Ambassador & Oracle ACE
Director
@gschmutz guidoschmutz.wordpress.com
175th
edition
Introduction
Microservices / Modern Applications
• Highly decoupled
• Independently deployable
• Bounded Context/Aggregate (DDD)
• Responsible for their data
• Favour asynchronous, event-driven
interaction over synchronous
• Smart Endpoints and Dump Pipes
• Use Anti-Corruption Layer (ACL) if no
fit! M3M2
ACL
Event
Hub
M1
Microservices / Modern Applications
Integrate with Traditional System
M3M2
ACL
Event
Hub
M1
ACL
• Highly decoupled
• Independently deployable
• Bounded Context/Aggregate (DDD)
• Responsible for their data
• Favour asynchronous, event-driven
interaction over synchronous
• Smart Endpoints and Dump Pipes
• Use Anti-Corruption Layer (ACL) if no
fit!
Traditional
App
Apache Kafka – A Streaming Platform
Kafka Cluster
Consumer 1 Consume 2r
Broker 1 Broker 2 Broker 3
Zookeeper
Ensemble
ZK 1 ZK 2ZK 3
Schema
Registry
Service 1
Management
Control Center
Kafka Manager
KAdmin
Producer 1 Producer 2
kafkacat
Data Retention:
• Never
• Time (TTL) or Size-based
• Log-Compacted based
Producer3Producer3
ConsumerConsumer 3
Use Case
Customer Microservice
{ }
Customer API CustomerCustomer Logic
Order Processing System
{ }
Order API OrderOrder Logic
REST
REST
Event Hub
Customer
Mat View
Order
Customer
(compacted)
Notification Microservice
Notification Logic
“Modern Apps”Traditional Apps (Legacy)
Flat Aggregate
Low Latency High Latency
DB Dataflow
Message
Latency
ACL
Cost Free CommercialLicense
MessageMessageMessageMessage
MessageMessage
Properties - Message
Message Message
A1 A2 A3
Message
B1 B2 B3 B4
A1 A2 A3 B
B1 B2 B3 B4
Table A
A1
A2
A3
Table B
B1
B2
B3
B4
FlatDB Model Aggregate
Flat Aggregate
Low Latency High Latency
DB Dataflow
Message
Latency
ACL
Cost Free CommercialLicense
Properties - Latency
Traditional System Event
Hub
Data
Flow
RDBMS
latency
latency
Flat Aggregate
Low Latency High Latency
DB Dataflow
Message
Latency
ACL
Cost Free CommercialLicense
Properties – Anti-Corruption Layer (ACL)
Traditional System Event
Hub
Data
Flow
RDBMS
Traditional System Event
Hub
Data
Flow
RDBMS
ACL
ACL
Flat Aggregate
Low Latency High Latency
DB Dataflow
Message
Latency
ACL
Cost Free CommercialLicense
Examples:
• View Layer
• Storage Procedure
• JSON Support in DB
• …
Examples:
• StreamSets
• Kafka Connect
• Kafka Streams / KSQL
• …
Database Dataflow
Properties – License
• Cost Free
• either part of Oracle RDMBS license
• or part of Kafka license (if Confluent Enterprise is used)
• or a free software (mostly open source) component
• Commercial
• an additional component involving license costs
Flat Aggregate
Low Latency High Latency
DB Dataflow
Message
Latency
ACL
Cost Free CommercialLicense
Blueprints Oracle RDBMS =>
Apache Kafka
Blueprints Oracle RDBMS => Apache Kafka (DB-K)
Customer Microservice
{ }
Customer API CustomerCustomer Logic
Order Processing System
{ }
Order API OrderOrder Logic
REST
REST
Event Hub
Customer
Mat View
Order
(compacted)
Customer
(compacted)
Notification Microservice
Notification Logic
Schema
Registry
DB-K_1: Polling of RDBMS table/view
DB-K_2: Change Data Capture (CDC) on RDBMS
DB-K_3: Polling of RDBMS API
DB-K_4: Produce to Event Hub from RDBMS
DB-K_5: RDBMS Queue with bridge to Event Hub
DB-K_1: Polling of RDBMS table/view
Event
Hub
Stream Data
Integration
API
Applications / Data Sources
Data FlowRDBMS
Application
Logic
Stream Data
Integration & Analytics
Stream
Analytics
Data Flow
Flat Aggregate
Low Latency High Latency
DB Dataflow
Message
Latency
ACL
Cost Free CommercialLicense
Event
Hub
Stream Data
Integration
API
Applications / Data Sources
Data FlowRDBMS
Application
Logic
Stream Data
Integration & Analytics
Stream
Analytics
Data Flow
Flat Aggregate
Low Latency High Latency
DB Dataflow
Message
Latency
ACL
Cost Free CommercialLicense
DB-K_1: Polling of RDBMS table/view
Kafka Connect with JDBC Source Connector
JDBC Connector part of Confluent Open Source Platform
Kafka Connect & JDBC Connector
• Many connectors available
• Single Message Transforms (SMT)
• declarative style, simple data flows
• framework is part of Apache Kafka
https://www.confluent.io/hub
DB-K_1 – Configure JDBC Connector
#!/bin/bash
curl -X "POST" "http://192.168.69.138:8083/connectors" 
-H "Content-Type: application/json" 
-d $'{
"name": "jdbc-driver-source",
"config": {
"connector.class": "JdbcSourceConnector",
"connection.url":"jdbc:oracle:thin//oracle-db:1521/XEPDB1",
"mode": "timestamp",
"timestamp.column.name":”modified_at",
"table.whitelist":”order",
"validate.non.null":"false",
"topic.prefix":”orderprocessing_",
"key.converter":"org.apache.kafka.connect.json.JsonConverter",
"key.converter.schemas.enable": "false",
"value.converter":"org.apache.kafka.connect.json.JsonConverter",
"value.converter.schemas.enable": "false",
"name": "jdbc-driver-source",
"transforms":"createKey,extractInt",
"transforms.createKey.type":"org.apache.kafka.connect.transforms.ValueToKey",
"transforms.createKey.fields":"id",
"transforms.extractInt.type":"org.apache.kafka.connect.transforms.ExtractField$Key",
"transforms.extractInt.field":"id"
}
}'
DB-K_2: Change Data Capture (CDC) on RDBMS
Stream Data
Integration & Analytics
Stream
Analytics
Event
Hub
Stream Data
Integration
API
Data Flow
Application / Data Sources
Data Flow
Application
Logic
RDBMS
Redo Log
REST to
Event Hub
Flat Aggregate
Low Latency High Latency
DB Dataflow
Message
Latency
ACL
Cost Free CommercialLicense
Stream Data
Integration & Analytics
Stream
Analytics
Event
Hub
Stream Data
Integration
API
Data Flow
Application / Data Sources
Data Flow
Application
Logic
RDBMS
Redo Log
REST to
Event Hub
Rest Proxy
DB-K_2: Change Data Capture (CDC) on RDBMS
Using Oracle GoldenGate
Flat Aggregate
Low Latency High Latency
DB Dataflow
Message
Latency
ACL
Cost Free CommercialLicense
Alternatives:
StreamSets Data Collector
Attunity
Debezium
…
DB-K_3: Polling of RDBMS API
Event
Hub
Stream Data
Integration
API
Applications / Data Sources
Data Flow
RDBMS
Application
Logic
API
Stream Data
Integration & Analytics
Stream
Analytics
Data Flow
Flat Aggregate
Low Latency High Latency
DB Dataflow
Message
Latency
ACL
Cost Free CommercialLicense
Event
Hub
Stream Data
Integration
API
Applications / Data Sources
Data Flow
RDBMS
Application
Logic
API
Stream Data
Integration & Analytics
Stream
Analytics
Data Flow
DB-K_3: Polling of RDBMS API
StreamSets invokes Oracle Rest Data Service
Flat Aggregate
Low Latency High Latency
DB Dataflow
Message
Latency
ACL
Cost Free CommercialLicense Oracle Rest Data Service is part of Oracle RDBMS, StreamSets is Open Source
Oracle REST Data Services (ORDS)
• makes it easy to develop modern REST interfaces for relational data in the Oracle
Database and the Oracle Database 18c JSON Document Store
• ORDS maps HTTP(S) verbs (GET, POST, PUT, DELETE, etc.) to database transactions and
returns any results formatted using JSON
• Java middle tier application on WebLogic, Tomcat, Docker, Standalone (for
development)
https://www.oracle.com/database/technologies/appdev/rest.html
DB-K_3 – Setup ORDS (I)
ORDS.ENABLE_SCHEMA(
p_enabled => TRUE,
p_schema => 'ORDER_PROCESSING',
p_url_mapping_type => 'BASE_PATH',
p_url_mapping_pattern => 'order_processing',
p_auto_rest_auth => FALSE);
ORDS.DEFINE_MODULE(
p_module_name => 'order_processing',
p_base_path => '/orders/',
p_items_per_page => 25,
p_status => 'PUBLISHED',
p_comments => NULL);
ORDS.DEFINE_TEMPLATE(
p_module_name => 'order_processing',
p_pattern => 'changes/:offset',
p_priority => 0,
p_etag_type => 'HASH',
p_etag_query => NULL,
p_comments => NULL);
DB-K_3 – Setup ORDS (II)
ORDS.DEFINE_HANDLER(
p_module_name => 'order_processing',
p_pattern => 'changes/:offset',
p_method => 'GET',
p_source_type => 'resource/lob',
p_items_per_page => 25,
p_source => q'[
'SELECT 'application/json', json_object('orderId' VALUE po.id,
'orderDate' VALUE po.order_date,
'orderMode' VALUE po.order_mode,
'customer' VALUE
json_object('firstName' VALUE cu.first_name,
'lastName' VALUE cu.last_name
'emailAddress' VALUE cu.email),
'lineItems' VALUE (SELECT json_arrayagg(
json_object('ItemNumber' VALUE li.id,
'Product' VALUE
json_object('id' VALUE li.product_id,
'name' VALUE li.product_name,
'unitPrice' VALUE li.unit_price),
'quantity' VALUE li.quantity))
FROM order_item_t li WHERE po.id = li.order_id),
'offset' VALUE TO_CHAR(po.modified_at, 'YYYYMMDDHH24MISS'))
FROM order_t po LEFT JOIN customer_t cu ON (po.customer_id = cu.id)
WHERE po.modified_at > TO_DATE(:offset, 'YYYYMMDDHH24MISS')]'
StreamSets Data Collector
• GUI-based, drag-and
drop Data Flow Pipelines
• Both stream and batch
processing
• custom sources, sinks,
processors
• Monitoring and Error
Detection
https://streamsets.com/products/sdc
DB-K_4: Produce to Event Hub from RDBMS
Event
Hub
Stream Data
Integration
API
Applications / Data Sources
RDBMS
Application
Logic
API
Stream Data
Integration & Analytics
Stream
Analytics
Data Flow
REST to
Event Hub
Flat Aggregate
Low Latency High Latency
DB Dataflow
Message
Latency
ACL
Cost Free CommercialLicense
Event
Hub
Stream Data
Integration
API
Applications / Data Sources
RDBMS
Application
Logic
API
Stream Data
Integration & Analytics
Stream
Analytics
Data Flow
REST to
Event Hub
Flat Aggregate
Low Latency High Latency
DB Dataflow
Message
Latency
ACL
Cost Free CommercialLicense
DB-K_4: Produce to Event Hub from RDBMS
Native Kafka Producer using Java in DB
Does not feel right! Java in DB
as well as “dual write” problem
Event
Hub
Stream Data
Integration
API
Applications / Data Sources
RDBMS
Application
Logic
API
Stream Data
Integration & Analytics
Stream
Analytics
Data Flow
REST to
Event Hub
Rest Proxy
?
Flat Aggregate
Low Latency High Latency
DB Dataflow
Message
Latency
ACL
Cost Free CommercialLicense
DB-K_4: Produce to Event Hub from RDBMS
Invoke REST Proxy from PL/SQL
Invoking a REST Service from DB not well-
supported and ”dual write” problem
Confluent REST Proxy is part of Confluent Open Source Platform
Event
Hub
Stream Data
Integration
API
Applications / Data Sources
RDBMS
Application
Logic
API
Stream Data
Integration & Analytics
Stream
Analytics
Data Flow
REST to
Event Hub
Oracle Big Data SQL
Coming soon …
DB-K_4: Produce to Event Hub from RDBMS
Oracle Big Data SQL integrates with Kafka
Flat Aggregate
Low Latency High Latency
DB Dataflow
Message
Latency
ACL
Cost Free CommercialLicense
DB-K_5: RDBMS Queue with bridge to Event Hub
Stream Data
Integration & Analytics
Stream
Analytics
Event
Hub
Stream Data
Integration
API
Data Flow
Application / Data Sources
Data Flow
Application
Logic
RDBMS
Queue
Flat Aggregate
Low Latency High Latency
DB Dataflow
Message
Latency
ACL
Cost Free CommercialLicense
DB-K_5: RDBMS Queue with bridge to Event Hub
Oracle Advanced Queuing & Kafka Connect JMS
Stream Data
Integration & Analytics
Stream
Analytics
Event
Hub
Stream Data
Integration
API
Data Flow
Application / Data Sources
Data Flow
Application
Logic
RDBMS
QueueAQ
Flat Aggregate
Low Latency High Latency
DB Dataflow
Message
Latency
ACL
Cost Free CommercialLicense Oracle Advanced Queuing is part of Oracle RDBMS
BEGIN
dbms_aqadm.create_queue_table (
queue_table => 'ORDER_QT',
queue_payload_type => 'SYS.AQ$_JMS_TEXT_MESSAGE',
sort_list => 'PRIORITY,ENQ_TIME',
multiple_consumers => FALSE,
message_grouping => dbms_aqadm.none
);
END;
/
DB-K_5 – Setup AQ and Kafka Connect (I)
BEGIN
dbms_aqadm.create_queue (
queue_name => 'ORDER_AQ',
queue_table => 'ORDER_QT',
max_retries => 1,
retry_delay => 2, -- seconds
retention_time => 60*60*24*7 -- 1w
);
END;
/
BEGIN
dbms_aqadm.start_queue(
queue_name => 'ORDER_AQ',
enqueue => TRUE,
dequeue => TRUE
);
END;
/
curl -X "POST" "$DOCKER_HOST_IP:8083/connectors" 
-H "Content-Type: application/json" 
--data '{
"name": "jms-source",
"config": {
"name": "jms-source",
"connector.class": "com.datamountaineer...JMSSourceConnector",
"connect.jms.initial.context.factory":
"oracle.jms.AQjmsInitialContextFactory",
"connect.jms.initial.context.extra.params":
"db_url=jdbc:oracle:thin:@//192.168.73.86:1521/XEPDB1,java.naming.security.princ
ipal=order_processing,java.naming.security.credentials=order_processing",
"tasks.max": "1",
"connect.jms.connection.factory": "ConnectionFactory",
"connect.jms.url": "jdbc:oracle:thin:@//192.168.73.86:1521/XEPDB1",
"connect.jms.kcql": "INSERT INTO order SELECT * FROM order_aq WITHTYPE QUEUE
WITHCONVERTER=`com.datamountaineer.streamreactor.connect.converters.source.JsonS
impleConverter`"
}
}'
DB-K_5 – Setup AQ and Kafka Connect (I)
DB-K_5: RDBMS Queue with bridge to Event Hub
Oracle AQ with Kafka API & MirrorMaker
Stream Data
Integration & Analytics
Stream
Analytics
Event
Hub
Stream Data
Integration
API
Data Flow
Application / Data Sources
Data Flow
Application
Logic
RDBMS
Queue
Flat Aggregate
Low Latency High Latency
DB Dataflow
Message
Latency
ACL
Cost Free CommercialLicense
AQ (Kafka API)
Oracle is working on a Kafka API
for Advanced Queuing
Blueprints Apache Kafka =>
Oracle RDBMS
Blueprints Apache Kafka => Oracle RDBMS (K-DB)
Customer Microservice
{ }
Customer API CustomerCustomer Logic
Order Processing System
{ }
Order API OrderOrder Logic
REST
REST
Event Hub
Customer
Mat View
Order
(compacted)
Customer
(compacted)
Notification Microservice
Notification Logic
Schema
Registry
K-DB_1: Write to RDBMS table/view
K-DB_2: Write over RDBMS API
K-DB_3: Consume from Event Hub
K-DB_4: Event Hub with bridge to RDBMS Queue
K-DB_1: Write to RDBMS table/view
Event
Hub
Stream Data
Integration
API
Applications / Data Sources
Data FlowRDBMS
Application
Logic
Stream Data
Integration & Analytics
Stream
Analytics
Data Flow
Flat Aggregate
Low Latency High Latency
DB Dataflow
Message
Latency
ACL
Cost Free CommercialLicense
Event
Hub
Stream Data
Integration
API
Applications / Data Sources
Data FlowRDBMS
Application
Logic
Stream Data
Integration & Analytics
Stream
Analytics
Data Flow
Flat Aggregate
Low Latency High Latency
DB Dataflow
Message
Latency
ACL
Cost Free CommercialLicense
K-DB_1: Write to RDBMS table/view
Kafka Connect and JDBC Sink Connector
K-DB_2: Write over RDBMS API
Event
Hub
Stream Data
Integration
API
Applications / Data Sources
Data Flow
RDBMS
Application
Logic
API
Stream Data
Integration & Analytics
Stream
Analytics
Data Flow
Flat Aggregate
Low Latency High Latency
DB Dataflow
Message
Latency
ACL
Cost Free CommercialLicense
Event
Hub
Stream Data
Integration
API
Applications / Data Sources
Data Flow
RDBMS
Application
Logic
API
Stream Data
Integration & Analytics
Stream
Analytics
Data Flow
Flat Aggregate
Low Latency High Latency
DB Dataflow
Message
Latency
ACL
Cost Free CommercialLicense
K-DB_2: Write over RDBMS API
Kafka Connect invokes Oracle Rest Data Service
Oracle Rest Data Service is part of Oracle RDBMS, REST Connector is Open Source
DB-K_2 – Setup ORDS (I)
ORDS.DEFINE_HANDLER(
p_module_name => 'customer',
p_pattern => 'customer',
p_method => 'POST',
p_source_type => 'plsql/block',
p_items_per_page => 0,
p_source =>
'DECLARE
L_CU CLOB := :body_text;
BEGIN
INSERT INTO customer_t (id, first_name, last_name, title, notification_on, email, slack_handle,
twitter_handle)
SELECT * FROM json_table(L_CU, '$'
COLUMNS (
id NUMBER PATH '$.id',
first_name VARCHAR2 PATH '$.firstName',
last_name VARCHAR2 PATH '$.lastName',
title VARCHAR2 PATH '$.title',
notification_on VARCHAR2 PATH '$.notificationOn',
email VARCHAR2 PATH '$.email',
slack_handle VARCHAR2 PATH '$.slackHandle',
twitter_handle VARCHAR2 PATH '$.twitterHandle'
));
INSERT INTO address_t (customer_id, id, street, nr, city, postcode, country)
SELECT * FROM json_table( ... )
K-DB_3: Consume from Event Hub
Event
Hub
Stream Data
Integration
API
Applications / Data Sources
RDBMS
Application
Logic
API
Stream Data
Integration & Analytics
Stream
Analytics
Data Flow
REST to
Event Hub
Flat Aggregate
Low Latency High Latency
DB Dataflow
Message
Latency
ACL
Cost Free CommercialLicense
Event
Hub
Stream Data
Integration
API
Applications / Data Sources
RDBMS
Application
Logic
API
Stream Data
Integration & Analytics
Stream
Analytics
Data Flow
REST to
Event Hub
Oracle Big Data SQL
Coming soon…
K-DB_3: Consume from Event Hub
Oracle Big Data SQL exposes topic as table
Flat Aggregate
Low Latency High Latency
DB Dataflow
Message
Latency
ACL
Cost Free CommercialLicense
K-DB_4: Event Hub with bridge to RDBMS queue
Stream Data
Integration & Analytics
Stream
Analytics
Event
Hub
Stream Data
Integration
API
Data Flow
Application / Data Sources
Data Flow
Application
Logic
RDBMS
Queue
Flat Aggregate
Low Latency High Latency
DB Dataflow
Message
Latency
ACL
Cost Free CommercialLicense
Stream Data
Integration & Analytics
Stream
Analytics
Event
Hub
Stream Data
Integration
API
Data Flow
Application / Data Sources
Data Flow
Application
Logic
RDBMS
QueueAQ
K-DB_4: Event Hub with bridge to RDBMS queue
Oracle Advanced Queuing & Kafka Connect JMS
Flat Aggregate
Low Latency High Latency
DB Dataflow
Message
Latency
ACL
Cost Free CommercialLicense Oracle Advanced Queuing is part of Oracle RDBMS
Stream Data
Integration & Analytics
Stream
Analytics
Event
Hub
Stream Data
Integration
API
Data Flow
Application / Data Sources
Data Flow
Application
Logic
RDBMS
QueueAQ (Kafka API)
Oracle is working on a Kafka API
for Advanced Queuing
K-DB_4: Event Hub with bridge to RDBMS queue
Oracle AQ with Kafka API & MirrorMaker
Flat Aggregate
Low Latency High Latency
DB Dataflow
Message
Latency
ACL
Cost Free CommercialLicense
Summary
Summary
Customer Microservice
{ }
Customer API CustomerCustomer Logic
Order Processing System
{ }
Order API OrderOrder Logic
REST
REST
Event Hub
Customer
Mat View
Order
(compacted)
Customer
(compacted)
Notification Microservice
Notification Logic
Schema
Registry
K-DB_1: Write to RDBMS table/view
K-DB_2: Write over RDBMS API
K-DB_3: Consume from Event Hub
K-DB_4: Event Hub with bridge to RDBMS Queue
https://github.com/gschmutz/various-demos/tree/master/bidirectional-integration-oracle-kafka
DB-K_1: Polling of RDBMS table/view
DB-K_2: Change Data Capture (CDC) on RDBMS
DB-K_3: Polling of RDBMS API
DB-K_4: Produce to Event Hub from RDBMS
DB-K_5: RDBMS Queue with bridge to Event Hub
Bulk Source
Ref Architecture
Data Platform
Service
Event
Stream
Bulk
Data
Flow
Event Source
Location
DB
Extract
File
Weather
DB
IoT
Data
Mobile
Apps
Social
File Import / SQL Import
Consumer
BI Apps
Data Science
Workbench
Enterprise
App
Enterprise Data
Warehouse
SQL / Search
SQL
“Native” Raw
RDBMS
“SQL” / Search
Service
Event
Hub
Hadoop ClusterdHadoop ClusterBig Data Platform
SQL
Export
Storage
Storage
Raw
Refined/
UsageOpt
Microservice Cluster
Stream Processing Cluster
Stream
Processor
Model /
State
Edge Node
Rules
Event Hub
Storage
Governance
Data Catalog
Rules
Engine
Parallel
Processing
Query
Engine
Microservice Data
{ }
API
Event
Stream
Event Stream
Modern Data Platform
Event Stream
Bulk Source
Ref Architecture
Data Platform
Service
Event
Stream
Bulk
Data
Flow
Event Source
Location
DB
Extract
File
Weather
DB
IoT
Data
Mobile
Apps
Social
File Import / SQL Import
Consumer
BI Apps
Data Science
Workbench
Enterprise
App
Enterprise Data
Warehouse
SQL / Search
SQL
“Native” Raw
RDBMS
“SQL” / Search
Service
sEvent
Hub
Hadoop ClusterdHadoop ClusterBig Data Platform
SQL
Export
Storage
Storage
Raw
Refined/
UsageOpt
Microservice Cluster
Stream Processing Cluster
Stream
Processor
Model /
State
Edge Node
Rules
Event Hub
Storage
Governance
Data Catalog
Rules
Engine
Parallel
Processing
Query
Engine
Microservice Data
{ }
API
Event
Stream
Event Stream
Modern Data Platform
Event Stream
Solutions for bi-directional integration between Oracle RDBMS and Apache Kafka

More Related Content

What's hot

Solutions for bi-directional Integration between Oracle RDMBS & Apache Kafka
Solutions for bi-directional Integration between Oracle RDMBS & Apache KafkaSolutions for bi-directional Integration between Oracle RDMBS & Apache Kafka
Solutions for bi-directional Integration between Oracle RDMBS & Apache KafkaGuido Schmutz
 
ksqlDB - Stream Processing simplified!
ksqlDB - Stream Processing simplified!ksqlDB - Stream Processing simplified!
ksqlDB - Stream Processing simplified!Guido Schmutz
 
Kafka as an event store - is it good enough?
Kafka as an event store - is it good enough?Kafka as an event store - is it good enough?
Kafka as an event store - is it good enough?Guido Schmutz
 
Streaming Visualization
Streaming VisualizationStreaming Visualization
Streaming VisualizationGuido Schmutz
 
Big Data, Data Lake, Fast Data - Dataserialiation-Formats
Big Data, Data Lake, Fast Data - Dataserialiation-FormatsBig Data, Data Lake, Fast Data - Dataserialiation-Formats
Big Data, Data Lake, Fast Data - Dataserialiation-FormatsGuido Schmutz
 
Building Event Driven (Micro)services with Apache Kafka
Building Event Driven (Micro)services with Apache KafkaBuilding Event Driven (Micro)services with Apache Kafka
Building Event Driven (Micro)services with Apache KafkaGuido Schmutz
 
Building event-driven (Micro)Services with Apache Kafka
Building event-driven (Micro)Services with Apache Kafka Building event-driven (Micro)Services with Apache Kafka
Building event-driven (Micro)Services with Apache Kafka Guido Schmutz
 
Spark (Structured) Streaming vs. Kafka Streams - two stream processing platfo...
Spark (Structured) Streaming vs. Kafka Streams - two stream processing platfo...Spark (Structured) Streaming vs. Kafka Streams - two stream processing platfo...
Spark (Structured) Streaming vs. Kafka Streams - two stream processing platfo...Guido Schmutz
 
Building Event Driven (Micro)services with Apache Kafka
Building Event Driven (Micro)services with Apache KafkaBuilding Event Driven (Micro)services with Apache Kafka
Building Event Driven (Micro)services with Apache KafkaGuido Schmutz
 
Solutions for bi-directional Integration between Oracle RDMBS & Apache Kafka
Solutions for bi-directional Integration between Oracle RDMBS & Apache KafkaSolutions for bi-directional Integration between Oracle RDMBS & Apache Kafka
Solutions for bi-directional Integration between Oracle RDMBS & Apache KafkaGuido Schmutz
 
Building Event-Driven (Micro) Services with Apache Kafka
Building Event-Driven (Micro) Services with Apache KafkaBuilding Event-Driven (Micro) Services with Apache Kafka
Building Event-Driven (Micro) Services with Apache KafkaGuido Schmutz
 
Kafka as your Data Lake - is it Feasible?
Kafka as your Data Lake - is it Feasible?Kafka as your Data Lake - is it Feasible?
Kafka as your Data Lake - is it Feasible?Guido Schmutz
 
Apache Kafka - Event Sourcing, Monitoring, Librdkafka, Scaling & Partitioning
Apache Kafka - Event Sourcing, Monitoring, Librdkafka, Scaling & PartitioningApache Kafka - Event Sourcing, Monitoring, Librdkafka, Scaling & Partitioning
Apache Kafka - Event Sourcing, Monitoring, Librdkafka, Scaling & PartitioningGuido Schmutz
 
Streaming Visualization
Streaming VisualizationStreaming Visualization
Streaming VisualizationGuido Schmutz
 
Building event-driven (Micro)Services with Apache Kafka Ecosystem
Building event-driven (Micro)Services with Apache Kafka EcosystemBuilding event-driven (Micro)Services with Apache Kafka Ecosystem
Building event-driven (Micro)Services with Apache Kafka EcosystemGuido Schmutz
 
Streaming Visualisation
Streaming VisualisationStreaming Visualisation
Streaming VisualisationGuido Schmutz
 
Apache Kafka - A modern Stream Processing Platform
Apache Kafka - A modern Stream Processing PlatformApache Kafka - A modern Stream Processing Platform
Apache Kafka - A modern Stream Processing PlatformGuido Schmutz
 
Bravo Six, Going Realtime. Transitioning Activision Data Pipeline to Streaming
Bravo Six, Going Realtime. Transitioning Activision Data Pipeline to StreamingBravo Six, Going Realtime. Transitioning Activision Data Pipeline to Streaming
Bravo Six, Going Realtime. Transitioning Activision Data Pipeline to StreamingYaroslav Tkachenko
 
Streaming Visualization
Streaming VisualizationStreaming Visualization
Streaming VisualizationGuido Schmutz
 
Self-Service Data Ingestion Using NiFi, StreamSets & Kafka
Self-Service Data Ingestion Using NiFi, StreamSets & KafkaSelf-Service Data Ingestion Using NiFi, StreamSets & Kafka
Self-Service Data Ingestion Using NiFi, StreamSets & KafkaGuido Schmutz
 

What's hot (20)

Solutions for bi-directional Integration between Oracle RDMBS & Apache Kafka
Solutions for bi-directional Integration between Oracle RDMBS & Apache KafkaSolutions for bi-directional Integration between Oracle RDMBS & Apache Kafka
Solutions for bi-directional Integration between Oracle RDMBS & Apache Kafka
 
ksqlDB - Stream Processing simplified!
ksqlDB - Stream Processing simplified!ksqlDB - Stream Processing simplified!
ksqlDB - Stream Processing simplified!
 
Kafka as an event store - is it good enough?
Kafka as an event store - is it good enough?Kafka as an event store - is it good enough?
Kafka as an event store - is it good enough?
 
Streaming Visualization
Streaming VisualizationStreaming Visualization
Streaming Visualization
 
Big Data, Data Lake, Fast Data - Dataserialiation-Formats
Big Data, Data Lake, Fast Data - Dataserialiation-FormatsBig Data, Data Lake, Fast Data - Dataserialiation-Formats
Big Data, Data Lake, Fast Data - Dataserialiation-Formats
 
Building Event Driven (Micro)services with Apache Kafka
Building Event Driven (Micro)services with Apache KafkaBuilding Event Driven (Micro)services with Apache Kafka
Building Event Driven (Micro)services with Apache Kafka
 
Building event-driven (Micro)Services with Apache Kafka
Building event-driven (Micro)Services with Apache Kafka Building event-driven (Micro)Services with Apache Kafka
Building event-driven (Micro)Services with Apache Kafka
 
Spark (Structured) Streaming vs. Kafka Streams - two stream processing platfo...
Spark (Structured) Streaming vs. Kafka Streams - two stream processing platfo...Spark (Structured) Streaming vs. Kafka Streams - two stream processing platfo...
Spark (Structured) Streaming vs. Kafka Streams - two stream processing platfo...
 
Building Event Driven (Micro)services with Apache Kafka
Building Event Driven (Micro)services with Apache KafkaBuilding Event Driven (Micro)services with Apache Kafka
Building Event Driven (Micro)services with Apache Kafka
 
Solutions for bi-directional Integration between Oracle RDMBS & Apache Kafka
Solutions for bi-directional Integration between Oracle RDMBS & Apache KafkaSolutions for bi-directional Integration between Oracle RDMBS & Apache Kafka
Solutions for bi-directional Integration between Oracle RDMBS & Apache Kafka
 
Building Event-Driven (Micro) Services with Apache Kafka
Building Event-Driven (Micro) Services with Apache KafkaBuilding Event-Driven (Micro) Services with Apache Kafka
Building Event-Driven (Micro) Services with Apache Kafka
 
Kafka as your Data Lake - is it Feasible?
Kafka as your Data Lake - is it Feasible?Kafka as your Data Lake - is it Feasible?
Kafka as your Data Lake - is it Feasible?
 
Apache Kafka - Event Sourcing, Monitoring, Librdkafka, Scaling & Partitioning
Apache Kafka - Event Sourcing, Monitoring, Librdkafka, Scaling & PartitioningApache Kafka - Event Sourcing, Monitoring, Librdkafka, Scaling & Partitioning
Apache Kafka - Event Sourcing, Monitoring, Librdkafka, Scaling & Partitioning
 
Streaming Visualization
Streaming VisualizationStreaming Visualization
Streaming Visualization
 
Building event-driven (Micro)Services with Apache Kafka Ecosystem
Building event-driven (Micro)Services with Apache Kafka EcosystemBuilding event-driven (Micro)Services with Apache Kafka Ecosystem
Building event-driven (Micro)Services with Apache Kafka Ecosystem
 
Streaming Visualisation
Streaming VisualisationStreaming Visualisation
Streaming Visualisation
 
Apache Kafka - A modern Stream Processing Platform
Apache Kafka - A modern Stream Processing PlatformApache Kafka - A modern Stream Processing Platform
Apache Kafka - A modern Stream Processing Platform
 
Bravo Six, Going Realtime. Transitioning Activision Data Pipeline to Streaming
Bravo Six, Going Realtime. Transitioning Activision Data Pipeline to StreamingBravo Six, Going Realtime. Transitioning Activision Data Pipeline to Streaming
Bravo Six, Going Realtime. Transitioning Activision Data Pipeline to Streaming
 
Streaming Visualization
Streaming VisualizationStreaming Visualization
Streaming Visualization
 
Self-Service Data Ingestion Using NiFi, StreamSets & Kafka
Self-Service Data Ingestion Using NiFi, StreamSets & KafkaSelf-Service Data Ingestion Using NiFi, StreamSets & Kafka
Self-Service Data Ingestion Using NiFi, StreamSets & Kafka
 

Similar to Solutions for bi-directional integration between Oracle RDBMS and Apache Kafka

Solutions for bi-directional integration between Oracle RDBMS and Apache Kafk...
Solutions for bi-directional integration between Oracle RDBMS and Apache Kafk...Solutions for bi-directional integration between Oracle RDBMS and Apache Kafk...
Solutions for bi-directional integration between Oracle RDBMS and Apache Kafk...confluent
 
The Story of How an Oracle Classic Stronghold successfully embraced SOA (ODTU...
The Story of How an Oracle Classic Stronghold successfully embraced SOA (ODTU...The Story of How an Oracle Classic Stronghold successfully embraced SOA (ODTU...
The Story of How an Oracle Classic Stronghold successfully embraced SOA (ODTU...Lucas Jellema
 
The Story of How an Oracle Classic Stronghold successfully embraced SOA
The Story of How an Oracle Classic Stronghold successfully embraced SOAThe Story of How an Oracle Classic Stronghold successfully embraced SOA
The Story of How an Oracle Classic Stronghold successfully embraced SOALucas Jellema
 
SAP integration sample payloads for Azure Logic Apps
SAP integration sample payloads for Azure Logic AppsSAP integration sample payloads for Azure Logic Apps
SAP integration sample payloads for Azure Logic AppsDavid Burg
 
What's New in Confluent Platform 5.5
What's New in Confluent Platform 5.5What's New in Confluent Platform 5.5
What's New in Confluent Platform 5.5confluent
 
🏗️Improve database performance with connection pooling and load balancing tec...
🏗️Improve database performance with connection pooling and load balancing tec...🏗️Improve database performance with connection pooling and load balancing tec...
🏗️Improve database performance with connection pooling and load balancing tec...Alireza Kamrani
 
Sap xi online training
Sap xi online trainingSap xi online training
Sap xi online trainingVenkat reddy
 
Scalable Stream Processing with Apache Samza
Scalable Stream Processing with Apache SamzaScalable Stream Processing with Apache Samza
Scalable Stream Processing with Apache SamzaPrateek Maheshwari
 
Document Databases & RavenDB
Document Databases & RavenDBDocument Databases & RavenDB
Document Databases & RavenDBBrian Ritchie
 
Kafka streams - From pub/sub to a complete stream processing platform
Kafka streams - From pub/sub to a complete stream processing platformKafka streams - From pub/sub to a complete stream processing platform
Kafka streams - From pub/sub to a complete stream processing platformPaolo Castagna
 
Windows Azure - Uma Plataforma para o Desenvolvimento de Aplicações
Windows Azure - Uma Plataforma para o Desenvolvimento de AplicaçõesWindows Azure - Uma Plataforma para o Desenvolvimento de Aplicações
Windows Azure - Uma Plataforma para o Desenvolvimento de AplicaçõesComunidade NetPonto
 
Serverless Data Platform
Serverless Data PlatformServerless Data Platform
Serverless Data PlatformShu-Jeng Hsieh
 
Interoperable Web Services with JAX-WS and WSIT
Interoperable Web Services with JAX-WS and WSITInteroperable Web Services with JAX-WS and WSIT
Interoperable Web Services with JAX-WS and WSITCarol McDonald
 
Michael Hackstein - Polyglot Persistence & Multi-Model NoSQL Databases - NoSQ...
Michael Hackstein - Polyglot Persistence & Multi-Model NoSQL Databases - NoSQ...Michael Hackstein - Polyglot Persistence & Multi-Model NoSQL Databases - NoSQ...
Michael Hackstein - Polyglot Persistence & Multi-Model NoSQL Databases - NoSQ...NoSQLmatters
 
Transformation Processing Smackdown; Spark vs Hive vs Pig
Transformation Processing Smackdown; Spark vs Hive vs PigTransformation Processing Smackdown; Spark vs Hive vs Pig
Transformation Processing Smackdown; Spark vs Hive vs PigLester Martin
 
Cloud Native Applications on OpenShift
Cloud Native Applications on OpenShiftCloud Native Applications on OpenShift
Cloud Native Applications on OpenShiftSerhat Dirik
 
Architecting Solutions Leveraging The Cloud
Architecting Solutions Leveraging The CloudArchitecting Solutions Leveraging The Cloud
Architecting Solutions Leveraging The CloudDavid Chou
 
Event Broker (Kafka) in a Modern Data Architecture
Event Broker (Kafka) in a Modern Data ArchitectureEvent Broker (Kafka) in a Modern Data Architecture
Event Broker (Kafka) in a Modern Data ArchitectureGuido Schmutz
 
Cowboy Dating with Big Data or DWH Evolution in Action, Борис Трофимов
Cowboy Dating with Big Data or DWH Evolution in Action, Борис ТрофимовCowboy Dating with Big Data or DWH Evolution in Action, Борис Трофимов
Cowboy Dating with Big Data or DWH Evolution in Action, Борис ТрофимовSigma Software
 

Similar to Solutions for bi-directional integration between Oracle RDBMS and Apache Kafka (20)

Solutions for bi-directional integration between Oracle RDBMS and Apache Kafk...
Solutions for bi-directional integration between Oracle RDBMS and Apache Kafk...Solutions for bi-directional integration between Oracle RDBMS and Apache Kafk...
Solutions for bi-directional integration between Oracle RDBMS and Apache Kafk...
 
The Story of How an Oracle Classic Stronghold successfully embraced SOA (ODTU...
The Story of How an Oracle Classic Stronghold successfully embraced SOA (ODTU...The Story of How an Oracle Classic Stronghold successfully embraced SOA (ODTU...
The Story of How an Oracle Classic Stronghold successfully embraced SOA (ODTU...
 
The Story of How an Oracle Classic Stronghold successfully embraced SOA
The Story of How an Oracle Classic Stronghold successfully embraced SOAThe Story of How an Oracle Classic Stronghold successfully embraced SOA
The Story of How an Oracle Classic Stronghold successfully embraced SOA
 
SAP integration sample payloads for Azure Logic Apps
SAP integration sample payloads for Azure Logic AppsSAP integration sample payloads for Azure Logic Apps
SAP integration sample payloads for Azure Logic Apps
 
What's New in Confluent Platform 5.5
What's New in Confluent Platform 5.5What's New in Confluent Platform 5.5
What's New in Confluent Platform 5.5
 
🏗️Improve database performance with connection pooling and load balancing tec...
🏗️Improve database performance with connection pooling and load balancing tec...🏗️Improve database performance with connection pooling and load balancing tec...
🏗️Improve database performance with connection pooling and load balancing tec...
 
Sap xi online training
Sap xi online trainingSap xi online training
Sap xi online training
 
Scalable Stream Processing with Apache Samza
Scalable Stream Processing with Apache SamzaScalable Stream Processing with Apache Samza
Scalable Stream Processing with Apache Samza
 
Document Databases & RavenDB
Document Databases & RavenDBDocument Databases & RavenDB
Document Databases & RavenDB
 
Kafka streams - From pub/sub to a complete stream processing platform
Kafka streams - From pub/sub to a complete stream processing platformKafka streams - From pub/sub to a complete stream processing platform
Kafka streams - From pub/sub to a complete stream processing platform
 
Windows Azure - Uma Plataforma para o Desenvolvimento de Aplicações
Windows Azure - Uma Plataforma para o Desenvolvimento de AplicaçõesWindows Azure - Uma Plataforma para o Desenvolvimento de Aplicações
Windows Azure - Uma Plataforma para o Desenvolvimento de Aplicações
 
Serverless Data Platform
Serverless Data PlatformServerless Data Platform
Serverless Data Platform
 
Interoperable Web Services with JAX-WS and WSIT
Interoperable Web Services with JAX-WS and WSITInteroperable Web Services with JAX-WS and WSIT
Interoperable Web Services with JAX-WS and WSIT
 
Michael Hackstein - Polyglot Persistence & Multi-Model NoSQL Databases - NoSQ...
Michael Hackstein - Polyglot Persistence & Multi-Model NoSQL Databases - NoSQ...Michael Hackstein - Polyglot Persistence & Multi-Model NoSQL Databases - NoSQ...
Michael Hackstein - Polyglot Persistence & Multi-Model NoSQL Databases - NoSQ...
 
Transformation Processing Smackdown; Spark vs Hive vs Pig
Transformation Processing Smackdown; Spark vs Hive vs PigTransformation Processing Smackdown; Spark vs Hive vs Pig
Transformation Processing Smackdown; Spark vs Hive vs Pig
 
Cloud Native Applications on OpenShift
Cloud Native Applications on OpenShiftCloud Native Applications on OpenShift
Cloud Native Applications on OpenShift
 
Architecting Solutions Leveraging The Cloud
Architecting Solutions Leveraging The CloudArchitecting Solutions Leveraging The Cloud
Architecting Solutions Leveraging The Cloud
 
Event Broker (Kafka) in a Modern Data Architecture
Event Broker (Kafka) in a Modern Data ArchitectureEvent Broker (Kafka) in a Modern Data Architecture
Event Broker (Kafka) in a Modern Data Architecture
 
Cowboy Dating with Big Data or DWH Evolution in Action, Борис Трофимов
Cowboy Dating with Big Data or DWH Evolution in Action, Борис ТрофимовCowboy Dating with Big Data or DWH Evolution in Action, Борис Трофимов
Cowboy Dating with Big Data or DWH Evolution in Action, Борис Трофимов
 
CouchDB
CouchDBCouchDB
CouchDB
 

More from Guido Schmutz

30 Minutes to the Analytics Platform with Infrastructure as Code
30 Minutes to the Analytics Platform with Infrastructure as Code30 Minutes to the Analytics Platform with Infrastructure as Code
30 Minutes to the Analytics Platform with Infrastructure as CodeGuido Schmutz
 
Event Hub (i.e. Kafka) in Modern Data (Analytics) Architecture
Event Hub (i.e. Kafka) in Modern Data (Analytics) ArchitectureEvent Hub (i.e. Kafka) in Modern Data (Analytics) Architecture
Event Hub (i.e. Kafka) in Modern Data (Analytics) ArchitectureGuido Schmutz
 
Location Analytics - Real-Time Geofencing using Apache Kafka
Location Analytics - Real-Time Geofencing using Apache KafkaLocation Analytics - Real-Time Geofencing using Apache Kafka
Location Analytics - Real-Time Geofencing using Apache KafkaGuido Schmutz
 
What is Apache Kafka? Why is it so popular? Should I use it?
What is Apache Kafka? Why is it so popular? Should I use it?What is Apache Kafka? Why is it so popular? Should I use it?
What is Apache Kafka? Why is it so popular? Should I use it?Guido Schmutz
 
Location Analytics Real-Time Geofencing using Kafka
Location Analytics Real-Time Geofencing using KafkaLocation Analytics Real-Time Geofencing using Kafka
Location Analytics Real-Time Geofencing using KafkaGuido Schmutz
 
Fundamentals Big Data and AI Architecture
Fundamentals Big Data and AI ArchitectureFundamentals Big Data and AI Architecture
Fundamentals Big Data and AI ArchitectureGuido Schmutz
 
Location Analytics - Real Time Geofencing using Apache Kafka
Location Analytics - Real Time Geofencing using Apache KafkaLocation Analytics - Real Time Geofencing using Apache Kafka
Location Analytics - Real Time Geofencing using Apache KafkaGuido Schmutz
 
Introduction to Stream Processing
Introduction to Stream ProcessingIntroduction to Stream Processing
Introduction to Stream ProcessingGuido Schmutz
 
Stream Processing – Concepts and Frameworks
Stream Processing – Concepts and FrameworksStream Processing – Concepts and Frameworks
Stream Processing – Concepts and FrameworksGuido Schmutz
 
Kafka as an Event Store - is it Good Enough?
Kafka as an Event Store - is it Good Enough?Kafka as an Event Store - is it Good Enough?
Kafka as an Event Store - is it Good Enough?Guido Schmutz
 
Introduction to Stream Processing
Introduction to Stream ProcessingIntroduction to Stream Processing
Introduction to Stream ProcessingGuido Schmutz
 

More from Guido Schmutz (11)

30 Minutes to the Analytics Platform with Infrastructure as Code
30 Minutes to the Analytics Platform with Infrastructure as Code30 Minutes to the Analytics Platform with Infrastructure as Code
30 Minutes to the Analytics Platform with Infrastructure as Code
 
Event Hub (i.e. Kafka) in Modern Data (Analytics) Architecture
Event Hub (i.e. Kafka) in Modern Data (Analytics) ArchitectureEvent Hub (i.e. Kafka) in Modern Data (Analytics) Architecture
Event Hub (i.e. Kafka) in Modern Data (Analytics) Architecture
 
Location Analytics - Real-Time Geofencing using Apache Kafka
Location Analytics - Real-Time Geofencing using Apache KafkaLocation Analytics - Real-Time Geofencing using Apache Kafka
Location Analytics - Real-Time Geofencing using Apache Kafka
 
What is Apache Kafka? Why is it so popular? Should I use it?
What is Apache Kafka? Why is it so popular? Should I use it?What is Apache Kafka? Why is it so popular? Should I use it?
What is Apache Kafka? Why is it so popular? Should I use it?
 
Location Analytics Real-Time Geofencing using Kafka
Location Analytics Real-Time Geofencing using KafkaLocation Analytics Real-Time Geofencing using Kafka
Location Analytics Real-Time Geofencing using Kafka
 
Fundamentals Big Data and AI Architecture
Fundamentals Big Data and AI ArchitectureFundamentals Big Data and AI Architecture
Fundamentals Big Data and AI Architecture
 
Location Analytics - Real Time Geofencing using Apache Kafka
Location Analytics - Real Time Geofencing using Apache KafkaLocation Analytics - Real Time Geofencing using Apache Kafka
Location Analytics - Real Time Geofencing using Apache Kafka
 
Introduction to Stream Processing
Introduction to Stream ProcessingIntroduction to Stream Processing
Introduction to Stream Processing
 
Stream Processing – Concepts and Frameworks
Stream Processing – Concepts and FrameworksStream Processing – Concepts and Frameworks
Stream Processing – Concepts and Frameworks
 
Kafka as an Event Store - is it Good Enough?
Kafka as an Event Store - is it Good Enough?Kafka as an Event Store - is it Good Enough?
Kafka as an Event Store - is it Good Enough?
 
Introduction to Stream Processing
Introduction to Stream ProcessingIntroduction to Stream Processing
Introduction to Stream Processing
 

Recently uploaded

From idea to production in a day – Leveraging Azure ML and Streamlit to build...
From idea to production in a day – Leveraging Azure ML and Streamlit to build...From idea to production in a day – Leveraging Azure ML and Streamlit to build...
From idea to production in a day – Leveraging Azure ML and Streamlit to build...Florian Roscheck
 
RS 9000 Call In girls Dwarka Mor (DELHI)⇛9711147426🔝Delhi
RS 9000 Call In girls Dwarka Mor (DELHI)⇛9711147426🔝DelhiRS 9000 Call In girls Dwarka Mor (DELHI)⇛9711147426🔝Delhi
RS 9000 Call In girls Dwarka Mor (DELHI)⇛9711147426🔝Delhijennyeacort
 
RadioAdProWritingCinderellabyButleri.pdf
RadioAdProWritingCinderellabyButleri.pdfRadioAdProWritingCinderellabyButleri.pdf
RadioAdProWritingCinderellabyButleri.pdfgstagge
 
INTERNSHIP ON PURBASHA COMPOSITE TEX LTD
INTERNSHIP ON PURBASHA COMPOSITE TEX LTDINTERNSHIP ON PURBASHA COMPOSITE TEX LTD
INTERNSHIP ON PURBASHA COMPOSITE TEX LTDRafezzaman
 
Industrialised data - the key to AI success.pdf
Industrialised data - the key to AI success.pdfIndustrialised data - the key to AI success.pdf
Industrialised data - the key to AI success.pdfLars Albertsson
 
GA4 Without Cookies [Measure Camp AMS]
GA4 Without Cookies [Measure Camp AMS]GA4 Without Cookies [Measure Camp AMS]
GA4 Without Cookies [Measure Camp AMS]📊 Markus Baersch
 
Customer Service Analytics - Make Sense of All Your Data.pptx
Customer Service Analytics - Make Sense of All Your Data.pptxCustomer Service Analytics - Make Sense of All Your Data.pptx
Customer Service Analytics - Make Sense of All Your Data.pptxEmmanuel Dauda
 
专业一比一美国俄亥俄大学毕业证成绩单pdf电子版制作修改
专业一比一美国俄亥俄大学毕业证成绩单pdf电子版制作修改专业一比一美国俄亥俄大学毕业证成绩单pdf电子版制作修改
专业一比一美国俄亥俄大学毕业证成绩单pdf电子版制作修改yuu sss
 
办理学位证中佛罗里达大学毕业证,UCF成绩单原版一比一
办理学位证中佛罗里达大学毕业证,UCF成绩单原版一比一办理学位证中佛罗里达大学毕业证,UCF成绩单原版一比一
办理学位证中佛罗里达大学毕业证,UCF成绩单原版一比一F sss
 
Saket, (-DELHI )+91-9654467111-(=)CHEAP Call Girls in Escorts Service Saket C...
Saket, (-DELHI )+91-9654467111-(=)CHEAP Call Girls in Escorts Service Saket C...Saket, (-DELHI )+91-9654467111-(=)CHEAP Call Girls in Escorts Service Saket C...
Saket, (-DELHI )+91-9654467111-(=)CHEAP Call Girls in Escorts Service Saket C...Sapana Sha
 
Data Science Jobs and Salaries Analysis.pptx
Data Science Jobs and Salaries Analysis.pptxData Science Jobs and Salaries Analysis.pptx
Data Science Jobs and Salaries Analysis.pptxFurkanTasci3
 
dokumen.tips_chapter-4-transient-heat-conduction-mehmet-kanoglu.ppt
dokumen.tips_chapter-4-transient-heat-conduction-mehmet-kanoglu.pptdokumen.tips_chapter-4-transient-heat-conduction-mehmet-kanoglu.ppt
dokumen.tips_chapter-4-transient-heat-conduction-mehmet-kanoglu.pptSonatrach
 
VIP Call Girls Service Miyapur Hyderabad Call +91-8250192130
VIP Call Girls Service Miyapur Hyderabad Call +91-8250192130VIP Call Girls Service Miyapur Hyderabad Call +91-8250192130
VIP Call Girls Service Miyapur Hyderabad Call +91-8250192130Suhani Kapoor
 
Call Us ➥97111√47426🤳Call Girls in Aerocity (Delhi NCR)
Call Us ➥97111√47426🤳Call Girls in Aerocity (Delhi NCR)Call Us ➥97111√47426🤳Call Girls in Aerocity (Delhi NCR)
Call Us ➥97111√47426🤳Call Girls in Aerocity (Delhi NCR)jennyeacort
 
Call Girls In Mahipalpur O9654467111 Escorts Service
Call Girls In Mahipalpur O9654467111  Escorts ServiceCall Girls In Mahipalpur O9654467111  Escorts Service
Call Girls In Mahipalpur O9654467111 Escorts ServiceSapana Sha
 
vip Sarai Rohilla Call Girls 9999965857 Call or WhatsApp Now Book
vip Sarai Rohilla Call Girls 9999965857 Call or WhatsApp Now Bookvip Sarai Rohilla Call Girls 9999965857 Call or WhatsApp Now Book
vip Sarai Rohilla Call Girls 9999965857 Call or WhatsApp Now Bookmanojkuma9823
 
1:1定制(UQ毕业证)昆士兰大学毕业证成绩单修改留信学历认证原版一模一样
1:1定制(UQ毕业证)昆士兰大学毕业证成绩单修改留信学历认证原版一模一样1:1定制(UQ毕业证)昆士兰大学毕业证成绩单修改留信学历认证原版一模一样
1:1定制(UQ毕业证)昆士兰大学毕业证成绩单修改留信学历认证原版一模一样vhwb25kk
 
EMERCE - 2024 - AMSTERDAM - CROSS-PLATFORM TRACKING WITH GOOGLE ANALYTICS.pptx
EMERCE - 2024 - AMSTERDAM - CROSS-PLATFORM  TRACKING WITH GOOGLE ANALYTICS.pptxEMERCE - 2024 - AMSTERDAM - CROSS-PLATFORM  TRACKING WITH GOOGLE ANALYTICS.pptx
EMERCE - 2024 - AMSTERDAM - CROSS-PLATFORM TRACKING WITH GOOGLE ANALYTICS.pptxthyngster
 
DBA Basics: Getting Started with Performance Tuning.pdf
DBA Basics: Getting Started with Performance Tuning.pdfDBA Basics: Getting Started with Performance Tuning.pdf
DBA Basics: Getting Started with Performance Tuning.pdfJohn Sterrett
 

Recently uploaded (20)

From idea to production in a day – Leveraging Azure ML and Streamlit to build...
From idea to production in a day – Leveraging Azure ML and Streamlit to build...From idea to production in a day – Leveraging Azure ML and Streamlit to build...
From idea to production in a day – Leveraging Azure ML and Streamlit to build...
 
RS 9000 Call In girls Dwarka Mor (DELHI)⇛9711147426🔝Delhi
RS 9000 Call In girls Dwarka Mor (DELHI)⇛9711147426🔝DelhiRS 9000 Call In girls Dwarka Mor (DELHI)⇛9711147426🔝Delhi
RS 9000 Call In girls Dwarka Mor (DELHI)⇛9711147426🔝Delhi
 
RadioAdProWritingCinderellabyButleri.pdf
RadioAdProWritingCinderellabyButleri.pdfRadioAdProWritingCinderellabyButleri.pdf
RadioAdProWritingCinderellabyButleri.pdf
 
INTERNSHIP ON PURBASHA COMPOSITE TEX LTD
INTERNSHIP ON PURBASHA COMPOSITE TEX LTDINTERNSHIP ON PURBASHA COMPOSITE TEX LTD
INTERNSHIP ON PURBASHA COMPOSITE TEX LTD
 
Industrialised data - the key to AI success.pdf
Industrialised data - the key to AI success.pdfIndustrialised data - the key to AI success.pdf
Industrialised data - the key to AI success.pdf
 
GA4 Without Cookies [Measure Camp AMS]
GA4 Without Cookies [Measure Camp AMS]GA4 Without Cookies [Measure Camp AMS]
GA4 Without Cookies [Measure Camp AMS]
 
Customer Service Analytics - Make Sense of All Your Data.pptx
Customer Service Analytics - Make Sense of All Your Data.pptxCustomer Service Analytics - Make Sense of All Your Data.pptx
Customer Service Analytics - Make Sense of All Your Data.pptx
 
专业一比一美国俄亥俄大学毕业证成绩单pdf电子版制作修改
专业一比一美国俄亥俄大学毕业证成绩单pdf电子版制作修改专业一比一美国俄亥俄大学毕业证成绩单pdf电子版制作修改
专业一比一美国俄亥俄大学毕业证成绩单pdf电子版制作修改
 
办理学位证中佛罗里达大学毕业证,UCF成绩单原版一比一
办理学位证中佛罗里达大学毕业证,UCF成绩单原版一比一办理学位证中佛罗里达大学毕业证,UCF成绩单原版一比一
办理学位证中佛罗里达大学毕业证,UCF成绩单原版一比一
 
Saket, (-DELHI )+91-9654467111-(=)CHEAP Call Girls in Escorts Service Saket C...
Saket, (-DELHI )+91-9654467111-(=)CHEAP Call Girls in Escorts Service Saket C...Saket, (-DELHI )+91-9654467111-(=)CHEAP Call Girls in Escorts Service Saket C...
Saket, (-DELHI )+91-9654467111-(=)CHEAP Call Girls in Escorts Service Saket C...
 
Data Science Jobs and Salaries Analysis.pptx
Data Science Jobs and Salaries Analysis.pptxData Science Jobs and Salaries Analysis.pptx
Data Science Jobs and Salaries Analysis.pptx
 
dokumen.tips_chapter-4-transient-heat-conduction-mehmet-kanoglu.ppt
dokumen.tips_chapter-4-transient-heat-conduction-mehmet-kanoglu.pptdokumen.tips_chapter-4-transient-heat-conduction-mehmet-kanoglu.ppt
dokumen.tips_chapter-4-transient-heat-conduction-mehmet-kanoglu.ppt
 
VIP Call Girls Service Miyapur Hyderabad Call +91-8250192130
VIP Call Girls Service Miyapur Hyderabad Call +91-8250192130VIP Call Girls Service Miyapur Hyderabad Call +91-8250192130
VIP Call Girls Service Miyapur Hyderabad Call +91-8250192130
 
Call Us ➥97111√47426🤳Call Girls in Aerocity (Delhi NCR)
Call Us ➥97111√47426🤳Call Girls in Aerocity (Delhi NCR)Call Us ➥97111√47426🤳Call Girls in Aerocity (Delhi NCR)
Call Us ➥97111√47426🤳Call Girls in Aerocity (Delhi NCR)
 
Call Girls In Mahipalpur O9654467111 Escorts Service
Call Girls In Mahipalpur O9654467111  Escorts ServiceCall Girls In Mahipalpur O9654467111  Escorts Service
Call Girls In Mahipalpur O9654467111 Escorts Service
 
vip Sarai Rohilla Call Girls 9999965857 Call or WhatsApp Now Book
vip Sarai Rohilla Call Girls 9999965857 Call or WhatsApp Now Bookvip Sarai Rohilla Call Girls 9999965857 Call or WhatsApp Now Book
vip Sarai Rohilla Call Girls 9999965857 Call or WhatsApp Now Book
 
Call Girls in Saket 99530🔝 56974 Escort Service
Call Girls in Saket 99530🔝 56974 Escort ServiceCall Girls in Saket 99530🔝 56974 Escort Service
Call Girls in Saket 99530🔝 56974 Escort Service
 
1:1定制(UQ毕业证)昆士兰大学毕业证成绩单修改留信学历认证原版一模一样
1:1定制(UQ毕业证)昆士兰大学毕业证成绩单修改留信学历认证原版一模一样1:1定制(UQ毕业证)昆士兰大学毕业证成绩单修改留信学历认证原版一模一样
1:1定制(UQ毕业证)昆士兰大学毕业证成绩单修改留信学历认证原版一模一样
 
EMERCE - 2024 - AMSTERDAM - CROSS-PLATFORM TRACKING WITH GOOGLE ANALYTICS.pptx
EMERCE - 2024 - AMSTERDAM - CROSS-PLATFORM  TRACKING WITH GOOGLE ANALYTICS.pptxEMERCE - 2024 - AMSTERDAM - CROSS-PLATFORM  TRACKING WITH GOOGLE ANALYTICS.pptx
EMERCE - 2024 - AMSTERDAM - CROSS-PLATFORM TRACKING WITH GOOGLE ANALYTICS.pptx
 
DBA Basics: Getting Started with Performance Tuning.pdf
DBA Basics: Getting Started with Performance Tuning.pdfDBA Basics: Getting Started with Performance Tuning.pdf
DBA Basics: Getting Started with Performance Tuning.pdf
 

Solutions for bi-directional integration between Oracle RDBMS and Apache Kafka

  • 1. BASEL | BERN | BRUGG | BUCHAREST | COPENHAGEN | DÜSSELDORF | FRANKFURT A.M. | FREIBURG I.BR. GENEVA | HAMBURG | LAUSANNE | MANNHEIM | MUNICH | STUTTGART | VIENNA | ZURICH http://guidoschmutz@wordpress.com@gschmutz Solutions for bi-directional integration between Oracle RDBMS & Apache Kafka Guido Schmutz UKOUG Techfest 2019
  • 2. Agenda 1. Introduction 2. Blueprints Oracle RDBMS => Apache Kafka 3. Blueprints Apache Kafka => Oracle RDBMS 4. Summary
  • 3. BASEL | BERN | BRUGG | BUKAREST | DÜSSELDORF | FRANKFURT A.M. | FREIBURG I.BR. | GENF HAMBURG | KOPENHAGEN | LAUSANNE | MANNHEIM | MÜNCHEN | STUTTGART | WIEN | ZÜRICH Guido Working at Trivadis for more than 22 years Consultant, Trainer, Platform Architect for Java, Oracle, SOA and Big Data / Fast Data Oracle Groundbreaker Ambassador & Oracle ACE Director @gschmutz guidoschmutz.wordpress.com 175th edition
  • 5. Microservices / Modern Applications • Highly decoupled • Independently deployable • Bounded Context/Aggregate (DDD) • Responsible for their data • Favour asynchronous, event-driven interaction over synchronous • Smart Endpoints and Dump Pipes • Use Anti-Corruption Layer (ACL) if no fit! M3M2 ACL Event Hub M1
  • 6. Microservices / Modern Applications Integrate with Traditional System M3M2 ACL Event Hub M1 ACL • Highly decoupled • Independently deployable • Bounded Context/Aggregate (DDD) • Responsible for their data • Favour asynchronous, event-driven interaction over synchronous • Smart Endpoints and Dump Pipes • Use Anti-Corruption Layer (ACL) if no fit! Traditional App
  • 7. Apache Kafka – A Streaming Platform Kafka Cluster Consumer 1 Consume 2r Broker 1 Broker 2 Broker 3 Zookeeper Ensemble ZK 1 ZK 2ZK 3 Schema Registry Service 1 Management Control Center Kafka Manager KAdmin Producer 1 Producer 2 kafkacat Data Retention: • Never • Time (TTL) or Size-based • Log-Compacted based Producer3Producer3 ConsumerConsumer 3
  • 8. Use Case Customer Microservice { } Customer API CustomerCustomer Logic Order Processing System { } Order API OrderOrder Logic REST REST Event Hub Customer Mat View Order Customer (compacted) Notification Microservice Notification Logic “Modern Apps”Traditional Apps (Legacy) Flat Aggregate Low Latency High Latency DB Dataflow Message Latency ACL Cost Free CommercialLicense
  • 9. MessageMessageMessageMessage MessageMessage Properties - Message Message Message A1 A2 A3 Message B1 B2 B3 B4 A1 A2 A3 B B1 B2 B3 B4 Table A A1 A2 A3 Table B B1 B2 B3 B4 FlatDB Model Aggregate Flat Aggregate Low Latency High Latency DB Dataflow Message Latency ACL Cost Free CommercialLicense
  • 10. Properties - Latency Traditional System Event Hub Data Flow RDBMS latency latency Flat Aggregate Low Latency High Latency DB Dataflow Message Latency ACL Cost Free CommercialLicense
  • 11. Properties – Anti-Corruption Layer (ACL) Traditional System Event Hub Data Flow RDBMS Traditional System Event Hub Data Flow RDBMS ACL ACL Flat Aggregate Low Latency High Latency DB Dataflow Message Latency ACL Cost Free CommercialLicense Examples: • View Layer • Storage Procedure • JSON Support in DB • … Examples: • StreamSets • Kafka Connect • Kafka Streams / KSQL • … Database Dataflow
  • 12. Properties – License • Cost Free • either part of Oracle RDMBS license • or part of Kafka license (if Confluent Enterprise is used) • or a free software (mostly open source) component • Commercial • an additional component involving license costs Flat Aggregate Low Latency High Latency DB Dataflow Message Latency ACL Cost Free CommercialLicense
  • 13. Blueprints Oracle RDBMS => Apache Kafka
  • 14. Blueprints Oracle RDBMS => Apache Kafka (DB-K) Customer Microservice { } Customer API CustomerCustomer Logic Order Processing System { } Order API OrderOrder Logic REST REST Event Hub Customer Mat View Order (compacted) Customer (compacted) Notification Microservice Notification Logic Schema Registry DB-K_1: Polling of RDBMS table/view DB-K_2: Change Data Capture (CDC) on RDBMS DB-K_3: Polling of RDBMS API DB-K_4: Produce to Event Hub from RDBMS DB-K_5: RDBMS Queue with bridge to Event Hub
  • 15. DB-K_1: Polling of RDBMS table/view Event Hub Stream Data Integration API Applications / Data Sources Data FlowRDBMS Application Logic Stream Data Integration & Analytics Stream Analytics Data Flow Flat Aggregate Low Latency High Latency DB Dataflow Message Latency ACL Cost Free CommercialLicense
  • 16. Event Hub Stream Data Integration API Applications / Data Sources Data FlowRDBMS Application Logic Stream Data Integration & Analytics Stream Analytics Data Flow Flat Aggregate Low Latency High Latency DB Dataflow Message Latency ACL Cost Free CommercialLicense DB-K_1: Polling of RDBMS table/view Kafka Connect with JDBC Source Connector JDBC Connector part of Confluent Open Source Platform
  • 17. Kafka Connect & JDBC Connector • Many connectors available • Single Message Transforms (SMT) • declarative style, simple data flows • framework is part of Apache Kafka https://www.confluent.io/hub
  • 18. DB-K_1 – Configure JDBC Connector #!/bin/bash curl -X "POST" "http://192.168.69.138:8083/connectors" -H "Content-Type: application/json" -d $'{ "name": "jdbc-driver-source", "config": { "connector.class": "JdbcSourceConnector", "connection.url":"jdbc:oracle:thin//oracle-db:1521/XEPDB1", "mode": "timestamp", "timestamp.column.name":”modified_at", "table.whitelist":”order", "validate.non.null":"false", "topic.prefix":”orderprocessing_", "key.converter":"org.apache.kafka.connect.json.JsonConverter", "key.converter.schemas.enable": "false", "value.converter":"org.apache.kafka.connect.json.JsonConverter", "value.converter.schemas.enable": "false", "name": "jdbc-driver-source", "transforms":"createKey,extractInt", "transforms.createKey.type":"org.apache.kafka.connect.transforms.ValueToKey", "transforms.createKey.fields":"id", "transforms.extractInt.type":"org.apache.kafka.connect.transforms.ExtractField$Key", "transforms.extractInt.field":"id" } }'
  • 19. DB-K_2: Change Data Capture (CDC) on RDBMS Stream Data Integration & Analytics Stream Analytics Event Hub Stream Data Integration API Data Flow Application / Data Sources Data Flow Application Logic RDBMS Redo Log REST to Event Hub Flat Aggregate Low Latency High Latency DB Dataflow Message Latency ACL Cost Free CommercialLicense
  • 20. Stream Data Integration & Analytics Stream Analytics Event Hub Stream Data Integration API Data Flow Application / Data Sources Data Flow Application Logic RDBMS Redo Log REST to Event Hub Rest Proxy DB-K_2: Change Data Capture (CDC) on RDBMS Using Oracle GoldenGate Flat Aggregate Low Latency High Latency DB Dataflow Message Latency ACL Cost Free CommercialLicense Alternatives: StreamSets Data Collector Attunity Debezium …
  • 21. DB-K_3: Polling of RDBMS API Event Hub Stream Data Integration API Applications / Data Sources Data Flow RDBMS Application Logic API Stream Data Integration & Analytics Stream Analytics Data Flow Flat Aggregate Low Latency High Latency DB Dataflow Message Latency ACL Cost Free CommercialLicense
  • 22. Event Hub Stream Data Integration API Applications / Data Sources Data Flow RDBMS Application Logic API Stream Data Integration & Analytics Stream Analytics Data Flow DB-K_3: Polling of RDBMS API StreamSets invokes Oracle Rest Data Service Flat Aggregate Low Latency High Latency DB Dataflow Message Latency ACL Cost Free CommercialLicense Oracle Rest Data Service is part of Oracle RDBMS, StreamSets is Open Source
  • 23. Oracle REST Data Services (ORDS) • makes it easy to develop modern REST interfaces for relational data in the Oracle Database and the Oracle Database 18c JSON Document Store • ORDS maps HTTP(S) verbs (GET, POST, PUT, DELETE, etc.) to database transactions and returns any results formatted using JSON • Java middle tier application on WebLogic, Tomcat, Docker, Standalone (for development) https://www.oracle.com/database/technologies/appdev/rest.html
  • 24. DB-K_3 – Setup ORDS (I) ORDS.ENABLE_SCHEMA( p_enabled => TRUE, p_schema => 'ORDER_PROCESSING', p_url_mapping_type => 'BASE_PATH', p_url_mapping_pattern => 'order_processing', p_auto_rest_auth => FALSE); ORDS.DEFINE_MODULE( p_module_name => 'order_processing', p_base_path => '/orders/', p_items_per_page => 25, p_status => 'PUBLISHED', p_comments => NULL); ORDS.DEFINE_TEMPLATE( p_module_name => 'order_processing', p_pattern => 'changes/:offset', p_priority => 0, p_etag_type => 'HASH', p_etag_query => NULL, p_comments => NULL);
  • 25. DB-K_3 – Setup ORDS (II) ORDS.DEFINE_HANDLER( p_module_name => 'order_processing', p_pattern => 'changes/:offset', p_method => 'GET', p_source_type => 'resource/lob', p_items_per_page => 25, p_source => q'[ 'SELECT 'application/json', json_object('orderId' VALUE po.id, 'orderDate' VALUE po.order_date, 'orderMode' VALUE po.order_mode, 'customer' VALUE json_object('firstName' VALUE cu.first_name, 'lastName' VALUE cu.last_name 'emailAddress' VALUE cu.email), 'lineItems' VALUE (SELECT json_arrayagg( json_object('ItemNumber' VALUE li.id, 'Product' VALUE json_object('id' VALUE li.product_id, 'name' VALUE li.product_name, 'unitPrice' VALUE li.unit_price), 'quantity' VALUE li.quantity)) FROM order_item_t li WHERE po.id = li.order_id), 'offset' VALUE TO_CHAR(po.modified_at, 'YYYYMMDDHH24MISS')) FROM order_t po LEFT JOIN customer_t cu ON (po.customer_id = cu.id) WHERE po.modified_at > TO_DATE(:offset, 'YYYYMMDDHH24MISS')]'
  • 26. StreamSets Data Collector • GUI-based, drag-and drop Data Flow Pipelines • Both stream and batch processing • custom sources, sinks, processors • Monitoring and Error Detection https://streamsets.com/products/sdc
  • 27. DB-K_4: Produce to Event Hub from RDBMS Event Hub Stream Data Integration API Applications / Data Sources RDBMS Application Logic API Stream Data Integration & Analytics Stream Analytics Data Flow REST to Event Hub Flat Aggregate Low Latency High Latency DB Dataflow Message Latency ACL Cost Free CommercialLicense
  • 28. Event Hub Stream Data Integration API Applications / Data Sources RDBMS Application Logic API Stream Data Integration & Analytics Stream Analytics Data Flow REST to Event Hub Flat Aggregate Low Latency High Latency DB Dataflow Message Latency ACL Cost Free CommercialLicense DB-K_4: Produce to Event Hub from RDBMS Native Kafka Producer using Java in DB Does not feel right! Java in DB as well as “dual write” problem
  • 29. Event Hub Stream Data Integration API Applications / Data Sources RDBMS Application Logic API Stream Data Integration & Analytics Stream Analytics Data Flow REST to Event Hub Rest Proxy ? Flat Aggregate Low Latency High Latency DB Dataflow Message Latency ACL Cost Free CommercialLicense DB-K_4: Produce to Event Hub from RDBMS Invoke REST Proxy from PL/SQL Invoking a REST Service from DB not well- supported and ”dual write” problem Confluent REST Proxy is part of Confluent Open Source Platform
  • 30. Event Hub Stream Data Integration API Applications / Data Sources RDBMS Application Logic API Stream Data Integration & Analytics Stream Analytics Data Flow REST to Event Hub Oracle Big Data SQL Coming soon … DB-K_4: Produce to Event Hub from RDBMS Oracle Big Data SQL integrates with Kafka Flat Aggregate Low Latency High Latency DB Dataflow Message Latency ACL Cost Free CommercialLicense
  • 31. DB-K_5: RDBMS Queue with bridge to Event Hub Stream Data Integration & Analytics Stream Analytics Event Hub Stream Data Integration API Data Flow Application / Data Sources Data Flow Application Logic RDBMS Queue Flat Aggregate Low Latency High Latency DB Dataflow Message Latency ACL Cost Free CommercialLicense
  • 32. DB-K_5: RDBMS Queue with bridge to Event Hub Oracle Advanced Queuing & Kafka Connect JMS Stream Data Integration & Analytics Stream Analytics Event Hub Stream Data Integration API Data Flow Application / Data Sources Data Flow Application Logic RDBMS QueueAQ Flat Aggregate Low Latency High Latency DB Dataflow Message Latency ACL Cost Free CommercialLicense Oracle Advanced Queuing is part of Oracle RDBMS
  • 33. BEGIN dbms_aqadm.create_queue_table ( queue_table => 'ORDER_QT', queue_payload_type => 'SYS.AQ$_JMS_TEXT_MESSAGE', sort_list => 'PRIORITY,ENQ_TIME', multiple_consumers => FALSE, message_grouping => dbms_aqadm.none ); END; / DB-K_5 – Setup AQ and Kafka Connect (I) BEGIN dbms_aqadm.create_queue ( queue_name => 'ORDER_AQ', queue_table => 'ORDER_QT', max_retries => 1, retry_delay => 2, -- seconds retention_time => 60*60*24*7 -- 1w ); END; / BEGIN dbms_aqadm.start_queue( queue_name => 'ORDER_AQ', enqueue => TRUE, dequeue => TRUE ); END; /
  • 34. curl -X "POST" "$DOCKER_HOST_IP:8083/connectors" -H "Content-Type: application/json" --data '{ "name": "jms-source", "config": { "name": "jms-source", "connector.class": "com.datamountaineer...JMSSourceConnector", "connect.jms.initial.context.factory": "oracle.jms.AQjmsInitialContextFactory", "connect.jms.initial.context.extra.params": "db_url=jdbc:oracle:thin:@//192.168.73.86:1521/XEPDB1,java.naming.security.princ ipal=order_processing,java.naming.security.credentials=order_processing", "tasks.max": "1", "connect.jms.connection.factory": "ConnectionFactory", "connect.jms.url": "jdbc:oracle:thin:@//192.168.73.86:1521/XEPDB1", "connect.jms.kcql": "INSERT INTO order SELECT * FROM order_aq WITHTYPE QUEUE WITHCONVERTER=`com.datamountaineer.streamreactor.connect.converters.source.JsonS impleConverter`" } }' DB-K_5 – Setup AQ and Kafka Connect (I)
  • 35. DB-K_5: RDBMS Queue with bridge to Event Hub Oracle AQ with Kafka API & MirrorMaker Stream Data Integration & Analytics Stream Analytics Event Hub Stream Data Integration API Data Flow Application / Data Sources Data Flow Application Logic RDBMS Queue Flat Aggregate Low Latency High Latency DB Dataflow Message Latency ACL Cost Free CommercialLicense AQ (Kafka API) Oracle is working on a Kafka API for Advanced Queuing
  • 36. Blueprints Apache Kafka => Oracle RDBMS
  • 37. Blueprints Apache Kafka => Oracle RDBMS (K-DB) Customer Microservice { } Customer API CustomerCustomer Logic Order Processing System { } Order API OrderOrder Logic REST REST Event Hub Customer Mat View Order (compacted) Customer (compacted) Notification Microservice Notification Logic Schema Registry K-DB_1: Write to RDBMS table/view K-DB_2: Write over RDBMS API K-DB_3: Consume from Event Hub K-DB_4: Event Hub with bridge to RDBMS Queue
  • 38. K-DB_1: Write to RDBMS table/view Event Hub Stream Data Integration API Applications / Data Sources Data FlowRDBMS Application Logic Stream Data Integration & Analytics Stream Analytics Data Flow Flat Aggregate Low Latency High Latency DB Dataflow Message Latency ACL Cost Free CommercialLicense
  • 39. Event Hub Stream Data Integration API Applications / Data Sources Data FlowRDBMS Application Logic Stream Data Integration & Analytics Stream Analytics Data Flow Flat Aggregate Low Latency High Latency DB Dataflow Message Latency ACL Cost Free CommercialLicense K-DB_1: Write to RDBMS table/view Kafka Connect and JDBC Sink Connector
  • 40. K-DB_2: Write over RDBMS API Event Hub Stream Data Integration API Applications / Data Sources Data Flow RDBMS Application Logic API Stream Data Integration & Analytics Stream Analytics Data Flow Flat Aggregate Low Latency High Latency DB Dataflow Message Latency ACL Cost Free CommercialLicense
  • 41. Event Hub Stream Data Integration API Applications / Data Sources Data Flow RDBMS Application Logic API Stream Data Integration & Analytics Stream Analytics Data Flow Flat Aggregate Low Latency High Latency DB Dataflow Message Latency ACL Cost Free CommercialLicense K-DB_2: Write over RDBMS API Kafka Connect invokes Oracle Rest Data Service Oracle Rest Data Service is part of Oracle RDBMS, REST Connector is Open Source
  • 42. DB-K_2 – Setup ORDS (I) ORDS.DEFINE_HANDLER( p_module_name => 'customer', p_pattern => 'customer', p_method => 'POST', p_source_type => 'plsql/block', p_items_per_page => 0, p_source => 'DECLARE L_CU CLOB := :body_text; BEGIN INSERT INTO customer_t (id, first_name, last_name, title, notification_on, email, slack_handle, twitter_handle) SELECT * FROM json_table(L_CU, '$' COLUMNS ( id NUMBER PATH '$.id', first_name VARCHAR2 PATH '$.firstName', last_name VARCHAR2 PATH '$.lastName', title VARCHAR2 PATH '$.title', notification_on VARCHAR2 PATH '$.notificationOn', email VARCHAR2 PATH '$.email', slack_handle VARCHAR2 PATH '$.slackHandle', twitter_handle VARCHAR2 PATH '$.twitterHandle' )); INSERT INTO address_t (customer_id, id, street, nr, city, postcode, country) SELECT * FROM json_table( ... )
  • 43. K-DB_3: Consume from Event Hub Event Hub Stream Data Integration API Applications / Data Sources RDBMS Application Logic API Stream Data Integration & Analytics Stream Analytics Data Flow REST to Event Hub Flat Aggregate Low Latency High Latency DB Dataflow Message Latency ACL Cost Free CommercialLicense
  • 44. Event Hub Stream Data Integration API Applications / Data Sources RDBMS Application Logic API Stream Data Integration & Analytics Stream Analytics Data Flow REST to Event Hub Oracle Big Data SQL Coming soon… K-DB_3: Consume from Event Hub Oracle Big Data SQL exposes topic as table Flat Aggregate Low Latency High Latency DB Dataflow Message Latency ACL Cost Free CommercialLicense
  • 45. K-DB_4: Event Hub with bridge to RDBMS queue Stream Data Integration & Analytics Stream Analytics Event Hub Stream Data Integration API Data Flow Application / Data Sources Data Flow Application Logic RDBMS Queue Flat Aggregate Low Latency High Latency DB Dataflow Message Latency ACL Cost Free CommercialLicense
  • 46. Stream Data Integration & Analytics Stream Analytics Event Hub Stream Data Integration API Data Flow Application / Data Sources Data Flow Application Logic RDBMS QueueAQ K-DB_4: Event Hub with bridge to RDBMS queue Oracle Advanced Queuing & Kafka Connect JMS Flat Aggregate Low Latency High Latency DB Dataflow Message Latency ACL Cost Free CommercialLicense Oracle Advanced Queuing is part of Oracle RDBMS
  • 47. Stream Data Integration & Analytics Stream Analytics Event Hub Stream Data Integration API Data Flow Application / Data Sources Data Flow Application Logic RDBMS QueueAQ (Kafka API) Oracle is working on a Kafka API for Advanced Queuing K-DB_4: Event Hub with bridge to RDBMS queue Oracle AQ with Kafka API & MirrorMaker Flat Aggregate Low Latency High Latency DB Dataflow Message Latency ACL Cost Free CommercialLicense
  • 49. Summary Customer Microservice { } Customer API CustomerCustomer Logic Order Processing System { } Order API OrderOrder Logic REST REST Event Hub Customer Mat View Order (compacted) Customer (compacted) Notification Microservice Notification Logic Schema Registry K-DB_1: Write to RDBMS table/view K-DB_2: Write over RDBMS API K-DB_3: Consume from Event Hub K-DB_4: Event Hub with bridge to RDBMS Queue https://github.com/gschmutz/various-demos/tree/master/bidirectional-integration-oracle-kafka DB-K_1: Polling of RDBMS table/view DB-K_2: Change Data Capture (CDC) on RDBMS DB-K_3: Polling of RDBMS API DB-K_4: Produce to Event Hub from RDBMS DB-K_5: RDBMS Queue with bridge to Event Hub
  • 50. Bulk Source Ref Architecture Data Platform Service Event Stream Bulk Data Flow Event Source Location DB Extract File Weather DB IoT Data Mobile Apps Social File Import / SQL Import Consumer BI Apps Data Science Workbench Enterprise App Enterprise Data Warehouse SQL / Search SQL “Native” Raw RDBMS “SQL” / Search Service Event Hub Hadoop ClusterdHadoop ClusterBig Data Platform SQL Export Storage Storage Raw Refined/ UsageOpt Microservice Cluster Stream Processing Cluster Stream Processor Model / State Edge Node Rules Event Hub Storage Governance Data Catalog Rules Engine Parallel Processing Query Engine Microservice Data { } API Event Stream Event Stream Modern Data Platform Event Stream
  • 51. Bulk Source Ref Architecture Data Platform Service Event Stream Bulk Data Flow Event Source Location DB Extract File Weather DB IoT Data Mobile Apps Social File Import / SQL Import Consumer BI Apps Data Science Workbench Enterprise App Enterprise Data Warehouse SQL / Search SQL “Native” Raw RDBMS “SQL” / Search Service sEvent Hub Hadoop ClusterdHadoop ClusterBig Data Platform SQL Export Storage Storage Raw Refined/ UsageOpt Microservice Cluster Stream Processing Cluster Stream Processor Model / State Edge Node Rules Event Hub Storage Governance Data Catalog Rules Engine Parallel Processing Query Engine Microservice Data { } API Event Stream Event Stream Modern Data Platform Event Stream