{"repo":"ifad/chronomodel","free":true,"listed":false,"github":"https://github.com/ifad/chronomodel","clone":"git clone https://github.com/ifad/chronomodel.git","description":"Temporal PostgreSQL (9.4+) system with \"flashback\" framework for ActiveRecord (7.0+)","language":"Ruby","stars":203,"topics":["temporal-databases","activerecord","rails","postgresql","database"],"license":"MIT","category":"databases-storage","readme_excerpt":"Temporal database system on PostgreSQL using [updatable views][pg-updatable-views], [table inheritance][pg-table-inheritance] and [INSTEAD OF triggers][pg-instead-of-triggers]. [![Build Status][build-status-badge]][build-status] [![Gem Version][gem-version-badge]][gem-version] [![Inlinedocs][docs-analysis-badge]][docs-analysis] ![A Delorean that we all love][delorean-image] ChronoModel implements what Oracle sells as \"Flashback Queries\", with standard SQL on free PostgreSQL. Academically speaking, ChronoModel implements a [Type-2 Slowly-Changing Dimension][wp-scd-2] with [history tables][wp-scd-4]. All history keeping happens inside the database system, freeing application code from having to deal with it. ChronoModel implements all the required features in Ruby on Rails' ORM to leverage the database temporal structure beneath. Design The application model is backed by an updatable view in the default public schema that behaves like a plain table to any database client. When data in manipulated on it, INSTEAD OF [triggers][pg-triggers] redirect the manipulations to concrete tables. Current data is held in a table in the temporal [schema][pg-schema], while History is held in a table in the history schema that [inherits][pg-table-inheritance] from the Current one, to get automated schema updates for free and other benefits. The current time is taken using [ current timestamp ][pg-current-timestamp], so that multiple data manipulations in the same transaction on the same records","default_branch":null,"files":null,"tree":[],"storefront":"/r/ifad","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/ifad/chronomodel/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."}