|
1 | 1 | # Decodable Examples
|
2 | 2 |
|
| 3 | + |
| 4 | + |
| 5 | +## Introduction |
| 6 | + |
3 | 7 | This repository contains examples of use cases that utilize Decodable streaming solution as well as demos for related open-source projects such as Apache Flink, Debezium, and Postgres.
|
4 | 8 |
|
| 9 | +Examples are presented "as-is" and are maintained on a best effort basis. PRs for updating existing (or adding new) examples are welcome! |
| 10 | + |
| 11 | +For help with any of the examples, or using Decodable in general, please [join our Slack group](https://join.slack.com/t/decodablecommunity/shared_invite/zt-uvow71bk-Uf914umgpoyIbOQSxriJkA). |
| 12 | + |
| 13 | +## About Decodable |
| 14 | + |
| 15 | +_Decodable radically simplifies real-time data, making it easier to access the freshest, high-quality data. Reduce infrastructure overhead, connect data sources, transform, and deliver data reliably to any destination._ |
| 16 | + |
| 17 | +_Learn more [here](https://decodable.co), and [sign up for a free trial](https://app.decodable.co/-/accounts/create) today!_ |
| 18 | + |
5 | 19 | ## Contents
|
6 | 20 |
|
7 |
| -| Example | Description | |
8 |
| -|---------|-------------| |
9 |
| -| [Flink Learn](./flink-learn/) | Apache Flink tutorials and webinar| |
10 |
| -| [AsyncAPI](asyncapi) | Publishing Data Products with AsyncAPI | |
| 21 | +### Stream Processing Techniques |
| 22 | + |
| 23 | +| Example | Description | |
| 24 | +|---------------------------------------------|----------------------------------------------------------------------------------------------------------------| |
| 25 | +| [Change Streams](change-streams) | Using change streams to build materialized views in Postgres | |
| 26 | +| [XML Processing](xml) | Parse XML and transform to JSON | |
| 27 | +| [Masking](masking) | Ways to mask data | |
| 28 | +| [Array Aggregation (1)](array-agg-postgres) | Demonstrating how to aggregate the elements of the many side of 1:n join into an array with data from Postgres | |
| 29 | +| [Array Aggregation (2)](array-agg) | Using the `array_agg()` UDF for denormalizing data in a pipeline from MySQL to OpenSearch | |
| 30 | + |
| 31 | +### Data Pipelines |
| 32 | + |
| 33 | +| Example | Description | |
| 34 | +|-----------------------------------------------------|--------------------------------------------------------| |
11 | 35 | | [Opinionated Data Pipelines](opinionated-pipelines) | Building data pipelines with schema on write streams. |
|
12 |
| -| [Postman](postman) | Building data pipelines with Postman. | |
13 |
| -| [Change Streams](change-streams) | Using change streams to build materialized views in Postgres | |
14 |
| -| [XML Processing](xml) | Parse XML and transform to JSON | |
15 |
| -| [OSQuery Routing](osquery) | Route OSQuery logs with SQL | |
16 |
| -| [Masking](masking) | Ways to mask data | |
17 |
| -| [Apache Pinot](pinot) | Transforming osquery logs to Apache Pinot and Superset | |
18 |
| -| [Apache Druid](druid) | This example sends covid 19 data to Decodable using it's REST API. The data is then cleansed using Decodable SQL and send the data to a Kafka sink. | |
19 |
| -| [Rockset](rockset) | We will be utilizing a cloud MQTT broker and AWS Kinesis to capture and stream data. Decodable will be responsible for preparing and aggregating the data prior to reaching the real-time analytical database (Rockset) | |
20 |
| -| [Tinybird](tinybird) | We write data to Tinybird and build a simple real time web application. | |
21 |
| -| [Apache Kafka](kafka2s3) | Installing Apache Kafka on EC2 and writing to S3 with Decodable | |
22 |
| -| [Apache Kafka mTLS](mtls) | We install Apache Kafka on EC2 and configure it with mTLS and configure Decodable to read from it | |
23 |
| -| [Snowflake + Snowpipe](snowflake) | We setup a snowpipe at the end of a Decodable S3 sink. | |
24 |
| -| [Confluent](confluent) | Clickstream from Confluent Cloud joined with CDC user data from Postgres | |
25 |
| -| [Snowflake + Snowpipe + Merge](snowflake/README-CDC.md) | Leveraging Snowpipe, we send CDC data from Postgres to be processed in Snowflake using an Append Only Stream in Snowflake to merge CDC data in a Snowflake table. Essentially `mirroring` the table in Postgres in a Snowflake table. | |
26 |
| -|[Reading S3 Events in a Lambda Function](s3events/)|We configure an S3 bucket with a Lambda notification to send data to Kinesis to be processed in Decodable | |
27 |
| -|[MSSQL CDC](mssql_cdc/)| We enable a MSSQL in Docker with CDC. We then stand up a Debezium server to read from MSSQL and write the change events into AWS Kinesis | |
28 |
| -|[Oracle CDC](oracle_cdc/)| We configure a Oracle AWS RDS with LogMiner. We then stand up a Debezium server to read change events into AWS Kinesis | |
29 |
| -|[DynamoDb CDC](dynamodb_cdc/)| We configure a DynamoDB to send change data to Kinesis. Then we read those changes into Decodable for transformation or replication. | |
30 |
| -|[ Logical Decoding Message Examples](postgres-logical-decoding)| We show how to retrieve logical decoding messages from the Postgres WAL | |
31 |
| -|[GitHub Webhooks](github-webhooks)| We show how to process GitHub Webhook events using the Decodable REST source connector | |
32 |
| -|[PyFlink](pyflink)| We run a basic PyFlink job on Kubernetes | |
33 |
| -|[Kafka / Flink / Iceberg](kafka-iceberg/apache-flink)| Integrating Apache Kafka with Apache Iceberg through Apache Flink. _As presented at Kafka Summit London 2024_| |
34 |
| -|[Kafka / Flink / Iceberg](kafka-iceberg/decodable) (with Decodable)| Streaming from Apache Kafka to Apache Iceberg with Decodable| |
35 |
| -|[Flink SQL Troubleshooting](troubleshooting-flinksql)| A set of Docker Compose environments for demonstrating various Flink SQL troubleshooting scenarios (see [related blog](https://www.decodable.co/blog/flink-sql-misconfiguration-misunderstanding-and-mishaps?utm_medium=github&utm_source=examples_repo&utm_campaign=blog&utm_content=troubleshooting-flinksql))| |
36 |
| -|[Array Aggregation](array-agg)| Using the `array_agg()` UDF for denormalizing data in a pipeline from MySQL to OpenSearch | |
37 |
| -|[Kafka with ngrok](kafka-ngrok)| Docker Compose for running Apache Kafka locally, accessible from the internet using ngrok| |
38 |
| -|[PyFlink on Decodable](pyflink-decodable)| Running a PyFlink job as a Custom Pipeline on Decodable| |
39 |
| -|[Delta Lake / Flink](flink-delta-lake)| Writing to Delta Lake with Apache Flink | |
| 36 | +| [Postman](postman) | Building data pipelines with Postman. | |
40 | 37 |
|
| 38 | +### PyFlink |
41 | 39 |
|
42 |
| -## License |
| 40 | +_Decodable provides a managed PyFlink service. Learn more [here](https://docs.decodable.co/pipelines/create-pipelines-using-your-own-apache-flink-jobs.html#_create_a_custom_pipeline_python)._ |
| 41 | + |
| 42 | +| Example | Description | |
| 43 | +|--------------------------------------------|---------------------------------------------------------| |
| 44 | +| [PyFlink](pyflink) | Running a basic PyFlink job on Kubernetes | |
| 45 | +| [PyFlink on Decodable](pyflink-decodable) | Running a PyFlink job as a Custom Pipeline on Decodable | |
| 46 | + |
| 47 | +### Integrations |
| 48 | + |
| 49 | +| Example | Description | |
| 50 | +|----------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------| |
| 51 | +| [Apache Druid](druid) | Sending COVID-19 data to Decodable using its REST API, cleaning it with SQL, and then sending it to Apache Druid | |
| 52 | +| [Apache Kafka / Flink / Iceberg](kafka-iceberg/apache-flink) | Integrating Apache Kafka with Apache Iceberg through Apache Flink. _As presented at Kafka Summit London 2024_ | |
| 53 | +| [Apache Kafka / Flink / Iceberg](kafka-iceberg/decodable) (with Decodable) | Streaming from Apache Kafka to Apache Iceberg with Decodable | |
| 54 | +| [Apache Kafka Upsert connector](kafka-upsert/) | Explaining the difference between the Flink Kafka and Kafka Upsert connectors | |
| 55 | +| [Apache Kafka mTLS](mtls) | Installing Apache Kafka on EC2 and configuring it with mTLS | |
| 56 | +| [Apache Kafka with ngrok](kafka-ngrok) | Using Docker Compose for running Apache Kafka locally, accessible from the internet using ngrok | |
| 57 | +| [Apache Kafka](kafka2s3) | Installing Apache Kafka on EC2 and writing to S3 with Decodable | |
| 58 | +| [Apache Pinot](pinot) | Transforming osquery logs to Apache Pinot and Superset | |
| 59 | +| [AsyncAPI](asyncapi) | Publishing Data Products with AsyncAPI | |
| 60 | +| [Confluent](confluent) | Clickstream from Confluent Cloud joined with CDC user data from Postgres | |
| 61 | +| [Delta Lake / Flink](flink-delta-lake) | Writing to Delta Lake with Apache Flink | |
| 62 | +| [GitHub Webhooks](github-webhooks) | Processing GitHub Webhook events using the Decodable REST source connector | |
| 63 | +| [OSQuery Routing](osquery) | Routing OSQuery logs with SQL | |
| 64 | +| [Redpanda](redpanda) | Reading and writing data to Redpanda from Flink | |
| 65 | +| [S3 Events in a Lambda Function](s3events/) | Configuring an S3 bucket with a Lambda notification to send data to Kinesis to be processed in Decodable | |
| 66 | +| [Tinybird](tinybird) | Writing data to Tinybird from Decodable | |
| 67 | + |
| 68 | +### Changed Data Capture (CDC) |
43 | 69 |
|
44 |
| -This code base is available under the Apache License, version 2. |
| 70 | +| Example | Description | |
| 71 | +|------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------| |
| 72 | +| [MSSQL CDC](mssql_cdc/) | Enabling MSSQL in Docker with CDC, reading from it with Debezium, writing change events into AWS Kinesis | |
| 73 | +| [Oracle CDC](oracle_cdc/) | Configuring Oracle AWS RDS with LogMiner, reading from it with Debezium, writing change events into AWS Kinesis | |
| 74 | +| [DynamoDb CDC](dynamodb_cdc/) | Configure DynamoDB to send change data to Kinesis, reading changes into Decodable for transformation or replication. | |
| 75 | +| [ Logical Decoding Message Examples](postgres-logical-decoding) | How to retrieve logical decoding messages from the Postgres WAL | |
| 76 | + |
| 77 | +### Flink SQL |
| 78 | + |
| 79 | +| Example | Description | |
| 80 | +|-------------------------------------------------------|-------------| |
| 81 | +| [Flink SQL Troubleshooting](troubleshooting-flinksql) | A set of Docker Compose environments for demonstrating various Flink SQL troubleshooting scenarios (see [related blog](https://www.decodable.co/blog/flink-sql-misconfiguration-misunderstanding-and-mishaps?utm_medium=github&utm_source=examples_repo&utm_campaign=blog&utm_content=troubleshooting-flinksql))| |
| 82 | + |
| 83 | +## License |
45 | 84 |
|
| 85 | +This code base is available under the Apache License, version 2. |
0 commit comments