<turbo-stream action="append" target="posts_list"><template>    <div class="postbit" id="370717" data-post-id="370717">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="garrison" src="/assets/icons/user-9f439610.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  garrison
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>It’s so funny reading a post from someone who actually knows FDB well lol. You know <em>exactly</em> where the pain points are. At the end of the day Apple clearly has no interest in maintaining it as an open project and the codebase is just way too onerous to fork. But full credit to them for releasing it at all, they didn’t have to.</p>
<aside class="quote no-group" data-username="jstimps" data-post="10" data-topic="71944">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/jstimps/48/37213_2.png" class="avatar"> jstimps:</div>
<blockquote>
<p>Stellar documentation</p>
</blockquote>
</aside>
<p>Indeed, Elixir has some of the best docs out there so an Elixir database should continue that trend.</p>
<p>Unfortunately distributed databases with good <em>architecture</em> docs are quite rare (I have read like all of them at this point). CockroachDB has an <em>okay</em> design doc and some decent RFCs if you go looking. The best I’ve seen are probably Tigerbeetle’s, there is a lot to learn from their architecture WRT safety. FDB’s docs are a fragmented disaster (but still certainly not the worst).</p>
<p>One really gets the impression that vendors see architecture docs as a moat and therefore have little incentive to maintain them. One of the most egregious I saw was Neon (disaggregated Postgres), which boasted about being “open source” but had no documentation <em>at all</em> that I could find for how to self-host it. And now they’ve been acquired, so do you think those docs will ever be written? Yeah right.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="370717" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/what-would-you-like-to-see-from-a-native-elixir-database/71944/12">Post #11</a>
	                </div>
	            </div>
              <div id="likers-container-370717" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="370717"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #11"></div>
  </section>
</div>
    <div class="postbit" id="370724" data-post-id="370724">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="garrison" src="/assets/icons/user-9f439610.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  garrison
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="jstimps" data-post="10" data-topic="71944">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/jstimps/48/37213_2.png" class="avatar"> jstimps:</div>
<blockquote>
<p>a low level API compatible with FDB’s core feature set (ordered keyset, get range, clear range, transactions, mvcc)</p>
</blockquote>
</aside>
<p>The API is very good but they made a couple of mistakes. A big one is that they defined a standard encoding for keys (tuple layer) but not for <em>values</em>. Binary keys/values are <a href="https://buttondown.com/jaffray/archive/its-time-to-stop-building-kv-databases/" rel="noopener nofollow ugc">a bad abstraction</a>, which they clearly recognized in the key case but not the value case. As a result Apple’s own record layer uses Protobufs.</p>
<p>There are two problems with this. First it hurts interop between potential layers, which is unfortunate. But second it makes it <em>very hard</em> to do predicate pushdown, which is very important for a distributed database. You can’t push a filter down to the storage layer if the storage layer has no idea what it stores!</p>
<p>And the tuple encodings are not suitable for values because they have to be parsed in full to be decoded. Which is necessary for sorting and fine for keys (which are small), but would be very bad for row values as you have to decode the entire thing just to read one column out of the middle. What you really want is a header with the value offsets up-front.</p>
<p>The solution, I think, is to define a record encoding to go along with the key encodings. I think it should (logically) be an ordered map <code>integer =&gt; value</code> where values are typed. Then you define a header up front with a format like <code>type, id, offset, length?</code>. Similar to protobuf etc.</p>
<p>Integer field ids are sufficient, schemas and so on can be managed by layers, either hard-coded or dynamic (you’re familiar with this!) schema management depending on the use-case.</p>
<aside class="quote no-group" data-username="jstimps" data-post="10" data-topic="71944">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/jstimps/48/37213_2.png" class="avatar"> jstimps:</div>
<blockquote>
<p>No query planner, or a very limited one. Permissive planners have caused me a lot of headaches</p>
</blockquote>
</aside>
<p>I know where you’re coming from here, but the relational model necessitates some amount of query planning to satisfy data independence. We have discussed this before, though at the time I don’t think I realized this was spelled out so explicitly in the original Codd paper.</p>
<p>I think the planner can be kept fairly simple, though. I would argue even your ecto_fdb index selection logic constitutes a degenerate query planner (though it does not achieve independence).</p>
<p>Even more important is ensuring some sort of escape hatch. I don’t mind the Postgres planner 90% of the time, but then every so often it just <em>refuses</em> to use the indexes that I <em>know</em> are better and that just drives me insane.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="370724" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/what-would-you-like-to-see-from-a-native-elixir-database/71944/13">Post #12</a>
	                </div>
	            </div>
              <div id="likers-container-370724" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="370724"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #12"></div>
  </section>
