1 year ago
Mon Nov 6, 2023 4:35pm PST
Show HN: Bemi, enabling Event Sourcing for any database
Hi HN, we’re Evgeny, Donna, and Arjun - the builders of Bemi (https://bemi.io). Bemi is an augmentation of your existing transactional database to unlock time travel querying. We enable engineers to event source their PostgreSQL storage automatically to track all database state changes.

We used to all work together at a startup five years ago, and now have got the gang back together to work on Bemi! At AngelList, my team and I had to go through the pain of building a similar system for compliance reasons. We’ve spent some time chatting with other companies and startups and realized this is useful for them too, but for wide use cases - with many already investing heavy resources in building and maintaining similar systems internally.

There are many open-source libraries that already track data changes, but they’re not reliable since they don’t track changes that aren’t passing through the ORM i.e. direct SQL queries. Additionally, they come with runtime performance overhead since they’re making database inserts in callbacks. We’ve also consistently seen hacks that engineers write on top of the libraries to store additional context or make it easier for them to query.

There are databases already available for event sourcing, but we take a fundamentally different approach. We don’t want engineers to have to rearchitect their existing code, switch to highly specialized databases, or use unnecessary git-like abstractions. We want your system to work the way it already does with your existing database to allow you to keep things as simple as possible.

Bemi uses a design pattern called Change Data Capture (CDC) by connecting to a built-in replication log of a database, ingesting all changes on the database level, and storing them in a structured format in a destination database. The database connection details can be securely configured through our dashboard UI in a few seconds. We also integrate at the application level with packages in the most popular frameworks (being released soon) and a Bemi worker automatically stitches application metadata with the lower-level change data to get the why/who/where behind a change. This allows being able to revert all data changes made within an API request, for example.

For the sake of transparency, we intend to make money by implementing usage-based pricing for a cloud-hosted option. Bemi’s free for early adopters.

We are still early though and would love your feedback. What do you think HN?

read article
comments:
add comment
loading comments...