{"id":3674,"date":"2014-02-06T10:31:26","date_gmt":"2014-02-06T00:31:26","guid":{"rendered":"https:\/\/www.flamingspork.com\/blog\/?p=3674"},"modified":"2014-02-03T22:31:39","modified_gmt":"2014-02-03T12:31:39","slug":"ghosts-of-mysql-past-part-4-a-million-features-for-enterprise","status":"publish","type":"post","link":"https:\/\/www.flamingspork.com\/blog\/2014\/02\/06\/ghosts-of-mysql-past-part-4-a-million-features-for-enterprise\/","title":{"rendered":"Ghosts of MySQL Past: Part 4, A million features for Enterprise"},"content":{"rendered":"<p>Continuing on from <a href=\"https:\/\/www.flamingspork.com\/blog\/2014\/02\/05\/ghosts-of-mysql-past-part-3\/\">Part 3<\/a>&#8230;.<\/p>\n<p>SAP is all about Enterprises and as such, used all the Enterprise features of databases. This is a <strong>much<\/strong> different application than every user of MySQL so far (which were often web applications, and increasingly being used at scale). This was &#8220;MySQL focuses on Enterprise&#8221;.<\/p>\n<p>This is 2003: before VIEWS, before stored procedures, before triggers, before cursors, before prepared statements, before precision math, before SQL access to logs, before any real deadlock info, before you could use a \/ in a table name, before any performance statistics, before full unicode and before partitioning, row level binary logs, fractional seconds in temporal types and before EXPLAIN for INSERT\/UPDATE\/DELETE (which we still don&#8217;t have). There was a <strong>long<\/strong> way to go before MySQL would fit with SAP. A long, long way.<\/p>\n<p>But how were we going to run our cell phone networks on MySQL? There was an answer to that as MySQL AB acquired an Ericsson spinoff, Alzato for it&#8217;s clustered database server, NDB, which would become MySQL Cluster. This is separate from replication and originally designed for GSM HLR databases. Early versions had two types of availability: five nines (99.999%) or zero nines (0.000%) &#8211; it either worked or exploded. Taking a database engine that wasn&#8217;t fully mature and integrating it with MySQL is not a task for the faint of heart. It wouldn&#8217;t be the last time this was attempted and it would prove to be the most successful.<\/p>\n<p>In October of 2004, MySQL 4.1 went GA &#8211; the first version with MySQL Cluster and incidentally, just before I joined MySQL AB on the MySQL Cluster team.<\/p>\n<p>By this time, MySQL AB had hired just about all outside contributors, as, well, what better job interview than a patch? The struggle to have a good relationship with outside contributors started a long time ago, it&#8217;s certainly nothing new.<\/p>\n<p>2005 was the year of MySQL 5.0 instability. At the time, 5.0 was the development version and it was plagued by instability. It was really hard for development teams (such as the SAP team) to work on deliverables when every time they&#8217;d rebase their work on a new 5.0 trunk version, the server would explode in new and interesting ways.<\/p>\n<p>In fact, the situation was so bad that Continuous Integration was re-invented. Basically, it was feature++; stability&#8211;. The fact that at the same time even less stable development trees existed did not bode well.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Continuing on from Part 3&#8230;. SAP is all about Enterprises and as such, used all the Enterprise features of databases. This is a much different application than every user of MySQL so far (which were often web applications, and increasingly &hellip; <a href=\"https:\/\/www.flamingspork.com\/blog\/2014\/02\/06\/ghosts-of-mysql-past-part-4-a-million-features-for-enterprise\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[14],"tags":[628],"class_list":["post-3674","post","type-post","status-publish","format-standard","hentry","category-mysql","tag-mysql"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p5a6n8-Xg","jetpack-related-posts":[{"id":3667,"url":"https:\/\/www.flamingspork.com\/blog\/2014\/02\/05\/ghosts-of-mysql-past-part-3\/","url_meta":{"origin":3674,"position":0},"title":"Ghosts of MySQL Past: Part 3","author":"Stewart Smith","date":"2014-02-05","format":false,"excerpt":"See Part 1 and Part 2. We rejoin our story with a lawsuit. While MySQL suing Progress NuSphere is not perhaps the first GPL lawsuit that comes to mind, it was the first time that the GPL was tested in court. Basically, the GEMINI storage engine was a proprietary storage\u2026","rel":"","context":"In &quot;General&quot;","block_context":{"text":"General","link":"https:\/\/www.flamingspork.com\/blog\/category\/general\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":3304,"url":"https:\/\/www.flamingspork.com\/blog\/2013\/05\/13\/the-mysql-cluster-storage-engine\/","url_meta":{"origin":3674,"position":1},"title":"The MySQL Cluster storage engine","author":"Stewart Smith","date":"2013-05-13","format":false,"excerpt":"This is one close to my heart. I've recently written on other storage engines:\u00c2\u00a0Where are they now: MySQL Storage Engines,\u00c2\u00a0The MERGE storage engine: not dead, just resting\u00e2\u20ac\u00a6. or forgotten\u00c2\u00a0and The MEMORY storage engine. Today, it's the turn of MySQL Cluster. Like InnoDB, MySQL Cluster started outside of MySQL. Those of\u2026","rel":"","context":"In &quot;code&quot;","block_context":{"text":"code","link":"https:\/\/www.flamingspork.com\/blog\/category\/code\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":696,"url":"https:\/\/www.flamingspork.com\/blog\/2006\/05\/10\/an-apple-article-on-mysql-on-mac-os-x\/","url_meta":{"origin":3674,"position":2},"title":"An Apple article on MySQL on Mac OS X","author":"Stewart Smith","date":"2006-05-10","format":false,"excerpt":"MySQL on Mac OS X: An Ideal Development Combination They got one bit a bit unclear. They say \"In fact, the development team at MySQL AB uses the Mac platform for developing the MySQL server software itself.\" Which is misleading at best if not downright wrong. Yes, some people do\u2026","rel":"","context":"In &quot;mysql&quot;","block_context":{"text":"mysql","link":"https:\/\/www.flamingspork.com\/blog\/category\/work-et-al\/mysql\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":3697,"url":"https:\/\/www.flamingspork.com\/blog\/2014\/03\/11\/ghosts-of-mysql-past-part-8-the-first-fork\/","url_meta":{"origin":3674,"position":3},"title":"Ghosts of MySQL Past, Part 8: The First Fork.","author":"Stewart Smith","date":"2014-03-11","format":false,"excerpt":"This is the 8th installment in the rather long series that started with Part 1 about a month ago. Back in 2006, we were in the situation where MySQL 5.0 had taken forever, and the first \"GA\" release was not suitable for production. Looking towards MySQL 5.1, it was also\u2026","rel":"","context":"In &quot;mysql&quot;","block_context":{"text":"mysql","link":"https:\/\/www.flamingspork.com\/blog\/category\/work-et-al\/mysql\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":3801,"url":"https:\/\/www.flamingspork.com\/blog\/2014\/09\/19\/mysql-architecture\/","url_meta":{"origin":3674,"position":4},"title":"Some current MySQL Architecture writings","author":"Stewart Smith","date":"2014-09-19","format":false,"excerpt":"So, I've been looking around for a while (and a few times now) for any good resources that cover a bunch of MySQL architecture and technical details aimed towards the technically proficient but not MySQL literate audience. I haven't really found anything. I mean, there's the (huge and very detailed)\u2026","rel":"","context":"In &quot;mysql&quot;","block_context":{"text":"mysql","link":"https:\/\/www.flamingspork.com\/blog\/category\/work-et-al\/mysql\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":3702,"url":"https:\/\/www.flamingspork.com\/blog\/2014\/03\/14\/ghosts-of-mysql-past-part-10\/","url_meta":{"origin":3674,"position":5},"title":"Ghosts of MySQL past, part 10","author":"Stewart Smith","date":"2014-03-14","format":false,"excerpt":"At the end of 2007, the first alpha of MySQL 6.0 was released. Alpha is the key word here, 5.0 was in decent shape by this stage, 5.1 was not ready and there were at least rumors of a MySQL 6.1 tree. I'll go into MySQL 6.0 later, but since\u2026","rel":"","context":"In &quot;mysql&quot;","block_context":{"text":"mysql","link":"https:\/\/www.flamingspork.com\/blog\/category\/work-et-al\/mysql\/"},"img":{"alt_text":"IMG_20140310_111449","src":"https:\/\/i0.wp.com\/www.flamingspork.com\/blog\/wp-content\/uploads\/2014\/03\/IMG_20140310_111449-283x300.jpg?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]}],"jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/posts\/3674","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/comments?post=3674"}],"version-history":[{"count":1,"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/posts\/3674\/revisions"}],"predecessor-version":[{"id":3675,"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/posts\/3674\/revisions\/3675"}],"wp:attachment":[{"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/media?parent=3674"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/categories?post=3674"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/tags?post=3674"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}