</div>
    <div class="postbit" id="370733" data-post-id="370733">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="garrison" src="/assets/icons/user-9f439610.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  garrison
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>After some thought I’m going to add a few more points which I had elided from the OP. These are a little more specific.</p>
<ul>
<li>
<p><strong>Sum types.</strong> Sometimes it can be useful to define fields (columns) which can be one of several types. This is something which needs to be used sparingly but which would be very useful in certain situations.</p>
</li>
<li>
<p><strong>Polymorphic relations.</strong> This comes up <em>a lot</em> on here with Ecto (there is literally a new thread today lol). SQL makes this really hard. But if you implement foreign relations <em>as types</em> then you get polymorphism <em>from sum types</em>. This could be a nice DX improvement.</p>
</li>
<li>
<p><strong>Incrementalization (live queries).</strong> Realtime functionality is a selling point for Elixir (particularly LiveView). There are ways to hack this together with PubSub or WAL parsing (with Postgres), but by designing this into the database from the start you can ensure a consistent realtime snapshot across queries. This would, essentially, be the “holy grail”.</p>
</li>
</ul>
<p>I think the third is obviously useful but I would be interested to hear dissent on the first two as I’m less confident there.</p>
<p>Also, I have moved this thread out of the ecosystem category as I don’t see any reason for it to be hidden.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="370733" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/what-would-you-like-to-see-from-a-native-elixir-database/71944/14">Post #13</a>
	                </div>
	            </div>
              <div id="likers-container-370733" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="370733"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #13"></div>
  </section>
</div>
    <div class="postbit" id="370737" data-post-id="370737">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="Asd" src="/assets/icons/user-9f439610.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  Asd
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<blockquote>
<p><strong>Strong consistency</strong><br>
Partition tolerance<br>
<strong>High availability</strong></p>
</blockquote>
<p>These three are incompatible. Pick two</p>
<blockquote>
<p><strong>Free</strong></p>
</blockquote>
<p>Yeah, right, you want to have a database program with first-in-class features and you want to have it for free. Well, I mean, you can want that, sure, but no matter how much you want that, it sounds like a several years of work for like 5-ish top level engineers with very broad experience.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="370737" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/what-would-you-like-to-see-from-a-native-elixir-database/71944/15">Post #14</a>
	                </div>
	            </div>
              <div id="likers-container-370737" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="370737"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #14"></div>
  </section>
</div>
    <div class="postbit" id="370741" data-post-id="370741">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="garrison" src="/assets/icons/user-9f439610.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  garrison
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="Asd" data-post="15" data-topic="71944">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/letter_avatar_proxy/v4/letter/a/c68b51/48.png" class="avatar"> Asd:</div>
<blockquote>
<p>These three are incompatible. Pick two</p>
</blockquote>
</aside>
<p>I am well aware of the cap theorem lol. Was this a non-sequitur?</p>
<aside class="quote no-group" data-username="Asd" data-post="15" data-topic="71944">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/letter_avatar_proxy/v4/letter/a/c68b51/48.png" class="avatar"> Asd:</div>
<blockquote>
<p>and you want to have it for free</p>
</blockquote>
</aside>
<p>Free as in <em>freedom</em>.</p>
<p>I meant that one more as a success criterion than a “want”. Proprietary databases are essentially worthless to me, and VC funded “open source” databases have a habit of lying to their users/customers and turning into proprietary databases as of late. I think in order to be successful the developers of such a database will need to strongly signal their genuine belief in free software instead of using it as a carrot to trap customers.</p>
<p>I guess I should have been more clear.</p>
<aside class="quote no-group" data-username="Asd" data-post="15" data-topic="71944">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/letter_avatar_proxy/v4/letter/a/c68b51/48.png" class="avatar"> Asd:</div>
<blockquote>
<p>it sounds like a several years of work for like 5-ish top level engineers with very broad experience</p>
</blockquote>
</aside>
<p>Well you know what they say, mo engineers mo problems.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="370741" data-batch-url="/posts/batch_likers">
                        2
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/what-would-you-like-to-see-from-a-native-elixir-database/71944/16">Post #15</a>
	                </div>
	            </div>
              <div id="likers-container-370741" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="370741"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #15"></div>
  </section>
