Rick, thanks for your feedback. Having something like this available as a driver on top of neo4j (embedded or server) would be very nice. Did you also look into the API required by Java Content Repository - JCR (JSR 170 and 283), how far you would be able to provide and implementation for that?
Using neo4j as a blob store is an interesting approach. Especially if you partition your blob data to a defined and configured (in neo4j) block-size and so allow partial access to parts of the blob (e.g. for parallel streaming or continued downloads or git-like hashing of blob parts/partial changes). Just read this git parable over the weekend (http://tom.preston-werner.com/2009/05/19/the-git-parable.html) and putting git on top of neo4j would actually a very exciting experiment. Cheers Michael Am 06.02.2011 um 22:04 schrieb Rick Bullotta: > Hi, Michael. > > I wrote a post on this a couple days ago. It would definitely be useful to > have as a core interface in Neo. We ended up implementing it > (approximately) as follows: > > - The "pseudo-folders" are implemented as Neo nodes and relationships > - Each folder can have a name, description, and of course, > relationships to other folders > - A "document" can be linked to one or more folder(s) > - In our implementation, we also manage permission(s) via > relationships between folder(s) and role(s) and document(s) and role(s) > > - The document store is implemented as a pluggable interface that provides: > - byte[] Load (String key) > - InputStream LoadAsStream (String key) > - Reader LoadAsReader (String key) > - String Save (byte[]) > - String SaveFromStream(InputStream) > - String SaveFromReader(Reader) > - Delete(String key) > > - We have currently implemented providers for FileSystem, Neo (store as > byte[] in a separate Neo DB), and Amazon S3 (rough, but functional) > > - The document store implementations are responsible for returning a unique > string key that is used to retrieve and/or delete a document > > - A Neo node represents each document. This node has a few mandatory > properties, and a few optional ones: > - name (name of the document, user defined) > - docStore (the name of the document store) > - key (the key generated by the document store as a result of a > Save) > - mimeType (optional, used in our REST API to set the content type > when streaming/sending the document) > > > Hope this helps. > > Rick > > -----Original Message----- > From: user-boun...@lists.neo4j.org [mailto:user-boun...@lists.neo4j.org] On > Behalf Of Michael Hunger > Sent: Sunday, February 06, 2011 3:51 PM > To: Neo4j user discussions > Subject: [Neo4j] Some brainstorming ideas - 1. Use Neo4j as Document Store > > Hi there, > > this weekend I was away from a computer so I spent some time brainstorming > things. I would be interested in any feedback on those thoughts and would > like to broaden the audience beyond the devteam. > > My question: Has anyone ever tried to use Neo4j as a document store ala > MongoDB. > > The idea. From the root node have relationships to a number of buckets or > "collections". > > From each collection root have a b-tree to all key-nodes of the system. > > Each key-node is just connected by some specfic relationships (like > "contains" or "link" or "subdocument") to its data. (i.e. nodes, > relationships and their properties) not necessarily to other parts of the > graph. > > So for each key node one uses just a default traverser (depth-first, end of > graph, limited to outgoing relationships of the mentioned types) to collect > the whole document (or custom traversers to retrieve only parts of the > documents). > > That could be an interesting experiment to run. > > WDYT? > > Michael > _______________________________________________ > Neo4j mailing list > User@lists.neo4j.org > https://lists.neo4j.org/mailman/listinfo/user > > _______________________________________________ > Neo4j mailing list > User@lists.neo4j.org > https://lists.neo4j.org/mailman/listinfo/user _______________________________________________ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user