{"id":3697,"date":"2014-03-11T11:22:40","date_gmt":"2014-03-11T01:22:40","guid":{"rendered":"https:\/\/www.flamingspork.com\/blog\/?p=3697"},"modified":"2014-03-10T17:39:40","modified_gmt":"2014-03-10T07:39:40","slug":"ghosts-of-mysql-past-part-8-the-first-fork","status":"publish","type":"post","link":"https:\/\/www.flamingspork.com\/blog\/2014\/03\/11\/ghosts-of-mysql-past-part-8-the-first-fork\/","title":{"rendered":"Ghosts of MySQL Past, Part 8: The First Fork."},"content":{"rendered":"<p>This is the 8th installment in the rather long series that started with <a href=\"https:\/\/www.flamingspork.com\/blog\/2014\/02\/03\/past-present-and-future-of-mysql-and-variants-part-1-ghosts-of-mysql-past\/\">Part 1<\/a> about a month ago.<\/p>\n<p>Back in 2006, we were in the situation where MySQL 5.0 had taken forever, and the first &#8220;GA&#8221; release was not suitable for production. Looking towards MySQL 5.1, it was also unlikely to be out any time soon. The MySQL Cluster team had customers that needed new features in a stable release. The majority of users didn&#8217;t use the MySQL server at all, they directly used the C++ NDB API for the vast majority of queries &#8211; so the vast majority of release blocker bugs in the MySQL server would not affect the production readiness of MySQL Cluster for these customers.<\/p>\n<p>So, the decision was wisely made to do separate releases from a separate tree for MySQL Cluster. This was named MySQL Cluster: Carrier Grade Edition and exists to this day.<\/p>\n<p>The main use case for MySQL Cluster at this time was running telephone networks, specifically the Home Location Registry databases of GSM phone networks. Basically, you need to keep a database of which tower each subscriber is associated with so when you go to make a phone call (or SMS) the network can properly route the call. This means there&#8217;s some realtime response requirements and hardcore availabilty which demands a special type of database.<\/p>\n<p>NDB has a long history (<a href=\"https:\/\/www.flamingspork.com\/blog\/2013\/05\/13\/the-mysql-cluster-storage-engine\/\">some of it detailed in a previous post<\/a>), but for those kind of interested in internals, I&#8217;ll quote <a href=\"http:\/\/messagepassing.blogspot.nl\/2014\/03\/reports-exaggerated.html\">Frazer Clement<\/a> (now a long time MySQL Cluster developer although I completely forget which year he joined the team, which is just slightly embarrassing):<\/p>\n<blockquote><p>&#8230;Erlang and Ndb Cluster share some Plex heritage, which can still be seen in their architectures today. Since Plex, Erlang has mated with Prolog, and Ndb Cluster was involved in a car crash with C++.<\/p><\/blockquote>\n<p>The customers for MySQL Cluster were not the ones who bought the $5000 support option&#8230; Typically, paying for the addition of a relatively major feature was considered quite okay and even &#8220;normal&#8221;. After all, the effort that goes into constructing the entire software stack of a large cell phone network is rather large, and MySQL Cluster would end up being a very small part of that.<\/p>\n<p>Many major features went into MySQL Cluster first, sometimes years before they made the general MySQL Server: row based replication, circular replication with conflict resolution and online DDL (add\/drop index and column). In fact, it kind of incredibly frustrates me that we solved online add column in NDB so many years ago and you still can&#8217;t add a column to an InnoDB table without some serious planning.<\/p>\n<p>The key thing about MySQL Cluster releases? They happened. They were also regular, addressing customer issues and new major versions brought features that worked for the use cases of those who needed them.<\/p>\n<p>Interestingly enough, you may recognize the person who ran the MySQL Cluster team as the same person who has overseen the now regular release cycle of the MySQL Server itself (and has now been in the MySQL world <a href=\"http:\/\/insidemysql.com\/celebrating-10-years-mysql\/\">for over ten years<\/a>).<\/p>\n","protected":false},"excerpt":{"rendered":"<p>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 &#8220;GA&#8221; release was not &hellip; <a href=\"https:\/\/www.flamingspork.com\/blog\/2014\/03\/11\/ghosts-of-mysql-past-part-8-the-first-fork\/\">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":[157,566,628,54],"class_list":["post-3697","post","type-post","status-publish","format-standard","hentry","category-mysql","tag-cluster","tag-fork","tag-mysql","tag-ndb"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p5a6n8-XD","jetpack-related-posts":[{"id":3304,"url":"https:\/\/www.flamingspork.com\/blog\/2013\/05\/13\/the-mysql-cluster-storage-engine\/","url_meta":{"origin":3697,"position":0},"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":1783,"url":"https:\/\/www.flamingspork.com\/blog\/2010\/02\/03\/ndbinfo-with-sql-hits-beta\/","url_meta":{"origin":3697,"position":1},"title":"NDB$INFO with SQL hits beta","author":"Stewart Smith","date":"2010-02-03","format":false,"excerpt":"\u00ef\u00bb\u00bfBernhard blogged over at http:\/\/ocklin.blogspot.com\/2010\/02\/mysql-cluster-711-is-there.html that MySQL Cluster 7.1.1 Beta has been released. The big feature (from my point of view) is the SQL interface on top of NDB$INFO. This means there is now full infrastructure from the NDB data nodes right out to SQL in the MySQL Server for\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":566,"url":"https:\/\/www.flamingspork.com\/blog\/2006\/02\/03\/mysql-forums-cluster-re-any-production-clusters-yet\/","url_meta":{"origin":3697,"position":2},"title":"MySQL Forums :: Cluster :: Re: Any production clusters yet ?","author":"Stewart Smith","date":"2006-02-03","format":false,"excerpt":"On the MySQL Cluster Forum, there was a thread \"any production clusters yet?\" to which this was a reply I'm using NDB in production with a high-traffic web site. We have about 500,000 members and lots of surge activity at specific times. What I'm finding is that the web server\u2026","rel":"","context":"In &quot;life, the universe and everything&quot;","block_context":{"text":"life, the universe and everything","link":"https:\/\/www.flamingspork.com\/blog\/category\/life-the-universe-and-everything\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":810,"url":"https:\/\/www.flamingspork.com\/blog\/2007\/03\/29\/mysql-conf-coming-up-and-memories-of-last-year\/","url_meta":{"origin":3697,"position":3},"title":"MySQL Conf coming up (and memories of last year)","author":"Stewart Smith","date":"2007-03-29","format":false,"excerpt":"Andy Dustman just blogged referencing his previous posts on last years MySQL User Conference. This years is coming close (April 23-26) and the pressure to have all my presentations all perfect is mounting (err.. by the way, they will be). Last year was a blast. Long days (and into the\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":891,"url":"https:\/\/www.flamingspork.com\/blog\/2007\/09\/19\/mysql-cluster-ndb-on-microsoft-windows\/","url_meta":{"origin":3697,"position":4},"title":"MySQL Cluster (NDB) on Microsoft Windows","author":"Stewart Smith","date":"2007-09-19","format":false,"excerpt":"Well... there's been some work. Even some in-progress patches. Being involved with this has just perfectly refreshed my memory of why I left the platform. Oh my it's a horrible, horrible platform. Everything from UI to API... ick. Expect something around soon....","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":814,"url":"https:\/\/www.flamingspork.com\/blog\/2007\/04\/03\/qa-with-mysql-cluster-content-my-2c-thrown-in\/","url_meta":{"origin":3697,"position":5},"title":"Q&#038;A with MySQL Cluster content (my 2c thrown in)","author":"Stewart Smith","date":"2007-04-03","format":false,"excerpt":"Ivan mentions the Q and As from a Q&A session in which MySQL Cluster is mentioned - I thought I'd add my perspective here as well: Q from Matthew: When are we likely to see disk based indexing for ndb? Disk based indexing is planned in one of the future\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":[]}],"jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/posts\/3697","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=3697"}],"version-history":[{"count":2,"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/posts\/3697\/revisions"}],"predecessor-version":[{"id":3700,"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/posts\/3697\/revisions\/3700"}],"wp:attachment":[{"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/media?parent=3697"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/categories?post=3697"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/tags?post=3697"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}