</div>
    <div class="postbit" id="370754" data-post-id="370754">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="pleb" src="/assets/icons/user-9f439610.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  pleb
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>a writeup for <a href="https://github.com/orgs/OpenRiak/discussions/23" class="inline-onebox" rel="noopener nofollow ugc">Any way to embed riak_kv? · OpenRiak · Discussion #23 · GitHub</a> would be enough for me</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="370754" data-batch-url="/posts/batch_likers">
                        2
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/what-would-you-like-to-see-from-a-native-elixir-database/71944/17">Post #16</a>
	                </div>
	            </div>
              <div id="likers-container-370754" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="370754"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #16"></div>
  </section>
</div>
    <div class="postbit" id="370756" data-post-id="370756">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="garrison" src="/assets/icons/user-9f439610.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  garrison
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I didn’t realize Riak couldn’t be embedded. Seems like wasted potential; it would be pretty cool to have in-BEAM even just for unit tests/development.</p>
<p>I guess back in the day they were targeting the wider market so they never bothered?</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="370756" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/what-would-you-like-to-see-from-a-native-elixir-database/71944/18">Post #17</a>
	                </div>
	            </div>
              <div id="likers-container-370756" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="370756"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #17"></div>
  </section>
</div>
    <div class="postbit" id="370772" data-post-id="370772">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="AstonJ" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/AstonJ/120/15_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  AstonJ
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group quote-modified" data-username="garrison" data-post="1" data-topic="71944">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/letter_avatar_proxy/v4/letter/g/3bc359/48.png" class="avatar"> garrison:</div>
<blockquote>
<p>What would you like to see from a native Elixir database?</p>
</blockquote>
</aside>
<p>Most importantly, stability/reliability and performance/speed.</p>
<p>I experienced no end of problems with MySQL, and, touch wood, to date, zero problems with Postgres.</p>
<aside class="quote no-group" data-username="al2o3cr" data-post="3" data-topic="71944">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/al2o3cr/48/3457_2.png" class="avatar"> al2o3cr:</div>
<blockquote>
<p>I’ll turn this question on its head: what sort of features, functionality, and so on are you envisioning you can ONLY get with an Elixir database?</p>
</blockquote>
</aside>
<p>+1</p>
<p>I think irrespective of which language a new DB was built on there really would need to be a compelling case to get people to switch from something like Postgres - what usp could an Elixir DB have?</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="370772" data-batch-url="/posts/batch_likers">
                        3
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/what-would-you-like-to-see-from-a-native-elixir-database/71944/19">Post #18</a>
	                </div>
	            </div>
              <div id="likers-container-370772" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="370772"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #18"></div>
  </section>
</div>
    <div class="postbit" id="370794" data-post-id="370794">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="krisleech" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/krisleech/120/35182_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  krisleech
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>The ability to “rewind” and see the state in the past.</p>
<p>This is what <a href="https://www.datomic.com/" rel="noopener nofollow ugc">Datomic</a> allows.</p>
<p>From the homepage:</p>
<blockquote>
<p>Critical insights come from knowing the full story of your data, not just the most recent state. Datomic stores a record of immutable facts, which gives your applications <strong>strong consistency</strong> combined with <strong>horizontal read scalability</strong> , plus <strong>built-in caching</strong> . Since facts are never update-in-place and all data is retained by default, you get <strong>built-in auditing</strong> and the ability to <strong>query history</strong> . All of this with fully <strong>ACID-compliant transactions</strong> .</p>
</blockquote>
<p>And their <a href="https://docs.datomic.com/datomic-overview.html" rel="noopener nofollow ugc">docs</a>:</p>
<blockquote>
<ul>
<li><strong>Auditability:</strong> the total ordering of transactions and the fact that nothing is ever changed or removed means that you know and can demonstrate every step in the history of your data. The fact that transactions are themselves entities also offers an ideal place to store domain-specific provenance metadata.</li>
</ul>
</blockquote> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="370794" data-batch-url="/posts/batch_likers">
                        3
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/what-would-you-like-to-see-from-a-native-elixir-database/71944/20">Post #19</a>
	                </div>
	            </div>
              <div id="likers-container-370794" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="370794"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #19"></div>
  </section>
