{"repo":"bitcrowd/carbonite","free":true,"listed":false,"github":"https://github.com/bitcrowd/carbonite","clone":"git clone https://github.com/bitcrowd/carbonite.git","description":"Audit trails for Elixir/PostgreSQL based on triggers","language":"Elixir","stars":253,"topics":["change-data-capture","auditing","elixir","ecto","postgresql"],"license":"Apache-2.0","category":"databases-storage","readme_excerpt":"Carbonite makes it easy to create audit trails for tables in a PostgreSQL database and integrate them into an Elixir application. Carbonite implements the Change-Data-Capture pattern on top of a PostgreSQL database. It uses triggers to automatically record all changes applied to a database table in order to guarantee a complete audit trail of the contained data. It is centered around the idea that the database transaction is the natural auditing unit of data mutation. Any mutation on a participating table requires the developer first to record the operation metadata within the same database transaction. The metadata record is associated to the table change records by a constraint. On top of its database layer, Carbonite provides an API allowing developers to effortlessly retrieve, process, and purge the audit trails within the Elixir application. Features - Convenient installation using migration functions - Guaranteed consistency based on triggers, foreign-key constraints, and ACID - No mutation without recorded Change - No Change without Transaction - Customizable audit metadata (per transaction) - Clear query interfaces to the audit trail - Optional processing & purging logic following the Outbox pattern - Based on Ecto and Postgrex with no further dependencies. - No configuration of PostgreSQL database needed How it works Carbonite keeps a central changes table where all mutations of participating tables are recorded. On each such table a trigger is installed (after INSER","default_branch":null,"files":null,"tree":[],"storefront":"/r/bitcrowd","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/bitcrowd/carbonite/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}