<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Causal Ordering on Brave New Geek</title><link>https://bravenewgeek.com/tag/causal-ordering/</link><description>Recent content in Causal Ordering on Brave New Geek</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Tue, 21 Oct 2014 21:23:03 -0600</lastBuildDate><atom:link href="https://bravenewgeek.com/tag/causal-ordering/index.xml" rel="self" type="application/rss+xml"/><item><title>Scaling Shared Data in Distributed Systems</title><link>https://bravenewgeek.com/scaling-shared-data/</link><pubDate>Tue, 21 Oct 2014 21:23:03 -0600</pubDate><guid>https://bravenewgeek.com/scaling-shared-data/</guid><description>&lt;p&gt;Sharing mutable data at large scale is an &lt;em&gt;exceedingly&lt;/em&gt; difficult problem. In their seminal paper &lt;a href="http://pagesperso-systeme.lip6.fr/Marc.Shapiro/papers/RR-6956.pdf"&gt;&lt;em&gt;CRDTs: Consistency without concurrency control&lt;/em&gt;&lt;/a&gt;, Shapiro et al. describe why the CAP theorem demands a give and take between scalability and consistency. In general, CAP requires us to choose between CP and AP. The former requires serializing every write, which doesn’t scale beyond a small cluster. The latter ensures scalability by giving up consistency.&lt;/p&gt;
&lt;h3 id="sharing-data-in-centralized-systems"&gt;Sharing Data in Centralized Systems&lt;/h3&gt;
&lt;p&gt;We tend to prefer weaker consistency models because they mean lower latency and higher availability. To highlight this point, consider the fact that the memory models for most programming languages are &lt;em&gt;not&lt;/em&gt; serializable by default. More concisely, programs with shared memory are not inherently thread-safe. This is a conscious design decision because enforcing memory serializability incurs a significant latency penalty. Instead, programming languages require explicit &lt;em&gt;memory barriers&lt;/em&gt; which can be used around the critical sections which need this property.&lt;/p&gt;</description></item></channel></rss>