Our great sponsors
-
SurveyJS
Open-Source JSON Form Builder to Create Dynamic Forms Right in Your App. With SurveyJS form UI libraries, you can build and style forms in a fully-integrated drag & drop form builder, render them in your JS app, and store form submission data in any backend, inc. PHP, ASP.NET Core, and Node.js.
-
nfcompose
Build REST APIs/Integrations in minutes instead of hours - NF Compose is a (data) integration platform that allows developers to define REST APIs in seconds instead of hours. Generated REST APIs are backed by postgres and support automatic consumer webhook notifications on data changes out of the box.
-
WorkOS
The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.
this approach is also available as an extension here:
https://github.com/supabase/supa_audit
it uses a slightly more generic implementation so that you can easily turn on/off auditing. i.e.
select audit.enable_tracking('public.account'::regclass);
I have implemented this for our tool NF Compose that allows us to build REST APIs without writing a single line of code [0]. I didn't go the route of triggers because we generate database tables automatically and we used to have a crazy versioning scheme that was inspired by data vault and anchor modelling where we stored every change on every attribute as a new record.
Sounded cool, but in practice it was really slow. The techniques that are usually employed by Data Vault to fix this issue seemed too complex. Over time we moved to an implementation that handles the historization dynamically at runtime by generating SQL queries ourselves [1]. On a sidenote: Generating SQL in python sounds dangerous, but we spent a lot of time on making it secure. We even have a linter that checks that everything is escaped properly whenever we are in dev mode [2]
[0] https://github.com/neuroforgede/nfcompose/
This is actually what we're @ Bemi https://bemi.io/
We're hoping to make it so that this becomes automatic with Postgres vs moving to specialized databases.
We recently open sourced the core tech that implements system versioned tables https://github.com/BemiHQ/bemi, check it out if interested :)
This is actually what we're @ Bemi https://bemi.io/
We're hoping to make it so that this becomes automatic with Postgres vs moving to specialized databases.
We recently open sourced the core tech that implements system versioned tables https://github.com/BemiHQ/bemi, check it out if interested :)
Related posts
- The Guide to PostgreSQL Data Change Tracking
- Pgcopydb: Copy a Postgres database to a target Postgres server
- WrenAI: Open-Source Natural Language Interface to Your Data
- ELT as Compliance Enabler: Running Steampipe with Matillion Data Productivity Cloud
- Serverless Postgres with Neon - My first impression