<div dir="ltr">The simplest way is probably to map a path to its data, where the path is a list of components. That is, the UNIX file ls in /usr/bin would be represented as ["usr", "bin", "ls"].<div><br></div><div>But you could also go the way of Plan9's venti. Map something like ["usr", "bin", "ls"] into a sha3 checksum of the data currently residing in the file and keep the data inside a storage suitable for storing data by its content addressing. venti also extends this by storing a tree of 64 kilobyte blocks which can then be regarded as the data when taken together. Thus, you have two components: the data store, and the path mapping service, mapping a path to the underlying data.</div><div><br></div><div>This idea has the advantage of being practically useful in many situations beside a toy example :)</div></div><br><div class="gmail_quote"><div dir="ltr">On Sun, Mar 26, 2017 at 2:46 PM Marco Molteni <<a href="mailto:marco.molteni@laposte.net">marco.molteni@laposte.net</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hello colleagues,<br class="gmail_msg">
<br class="gmail_msg">
I would like to start from the presentation "Build an FTP Server with Ranch in 30 Minutes" and really build an FTP server, so at a certain point I need to hit the filesystem.<br class="gmail_msg">
<br class="gmail_msg">
Since the idea is still as a presentation (as opposed to building a production FTP server) I don't want to touch the real filesystem of the host, I want to use a as simple as possible virtual filesystem. It could be backed by DETS or Mnesia for example, or it could stay only in memory.<br class="gmail_msg">
<br class="gmail_msg">
On the other hand, it must still behave as a filesystem, that is, it must be hierarchical, so a direct mapping to a key/value store would not be enough. In the spirit of simplicity, I don't need any concept of read/write permission, I simply need a sort of graph with two types: inner nodes are directories, leaf nodes are files or empty directories.<br class="gmail_msg">
<br class="gmail_msg">
I am thinking to use DETS and somehow introduce a very simple intermediate layer that would offer the impression to be in a graph (each non-leaf node a directory) and map it to the DETS key/value API.<br class="gmail_msg">
<br class="gmail_msg">
Any suggestions?<br class="gmail_msg">
<br class="gmail_msg">
thanks<br class="gmail_msg">
marco<br class="gmail_msg">
<br class="gmail_msg">
[1] <a href="https://ninenines.eu/articles/ranch-ftp/" rel="noreferrer" class="gmail_msg" target="_blank">https://ninenines.eu/articles/ranch-ftp/</a><br class="gmail_msg">
_______________________________________________<br class="gmail_msg">
erlang-questions mailing list<br class="gmail_msg">
<a href="mailto:erlang-questions@erlang.org" class="gmail_msg" target="_blank">erlang-questions@erlang.org</a><br class="gmail_msg">
<a href="http://erlang.org/mailman/listinfo/erlang-questions" rel="noreferrer" class="gmail_msg" target="_blank">http://erlang.org/mailman/listinfo/erlang-questions</a><br class="gmail_msg">
</blockquote></div>