Hey all! We use relational database as the source of truth and we are looking for options to replicate the data to Pinot as real-time as possible. We may need some transformations in-between. We don't have a "large" dataset, mostly under 1TB. What options do we have? As a side note we want to avoid CDC.
k
Kishore G
11/28/2024, 8:06 PM
Any reason you want to avoid CDC?
Kishore G
11/28/2024, 8:07 PM
Is the data getting updated in the relational database or append only
y
Yusuf Nar
11/29/2024, 4:47 AM
There are a couple of reasons. We see replication slots as a risk to the availability of the primary database. We have to take care of them when doing database upgrades. If we lose replication slots, we can't tolerate restarting the replication.
Usually the data is updated rarely. If we add a new column, we may have to update all the data. This can be scheduled though.
x
Xiang Fu
11/30/2024, 5:31 AM
without CDC, how do you plan to capture the relational database changes?
y
Yusuf Nar
06/13/2025, 6:47 AM
Triggers?
x
Xiang Fu
06/13/2025, 7:08 AM
time based? then it’s kind of microbatch, you could fetch changelogs periodically
y
Yusuf Nar
06/13/2025, 7:11 AM
Triggers write to a table. Still transactional. PostgreSQL notifies application. Application fetches changes and pushes them. I prepared a working demo of this. Denormalization is also possible.
x
Xiang Fu
06/13/2025, 7:13 AM
sure, you can give it a try and implement the kafka sink
y
Yusuf Nar
06/13/2025, 7:14 AM
I am not sure if I need Kafka. Scaling need is not much. Application can push to the target directly.