Solution for storing digital asset management metadata and dependencies in Python
<p>I'm planning to write some sort of digital management system to help users to deal with files in VCS (SVN, Perforce...) easily. The main premise is, that all files custom metadata and dependencies are stored alongside real files in VCS and not on separate database server. 
But when querying the metadata it would be super slow to load everything from VCS on demand, so I would like to cache all metadata and dependencies locally and just update them incrementally when needed.
I need to write the whole system in Python, since it have to run in several environments that are embedding python.
Theoretically my needs will be fulfilled by <strong>nosql embedded graph database with multiprocess access</strong>, but sadly I can find anything to match this criteria:</p>

<ul>
<li>every file can have different metadata structure, so I can't use schemas, thus no SQL db</li>
<li>I need to store dependencies</li>
<li>ability to search metadata and dependencies</li>
<li>several processes need to be able to read the database at once</li>
<li>serverless solution (only local machine will use it)</li>
<li>Python support</li>
<li>Optionally a way to inform connected processes about database update</li>
</ul>

<p>I would really appreciate if someone more experienced could point me to the right direction. I'm not looking exclusively for one silver-bullet software that would fulfill my needs, it can also be an combination of several solutions. I just don't like reinventing the well, so I would like to use 3rd party solution rather than writing something on my own.</p>

<p>Thank you</p>

<p><a href="https://pypi.python.org/pypi/ZODB" rel="nofollow">ZODB</a> satisfies most of your criteria:</p>

<ul>
<li>support for arbitrary python constructs</li>
<li>usable mostly like having everything in memory as normal objects</li>
<li>if opened in read-only mode multiple processes can read at the same time (i think)</li>
<li>if using with <a href="https://pypi.python.org/pypi/ZEO" rel="nofollow">ZEO</a> (server)  many clients can access at the same time with automatic notification on changes. See sample application in <a href="http://www.zodb.org/en/latest/documentation/guide/zeo.html" rel="nofollow">ZEO guide</a></li>
</ul>

<p>You can load the same database with ZEO or ZODB so you can switch.</p>

<p>There is some tutorial stuff and general info at <a href="http://www.zodb.org" rel="nofollow">http://www.zodb.org</a></p>

python database search nosql