That is interesting, your detailed write up goes over a ton of issues. I've tended to be able to stay away from most streaming applications, good to read!
Warning half baked idea, just threw this together! Feel free to ignore 😄
I'm sure this isn't a new idea, File systems based in git have been tried but with data integrations I haven't heard anyone talk about this (Other than the github actions thing that went over uploading your data to a git repo) I'd be really curious if someone was thinking about this.
10% of a thought out idea, haven't gone farther than this.
Imagine that you specify the data in your source and target that you're trying to get to "integrate" ie get to your target system. The current system state is represented by a hash (Both in your source and your target) ie the data state is currently at hash "abc1232__yadayada" , any data change to the data on either side is a change that would be represented by some change set (think git commits, etc)
Sometimes (just like in git) the data set diverges completely due to a Backup / Restore from some time frame. In that case you have to do a Full Sync again to your Target data set (instead of doing a merge). Changes after that would be represented as small change sets from the new starting point.
To accomplish this you'd need some understanding of this framework in both the source and target:
/source/api/integration1?targetstate="hashfromtarget"
Response
{
sourcedata_integration1_currentstate: abcde,
changes_since_targetstate_data: {}
}
Both sides would need to share some common implementation, but it's not clear how beneficial this would or would not be.
In an ideal world this would get rid of anyone having to pick Full Table Migration or Incremental, or RealTime. You'd setup your integrations as real time and let them eat, they'd figure out what needs to happen when.
It goes farther than API's that having a
time_changed
field that you pass a date into to get everything since that time. Really the date has nothing to do with data, the data is at some state, I should tell you what state I currently have and then you should tell me what I need to get to the latest state