<div class="gmail_quote">2011/11/17 Mattias Gaertner <span dir="ltr"><<a href="mailto:nc-gaertnma@netcologne.de">nc-gaertnma@netcologne.de</a>></span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<div class="im">It's a lightweight database for XML files. That means you give it a list</div>
of directories and it will load/parse all xml files including<br>
subdirectories into memory for fast access.<br>
You can query via simple HTTP requests and get xml. So you are not<br>
limited to FPC, you can use any language.<br>
There are several types of query, including some with XPath<br>
expressions. At the moment it supports only a few XPath features, but<br>
they are already quite powerful.<br>
When a file was edited/changed you can trigger a rescan or you can<br>
rescan in interval. A rescan on a thousand directories to search for<br>
modified files usually takes 10-100ms and is done in separate threads to<br>
not disturb the queries. It parses about 5-20MB per second per core and<br>
automatically uses all cores.<br>
<br>
It is currently used by two projects, that were migrated from eXist DB.<br>
One is running on an OS X server, the other on a Linux server. They<br>
have thousands of directories, more than 150MB of XML files, which<br>
refer to others in various ways.</blockquote><div>[...]</div><div><br></div><div>Thanks for the explanation.</div><div>In essence it is a database optimized for reading but not writing.</div><div>For updating the XML file contents there is no concurrency checks or atomic transactions.</div>
<div>That is fine with many use cases but for example e-commerce sites could not use it. They need safe transactions for user profile and sales action management.</div><div>This is partly why the SQL databases are slow, they take care of concurrency also when data is updated.</div>
<div><br></div><div>Your solution could be used to provide fast access to a slow SQL DB data by generating data dumps eg. once a day.</div><div><br></div><div>eXist DB is made with Java. It would be interesting to compare how much their performance differs. Java has become very fast but it still hogs memory.</div>
<div><br></div><div>Good luck with the project!</div><div><br></div><div>Juha</div><div><br></div></div>