<story><title>Why Uber Engineering Switched from Postgres to MySQL (2016)</title><url>https://eng.uber.com/postgres-to-mysql-migration/</url></story><parent_chain></parent_chain><comment><author>junon</author><text>There&amp;#x27;s some historical context for this article. 2016 was a year of RAPID growth for Uber. There was a running statistic internally that your employee ID would be at the median point just 6 months after being hired.&lt;p&gt;They were trying to hire (and poach) just about anyone they could around this time. Therefore, these articles are... very shiny, compared to the actual tech applied internally (note that even though Uber is referred to in the third person here, this is on uber.com and written by an Uber employee).&lt;p&gt;I worked at Uber for a year. Schemaless was... meh. Nobody really liked using it, nobody really understood it, and you weren&amp;#x27;t really allowed to host your own instance - you had to have another internal team do it for you, which didn&amp;#x27;t help the &amp;quot;understanding&amp;quot; problem.&lt;p&gt;It smelled distinctly of &amp;quot;not invented here&amp;quot; syndrome. A number of things inside Uber worked that way - the culture was so competitive and brutal, performance reviews were always a massacre, so everyone was trying to outshine their peers (or outright climb on their backs, etc).&lt;p&gt;This resulted in a LOT of &amp;quot;tech&amp;quot; being &amp;quot;invented&amp;quot; that 1:1 did something already prominent in open-source or was already an enterprise solution (probably cheaper than paying engineers to do it) but since actually achieving it and having your name on it meant you would look better for a promotion or a bonus or whatever over a colleague meant it was worth it to the individual to reinvent the wheel. Rinse and repeat over and over again.&lt;p&gt;I&amp;#x27;m not an enemy of reinventing the wheel, mind you. But only if the new wheel works significantly better than the old one. This was rarely the case at Uber.&lt;p&gt;Postgres was still used somewhat commonly at Uber when I was there, but they were really pushing for Schemaless internally. It felt very overkill for just about everything outside the platform teams and was always, without fail, a massive pain to deal with.&lt;p&gt;Don&amp;#x27;t be fooled by these Uber engineering articles. This was PR to bolster up their OSS image to outsiders to help with hiring and poaching at the time. Things internally looked very different.</text></comment>
<story><title>Why Uber Engineering Switched from Postgres to MySQL (2016)</title><url>https://eng.uber.com/postgres-to-mysql-migration/</url></story><parent_chain></parent_chain><comment><author>petergeoghegan</author><text>I committed a patch that added a mechanism I called &amp;quot;bottom-up index deletion&amp;quot; recently:&lt;p&gt;&lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;www.postgresql.org&amp;#x2F;docs&amp;#x2F;devel&amp;#x2F;btree-implementation.html#BTREE-DELETION&quot; rel=&quot;nofollow&quot;&gt;https:&amp;#x2F;&amp;#x2F;www.postgresql.org&amp;#x2F;docs&amp;#x2F;devel&amp;#x2F;btree-implementation.h...&lt;/a&gt;&lt;p&gt;&lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;git.postgresql.org&amp;#x2F;gitweb&amp;#x2F;?p=postgresql.git;a=commit;h=d168b666823b6e0bcf60ed19ce24fb5fb91b8ccf&quot; rel=&quot;nofollow&quot;&gt;https:&amp;#x2F;&amp;#x2F;git.postgresql.org&amp;#x2F;gitweb&amp;#x2F;?p=postgresql.git;a=commit...&lt;/a&gt;&lt;p&gt;Bottom-up deletion is specifically designed to ameliorate what the blog post refers to as &amp;quot;write amplification&amp;quot;. Testing has shown that it&amp;#x27;s very effective with many workloads.</text></comment>