</div>
    <div class="postbit" id="370803" data-post-id="370803">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="byu" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/byu/120/32032_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  byu
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>First, I preface this as I’m reading this thread as an intellectual exercise… I don’t give good odds that this may turn into a practical project since postgres (and other open source DBs) have so much momentum and world-wide support.</p>
<p>I do love to read garrison’s posts all DB related.</p>
<p>Random thoughts:</p>
<ol>
<li>Intent?</li>
</ol>
<p>Is the intent of just something better than mnesia? Lightweight (sqlite-like) native in BEAM? Or like a serious scaling RDBMS along the lines of FoundationDB?</p>
<ol start="2">
<li>Question of embedding</li>
</ol>
<blockquote>
<p>a writeup for <em>Any way to embed riak_kv? · OpenRiak · Discussion <span class="hashtag-raw">#23</span> · GitHub</em> would be enough for me</p>
</blockquote>
<p>I can’t find the thread/link, but I think there was something where someone stated that they wouldn’t want to collocate Riak with the app because of “blast radius” boundary, and thus didn’t really build for the embedded case.</p>
<p>I personally would not want to have an app deployment (e.g. fly blue-green deployments) to elevate the risk of database issue, as deploying each to me are different concerns:</p>
<ul>
<li>DB deployment or upgrade is an infrastructure issue</li>
<li>App deployment is application/businessFeatures level.</li>
</ul>
<p>I still say that the idea of a BEAM-native DB (actually DX usable instead of mnesia) might be a good thing, especially if it takes advantage of BEAM’s uptime/fault capabilities for operational management (e.g. work towards zero-downtime upgrading/downgrading)?</p>
<ol start="3">
<li>Temporal Databases</li>
</ol>
<blockquote>
<p>The ability to “rewind” and see the state in the past.</p>
</blockquote>
<p>I think that Datomic’s time travel works because it models (turtles all the way down) as statement tuples like RDF’s Subject-Predicate-Value-- They have Entity-Attribute-Value-Transaction. So, to me, Datomic’s unification of Domain Business Modeling with Data (Structural/Persistence) Modeling is what allows the application-developer to have something easily understandable/usable in the time travel.</p>
<p>Whereas, it appears to me that Relational DB implementations (e.g. Postgres) is all about the WAL that is persisting what I think CJ Date might have described as the “internal model”? An impedance mismatch between that and the conceptual level-- This is me (a non-db-dev or researcher) working on hazy memory from past reading.</p>
<p>Where I think I would find more use in Event Sourcing DB where I’m describing at the “Business/Domain” (not CRUD) changes, and then rebuild a custom business-driven view at a point in time IF I ever need to.</p>
<p>And if time travel were important in my use of RDBMS-- I have not regularly needed a native-db temporal time travel capability-- I would think we could model the time-components as distinct columns anyways, use SQL to give me point in time views?</p>
<ol start="4">
<li>SQL</li>
</ol>
<p>Didn’t Andy Pavlo-- gangster by thy name? – say something to the effect of how so many people tried to reinvent or create alt-languages, but everything eventually will consolidate back into SQL, which he implied, just skip the pain and work with SQL?</p>
<hr>
<p><img src="https://forum.elixirforum.com/images/emoji/apple/+1.png?v=15" title=":+1:" class="emoji" alt=":+1:" loading="lazy" width="20" height="20"> love reading the above thread.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="370803" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/what-would-you-like-to-see-from-a-native-elixir-database/71944/21">Post #20</a>
	                </div>
	            </div>
              <div id="likers-container-370803" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="370803"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #20"></div>
  </section>
</div>
</template></turbo-stream><turbo-stream action="replace" target="load-more-container"><template><div id="load-more-container" class="load-more-container">
    <a class="load-more-button" data-turbo-stream="true" href="/topics/71944/load_more?page=3">Load more posts (28 remaining)</a>
</div></template></turbo-stream>