<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Recent changes to Persistence</title><link>https://sourceforge.net/p/rupy/wiki/Persistence/</link><description>Recent changes to Persistence</description><atom:link href="https://sourceforge.net/p/rupy/wiki/Persistence/feed" rel="self"/><language>en</language><lastBuildDate>Fri, 13 Mar 2015 09:59:53 -0000</lastBuildDate><atom:link href="https://sourceforge.net/p/rupy/wiki/Persistence/feed" rel="self" type="application/rss+xml"/><item><title>Persistence modified by Anonymous</title><link>https://sourceforge.net/p/rupy/wiki/Persistence/</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;This requires latest &lt;a class="" href="http://rupy.se/rupy.zip" rel="nofollow"&gt;rupy&lt;/a&gt; in hosted mode. &lt;/p&gt;
&lt;p&gt;For true redundancy you need to use some custom cluster database since we &lt;a class="" href="http://host.rupy.se" rel="nofollow"&gt;host&lt;/a&gt; across multiple colocations! Ordinary databases are not secure or redundant in a distributed cluster environment out of the box, but most of all: &lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Database clients don't use async HTTP; you can't scale them easily.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;On the other hand modern file systems are now cheap and fast (ext4) and async is becoming common place; See the entry on &lt;a class="" href="https://code.google.com/p/rupy/wiki/Fuse" rel="nofollow"&gt;FUSE&lt;/a&gt; to learn more on how you can scale any &lt;a class="" href="https://code.google.com/p/rupy/wiki/Process" rel="nofollow"&gt;µSOA&lt;/a&gt; cluster with async HTTP. &lt;/p&gt;
&lt;p&gt;ROOT takes a little bit from all NoSQL databases: document, key-value and graph; It's basically a key-value store (Base58-JSON) with indexing (that we call sort) on custom fields (including full text search) in the JSON and graph relationships between the key-values. &lt;/p&gt;
&lt;p&gt;The JSON objects and indexes are stored as a plain file (symbolic hard link). The relations and full text search are just binary files with lists of longs (the hashed Base58 key). Simple, powerful and in line with both &lt;em&gt;Moore's&lt;/em&gt; and &lt;em&gt;Murphy's&lt;/em&gt; laws. &lt;/p&gt;
&lt;p&gt;&lt;em&gt;Try the current version:&lt;/em&gt; &lt;a class="" href="http://root.rupy.se" rel="nofollow"&gt;root.rupy.se&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;TODO: &lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;new &lt;a class="" href="https://code.google.com/p/rupy/source/browse/trunk/src/se/rupy/http/Async.java" rel="nofollow"&gt;async&lt;/a&gt; client&lt;/li&gt;
&lt;li&gt;&lt;em&gt;edit node&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;sort node&lt;/em&gt; text index&lt;/li&gt;
&lt;li&gt;&lt;em&gt;link node&lt;/em&gt; relation graph&lt;/li&gt;
&lt;li&gt;&lt;em&gt;find node&lt;/em&gt; full text search&lt;/li&gt;
&lt;li&gt;binary file table data &lt;/li&gt;
&lt;li&gt;pagination in lists &lt;/li&gt;
&lt;li&gt;&lt;em&gt;trim node&lt;/em&gt; &amp;amp; &lt;em&gt;link&lt;/em&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;WISH: &lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;link &lt;em&gt;node&lt;/em&gt; many-to-many-to-many... relations, you can do this by folder path. &lt;/li&gt;
&lt;li&gt;replicate any file, images would be nice! &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Source: &lt;a class="" href="http://root.rupy.se/code?path=/User.java" rel="nofollow"&gt;User&lt;/a&gt;, &lt;a class="" href="http://root.rupy.se/code?path=/Root.java" rel="nofollow"&gt;Root&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Anonymous</dc:creator><pubDate>Fri, 13 Mar 2015 09:59:53 -0000</pubDate><guid>https://sourceforge.net59e3a9862a7059d3dfeb31c29d68a8d270972ad6</guid></item></channel></rss>