|
|
|
|
|
by waratuman
1562 days ago
|
|
At 42Floors, we experienced a similar need for auditing. Initial we did a
similar approach as described in the post. Over time the audit tables began
to be incorporated into every aspect of the product, which over time caused the
table to become quite large, and ended up causing a lot of downtime. Our initial
implementation only audited what was inserted by our Rails application. If a
change was made by another application or manually, it wouldn’t appear in the
table. Over the course of a few months we extracted the system and built a standalone
application that today has become [changebase.io](https://changebase.io/). We
now use CDC, change data capture, to capture all events in the database and a metadata table to
capture the context of why the change occurred and who made the change. The
changes are then structured to be easily queryable. Initially, we encoded the data as JSON, but over time have opted for encoding the
data in the database’s native format. This creates a more complex query system,
but at the end of the day we don’t have to worry about type conversions and
querying is done in the same format the database that was replicated.
Teams have benefited from the system by being able to recover data that was
accidentally deleted, or deleted maliciously. Notifications have also been used
for high value datasets where someone on a sales team wants to immediately know of
a change in the system. |
|