It’s funny to see this level of contrast from a ba...
# general
r
It’s funny to see this level of contrast from a bank, I actually love their architecture. when working on our implementation of transactional outbox, I did not realize there is such a thing as JDBC Scrollable ResultSet (we are not a JVM shop). I always thought cursors are like snapshots of the query, but here it looks like it’s an actual continuously updated forward moving stream, TIL! https://www.linkedin.com/feed/update/urn:li:activity:7092187977224765440/
m
Considering it was added a long time ago, I'm surprised I wasn't aware either, apparently there is a "sensitive" mode, that allows the result set to get updated from the db (so it gets newer entries as they insert to the db), so select as a stream, that is super impressive - I can see some real use-cases here.... Also, I agree, really nice architecture, beautiful that they could condense it to a one pager and still remains so clear and readable, while providing tons of data!
r
is it strictly JDBC-related or generally in libpq? I would move my transactional outbox to this kind of workflow since it would mean less points of failure, the worst of them being wal retention overflowing disk space and ultimately crashing the node
yeah it’s actually supported generally in sql. in an ironic twist, i immediately started thinking about where and how I would store the consumer offsets haha
m
I also thought about the offsets, but first about multi-client scenario where (best case) they would share processing, or we can use partitioning in the query to get a partition of the data.... It apparently is supported in the standard itself, and several RDBMS's, which is mucho cool, and great support in JDBC, but also other clients, however, not all, and even those that might - it is not clear at all how to use them, I was looking for a Javascript/Typescript client, found many that support "streaming" but it isn't clear at all if they work correctly with the "sensitive" cursor type (obviously ResultSet is a JDBC thing, the feature is implemented using cursors (at least in MySQL)
g
Does anyone has the source(s) Mikhail used for his writeup? he clearly used Revolut blog posts but doesn't link to them (the latest and most annoying trend in developer marketing).
😂 1
r
I didn’t realise it’s a thing, but I did notice this narrator kind of style
but scrollable cursors alone make this idea very plausible. except ‘read replicas x N’ raises some questions, like do they care if there is a replication lag, or do they use sync streaming replication
m
Does anyone has the source(s) Mikhail used for his writeup? he clearly used Revolut blog posts but doesn't link to them (the latest and most annoying trend in developer marketing
). Oh my ☹️🤯, at least this time it wasn't me🤷🏽‍♂️ who wrung the 🔔, I thought it's authentic and was commending the style❗❗, I thought it really well done ❤️✅.
👍 1
Never saw a software business that didn't have a significantly annoying "built-in" lag some place in their system that they couldn't get rid of...
r
true. any way you think there is a compromise you have to accept
👍 1