On 4 May 2010 18:46, Charlie Clark <charlie.cl...@clark-consulting.eu> wrote:
> Am 04.05.2010, 19:20 Uhr, schrieb Laurence Rowe <l...@lrowe.co.uk>:
>> I suspect that databases such as CouchDB and the others you mention
>> are not well suited to graph traversal. Efficient traversal must occur
>> near the data, otherwise you pay the latency cost on each edge
>> traversed. In ZODB this is achieved through the object cache - you
>> expect most of the target object's parents to already be present in
>> the cache when serving a request. In other systems traversal happens
>> in the database - for an example see
> "In essence, each traversal along a link in a graph is a join, and joins
> are known to be very expensive."
> Whilst agreeing enthusiastically with Laurence's assertion that you need
> to be close to the data for efficient traversal, I'm baffled by the
> reference to Neo4j which contains such guff.
Yes, that part is clearly nonsense (as pointed out in the comments),
but I found it an interesting read nonetheless.
It's worth noting that many RDBMS's do now support recursive queries
of some kind (Postgres introduced them in 8.4), though it's not yet
ubiquitous. It would be interesting to see what sort of performance
could be had from a single table adjacency list with metadata stored
as json (or a python pickle.). After all, you are not compelled to
store normalised data in your RDBMS.
Nevertheless, I do find the recent NoSQL databases interesting, mostly
for their willingness to relax consistence constraints to achieve
Repoze-dev mailing list