Viewing profile — KraftyOne
KraftyOne
HN member- Joined
- Thu, Jun 20, 2019, 5:49 PM UTC
- HN karma
- 1,419
- Public activity
- 193 items
- HN profile
- View on Hacker News ↗
About KraftyOne
Website: http://petereliaskraft.net/
Recent public activity
- story
-
comment
Comment #49116630
This is something we mention in the third section of the article: dead tuples and autovacuum caused real performance hits, which we (partially) mitigated through index optimization…
- story
-
comment
Comment #49041358
The core optimization is to buffer notifications in-memory and send them in a batch instead of sending them as part of every transaction. So that's a general-purpose optimization f…
-
comment
Comment #49041211
If you mean the optimizations coming in Postgres 19, the original post addresses this: > As an aside, there’s been some online discussion of a Postgres patch ( https://github.com/p…
-
comment
Comment #49041109
To be clear, it's not a custom patch to pg itself, but an application-side buffering and batching optimization.
- story
- story
-
comment
Comment #48769847
Outbox's power is that it turns an atomicity problem into an idempotency problem. You atomically write to the outbox, then you have an idempotent "workflow" that processes events f…
-
comment
Comment #48769229
You still need idempotency for side effects outside your database, that's true (and fundamental to durability). But now you get exactly-once semantics for operations on your databa…
-
comment
Comment #48767806
That's what the post is about! Once you're doing that, you really do have transactions between the state and the queue.
-
comment
Comment #48767794
Every item will be written to the queue exactly once (as the update is transactional). Queue processing may need at-least-once semantics, yes, depending on what exactly you're doin…
-
comment
Comment #48767681
You build a distributed system on top of this! For example, you may have many distributed workers durably executing workflows from the Postgres-backed task queue. The Postgres tran…
-
comment
Comment #48767205
Yes, the core design is building a workflow system on a database--essentially, replacing the central orchestrator most workflow systems use with a Postgres database. This previous …
-
comment
Comment #48766877
[dead]
-
comment
Comment #48766850
The key is that the UDF's enqueue is transactional with the database update. Let's say the database update is inserting a new order. This provides the guarantee that if a new order…
-
comment
Comment #48766815
Exactly! It's a distributed system, with many processes performing work in parallel, with a central database as a coordination point, used as little as possible. A mutex wouldn't g…
- story
-
comment
Comment #48698861
Unfortunately, DSQL is still lacking many core Postgres features (most notably foreign keys) that DBOS and DBOSify depend on. DBOS works with most flavors of Postgres though, inclu…
-
comment
Comment #48698105
Take any Temporal example and swap the imports and connection strings, it's a drop-in replacement :)
-
comment
Comment #48698101
We'd need DBOS in C# first! It's something we're considering for the future--if you're working in C#, happy to chat about it, reach out at peter.kraft@dbos.dev.
-
comment
Comment #48698062
Exactly, Postgres as an orchestrator instead of a Temporal server as an orchestrator. This page goes into more detail (for DBOS, but DBOSify is the same principle but using the Tem…
-
comment
Comment #48698053
I'm very sorry about this. I'll figure out why the form wasn't responded to. In the meantime, email me directly at peter.kraft@dbos.dev.
-
comment
Comment #48698047
Yes it can (with documented exceptions)! The suite is here: https://github.com/dbos-inc/dbosify-py/tree/main/tests/confo... Here's the documentation: https://github.com/dbos-inc/db…
- story