{"id":2016,"date":"2014-01-16T03:05:14","date_gmt":"2014-01-16T03:05:14","guid":{"rendered":"http:\/\/wiki.davelevy.info\/?p=2016"},"modified":"2023-04-27T08:19:50","modified_gmt":"2023-04-27T08:19:50","slug":"rdbms-theory","status":"publish","type":"post","link":"https:\/\/davelevy.info\/wiki\/rdbms-theory\/","title":{"rendered":"RDBMS theory"},"content":{"rendered":"<p>This was written 2014, I wonder how relevant it is today (2023). Much of it points are theory, which should not have changed. &#x1f600;<\/p>\n<p>Barry Morris, CEO of Nuodb, has written a series of articles about <a title=\"can we move beyond, shared disk, shared nothing and syncronous commit?\" href=\"https:\/\/web.archive.org\/web\/20160413163412\/http:\/\/cloudcomputing.sys-con.com\/node\/2834942\">the &#8220;Holy Grail&#8221;<\/a>, which he published at the Cloud Computing Journal, and <a title=\"The Database Holy Grail\" href=\"http:\/\/www.nuodb.com\/blog\/2013\/12\/news\/can-we-finally-find-the-database-holy-grail\">somewhere within the NuoDB site<\/a>.<\/p>\n<p>The most import ant contribution that Morris makes, in my mind is that there are four models of scale out RDBMS. (Shared Disk, Shared Nothing, Synchronous Commit and their own Durable Distributed Cache invented, (or maybe substantiated), by <a title=\"his wikipedia entry, is he the greatest database engineer of the age\" href=\"http:\/\/en.wikipedia.org\/wiki\/Jim_Starkey\">Jim Starkey<\/a>.)<\/p>\n<p>Unsurprisingly, Morris&#8217; third article extolling the superiority of what he has to sell&nbsp; does not, as far as I can see describe how the <acronym title=\"by which we mean the Consistency property of the CAP theorum, see below\">consistency property<\/acronym> is met. I need to re-read the <acronym title=\"Multi Version Concurrency Control\">MVCC<\/acronym> part of the article. MVCC is based on a file\/item append model. MVCC obviates locks (How?) and thus removes a massive part of the seriality of a DBMS which is good because not only do we have Brewers Theory to deal with, but also Amdahl&#8217;s Law. The un-answered question to me is how does the relevant cache partition ensure that the page copy it gets from a remote node is the most recent and not required to be locked for update? He states the relationships are asynchronous between nodes, so we are back to eventually consistent, it would seem.<\/p>\n<p>From Morris&#8217; article we learn that NuoDB (like MarkLogic?) and in fact like MySQL where Starkey worked for a while consists of a Transaction Engine and a Storage Manager entity.<\/p>\n<p>Morris mentions <a title=\"F1: A Distributed SQL Database That Scales (@VLDB)\" href=\"http:\/\/research.google.com\/pubs\/pub41344.html\">Google F1<\/a>, which is used to support <a title=\"F1 - The Fault-Tolerant Distributed RDBMS Supporting Google's Ad Business\" href=\"http:\/\/research.google.com\/pubs\/pub38125.html\">their ad keywords database<\/a>.It is based on <a title=\"Spanner at Google Research\" href=\"http:\/\/research.google.com\/archive\/spanner.html\">Google&#8217;s Spanner<\/a> which seems pretty much their answer to the CAP theorum, we&#8217;ll have to see what the latency cost is like, but being Google it may not be publicly open source.<\/p>\n<p>Morris&#8217; article does not reference Brewer&#8217;s CAP theory.<\/p>\n<p>I originally posted some links via delicious but they went away a lng time ago. I found this, https:\/\/dzone.com\/articles\/understanding-the-cap-theorem later. At some stage&nbsp; I found the proof that the CAP theorem was a theory.<\/p>\n<p>Can we break Brewer&#8217;s theory?<\/p>\n<p>I need a, personally, accessible definition of Consistent, Available and Partition Aware. (The first two are easy). Although <a title=\"wikipedia on CAP\" href=\"http:\/\/en.wikipedia.org\/wiki\/CAP_theorem\">the wikipedia entry, CAP Theorum<\/a> has a pretty good set of definitions<\/p>\n<blockquote><p>In <a title=\"Theoretical computer science\" href=\"http:\/\/en.wikipedia.org\/wiki\/Theoretical_computer_science\">theoretical computer science<\/a>, the <b>CAP theorem<\/b>, also known as <b>Brewer&#8217;s theorem<\/b>, states that it is impossible for a <a title=\"Distributed computing\" href=\"http:\/\/en.wikipedia.org\/wiki\/Distributed_computing\">distributed computer system<\/a> to simultaneously provide all three of the following guarantees:<sup id=\"cite_ref-Lynch_1-0\"><a href=\"http:\/\/en.wikipedia.org\/wiki\/CAP_theorem?d96a349c52fc4f68eea46a47ccb3d360#cite_note-Lynch-1\">[1]<\/a><\/sup><sup id=\"cite_ref-2\"><a href=\"http:\/\/en.wikipedia.org\/wiki\/CAP_theorem?d96a349c52fc4f68eea46a47ccb3d360#cite_note-2\">[2]<\/a><\/sup><\/p>\n<ul>\n<li><i>Consistency<\/i> (all nodes see the same data at the same time)<\/li>\n<li><i><a title=\"Availability\" href=\"http:\/\/en.wikipedia.org\/wiki\/Availability\">Availability<\/a><\/i> (a guarantee that every request receives a response about whether it was successful or failed)<\/li>\n<li><i><a title=\"Network partitioning (page does not exist)\" href=\"http:\/\/en.wikipedia.org\/w\/index.php?title=Network_partitioning&amp;action=edit&amp;redlink=1\">Partition tolerance<\/a><\/i> (the system continues to operate despite arbitrary message loss or failure of part of the system)<\/li>\n<\/ul>\n<\/blockquote>\n<p>It&#8217;s likely I suppose that we might engineer to ensure that the failing condition is so trivial it can be ignored.<\/p>\n<p>The commonest compromise is between availability and consistency although eventual consistency is a relatively modern construction.<\/p>\n<p>Shared disk clusters engineered for HA on a fail fast and recover algorithm are a solution that fails the Availability requirement of the CAP theorum although they have a zero RPO and can have relatively short RTOs.<\/p>\n<p>Here&#8217;s <a title=\"Bloor on NuoDB\" href=\"https:\/\/web.archive.org\/web\/20141114083651\/http:\/\/go.nuodb.com:80\/rs\/nuodb\/images\/Bloor-Report-NuoDB-Oct-15-2013.pdf\">the sponsored Bloor paper on NuoDB<\/a>.<\/p>\n<p>The&nbsp;<a title=\"his wikipedia entry, is he the greatest database engineer of the age\" href=\"http:\/\/en.wikipedia.org\/wiki\/Jim_Starkey\">Jim Starkey<\/a> wikipedia article references a 2012 patent that patents &#8220;A multi-user, elastic, on-demand, distributed relational database management system.&#8221; At some time the site hosting the patent went away, maybe because the patent had expired, but I found <a href=\"https:\/\/patents.justia.com\/assignee\/nimbusdb-inc\">this<\/a>, which is probably a record of patent. We&#8217;ll see? Probably the patents that protect the Nuodb products.<\/p>\n<p style=\"text-align: center;\">ooOOOoo<\/p>\n<p>The NHS have decided to replace Oracle with <a title=\"RIAK's home page\" href=\"http:\/\/basho.com\/riak\/\">RIAK <\/a>for the &#8220;spine&#8221;. This claims partition tolerance and availability.<\/p>\n<p><a title=\"http:\/\/www.aerospike.com\/\" href=\"http:\/\/www.aerospike.com\/\">http:\/\/www.aerospike.com\/<\/a> is another hi-performance, scale-out database.<\/p>\n<p>When considering XML\/RDF optimised databases, I have been pointed at Virtuoso, which has <a title=\"at wikipedia, Virtuoso Universal Server\" href=\"http:\/\/en.wikipedia.org\/wiki\/Virtuoso_Universal_Server\">a wikipedia page here<\/a>. and a <a title=\"their white papers page\" href=\"https:\/\/web.archive.org\/web\/20190121121647\/https:\/\/virtuoso.openlinksw.com\/white-papers\/\">white papers page here<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>This was written 2014, I wonder how relevant it is today (2023). Much of it points are theory, which should not have changed. &#x1f600; Barry Morris, CEO of Nuodb, has written a series of articles about the &#8220;Holy Grail&#8221;, which he published at the Cloud Computing Journal, and somewhere within the NuoDB site. The most&#8230;<\/p>\n","protected":false},"author":1,"featured_media":7849,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":"","_share_on_mastodon":"0"},"categories":[111,3],"tags":[621,619,112,496,622,1919,618,623,920,911],"class_list":["post-2016","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-cloud","category-technology","tag-barry-morris","tag-brewers-cap-theory","tag-cloud-2","tag-database","tag-distributed-systems","tag-jimstarkey","tag-rdbms","tag-riak","tag-software","tag-technology"],"share_on_mastodon":{"url":"","error":""},"jetpack_featured_media_url":"https:\/\/davelevy.info\/wiki\/wp-content\/uploads\/2014\/01\/stuttgartlibrary-tobias-fischer-unsplash-w1280.jpg","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/davelevy.info\/wiki\/wp-json\/wp\/v2\/posts\/2016","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/davelevy.info\/wiki\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/davelevy.info\/wiki\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/davelevy.info\/wiki\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/davelevy.info\/wiki\/wp-json\/wp\/v2\/comments?post=2016"}],"version-history":[{"count":12,"href":"https:\/\/davelevy.info\/wiki\/wp-json\/wp\/v2\/posts\/2016\/revisions"}],"predecessor-version":[{"id":7895,"href":"https:\/\/davelevy.info\/wiki\/wp-json\/wp\/v2\/posts\/2016\/revisions\/7895"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/davelevy.info\/wiki\/wp-json\/wp\/v2\/media\/7849"}],"wp:attachment":[{"href":"https:\/\/davelevy.info\/wiki\/wp-json\/wp\/v2\/media?parent=2016"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/davelevy.info\/wiki\/wp-json\/wp\/v2\/categories?post=2016"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/davelevy.info\/wiki\/wp-json\/wp\/v2\/tags?post=2016"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}