<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Databases-Migrations on traviscj/blog</title>
    <link>https://traviscj.com/blog/tags/databases-migrations/</link>
    <description>Recent content in Databases-Migrations on traviscj/blog</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Mon, 02 Jul 2018 11:34:39 +0000</lastBuildDate>
    <atom:link href="https://traviscj.com/blog/tags/databases-migrations/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>history preserving data models</title>
      <link>https://traviscj.com/blog/post/2018-07-02-history-preserving-data-models/</link>
      <pubDate>Mon, 02 Jul 2018 11:34:39 +0000</pubDate>
      <guid>https://traviscj.com/blog/post/2018-07-02-history-preserving-data-models/</guid>
      <description>&lt;p&gt;Start with a super simple data model:&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;CREATE TABLE kv (&#xA;  id BIGINT(22) NOT NULL AUTO_INCREMENT,&#xA;  k VARCHAR(255) NOT NULL,&#xA;  v LONGBLOB NOT NULL,&#xA;  PRIMARY KEY (`id`),&#xA;  UNIQUE KEY u_k (`k`)&#xA;) Engine=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Suppose we want to audit &amp;ldquo;changes&amp;rdquo; to this data model.&lt;/p&gt;&#xA;&lt;h2 id=&#34;approach-1-kv_log&#34;&gt;Approach 1: &lt;code&gt;kv_log&lt;/code&gt;&lt;/h2&gt;&#xA;&lt;p&gt;add data model like&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;CREATE TABLE `kv_log` (&#xA;  id BIGINT(22) NOT NULL AUTO_INCREMENT,&#xA;  changed_at TIMESTAMP NOT NULL,&#xA;  k VARCHAR(255) NOT NULL,&#xA;  old_v LONGBLOB NOT NULL,&#xA;  new_v LONGBLOB NOT NULL,&#xA;  &#xA;)&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;current value query: unchanged&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
