<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/'><id>tag:blogger.com,1999:blog-5194400562660165576.post6219538518945177246..comments</id><updated>2010-03-12T14:22:24.669+01:00</updated><title type='text'>Comments on Neo4j Blog: The current database debate and graph databases</title><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://blog.neo4j.org/feeds/6219538518945177246/comments/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5194400562660165576/6219538518945177246/comments/default'/><link rel='alternate' type='text/html' href='http://blog.neo4j.org/2009/04/current-database-debate-and-graph.html'/><author><name>Tobias Ivarsson</name><uri>http://www.blogger.com/profile/04765223705065183885</uri><email>noreply@blogger.com</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>10</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5194400562660165576.post-8837900543474264448</id><published>2010-03-12T14:22:24.664+01:00</published><updated>2010-03-12T14:22:24.664+01:00</updated><title type='text'>ªAnonymous: At the time Scott Wheeler tried out Ne...</title><content type='html'>ªAnonymous: At the time Scott Wheeler tried out Neo4j, it didn&amp;#39;t have a batch inserter, so inserting large datasets wasn&amp;#39;t nearly as fast as it is now. I guess this solves at least part of their problem. As we never got any detailed information regarding the problem, it&amp;#39;s hard to be more specific.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5194400562660165576/6219538518945177246/comments/default/8837900543474264448'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5194400562660165576/6219538518945177246/comments/default/8837900543474264448'/><link rel='alternate' type='text/html' href='http://blog.neo4j.org/2009/04/current-database-debate-and-graph.html?showComment=1268400144664#c8837900543474264448' title=''/><author><name>Anders Nawroth</name><uri>http://www.blogger.com/profile/02538334376288340169</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='02361133308408145972'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.neo4j.org/2009/04/current-database-debate-and-graph.html' ref='tag:blogger.com,1999:blog-5194400562660165576.post-6219538518945177246' source='http://www.blogger.com/feeds/5194400562660165576/posts/default/6219538518945177246' type='text/html'/></entry><entry><id>tag:blogger.com,1999:blog-5194400562660165576.post-7418569685391250434</id><published>2010-03-04T08:54:57.016+01:00</published><updated>2010-03-04T08:54:57.016+01:00</updated><title type='text'>im interested to hear if Scott Wheeler (of Directe...</title><content type='html'>im interested to hear if Scott Wheeler (of DirectedEdge) problems with Neo4j performance have been solved?</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5194400562660165576/6219538518945177246/comments/default/7418569685391250434'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5194400562660165576/6219538518945177246/comments/default/7418569685391250434'/><link rel='alternate' type='text/html' href='http://blog.neo4j.org/2009/04/current-database-debate-and-graph.html?showComment=1267689297016#c7418569685391250434' title=''/><author><name>Anonymous</name><email>noreply@blogger.com</email></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.neo4j.org/2009/04/current-database-debate-and-graph.html' ref='tag:blogger.com,1999:blog-5194400562660165576.post-6219538518945177246' source='http://www.blogger.com/feeds/5194400562660165576/posts/default/6219538518945177246' type='text/html'/></entry><entry><id>tag:blogger.com,1999:blog-5194400562660165576.post-5533888098759045664</id><published>2009-09-10T12:28:42.373+02:00</published><updated>2009-09-10T12:28:42.373+02:00</updated><title type='text'>At least some of the things that Phil Goetz misses...</title><content type='html'>At least some of the things that Phil Goetz misses in Neo4J are, as far as I can see, to be found in Topic Maps. Check out e.g. the implementation by Ontopia http://code.google.com/p/ontopia/. The query language that is being developed for Topc Maps is also based on Prolog.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5194400562660165576/6219538518945177246/comments/default/5533888098759045664'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5194400562660165576/6219538518945177246/comments/default/5533888098759045664'/><link rel='alternate' type='text/html' href='http://blog.neo4j.org/2009/04/current-database-debate-and-graph.html?showComment=1252578522373#c5533888098759045664' title=''/><author><name>Jens Østergaard Petersen</name><uri>http://www.blogger.com/profile/15093865116695818136</uri><email>noreply@blogger.com</email></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.neo4j.org/2009/04/current-database-debate-and-graph.html' ref='tag:blogger.com,1999:blog-5194400562660165576.post-6219538518945177246' source='http://www.blogger.com/feeds/5194400562660165576/posts/default/6219538518945177246' type='text/html'/></entry><entry><id>tag:blogger.com,1999:blog-5194400562660165576.post-5035067971356376986</id><published>2009-07-31T23:29:43.419+02:00</published><updated>2009-07-31T23:29:43.419+02:00</updated><title type='text'>While you are correct in your assesment that key v...</title><content type='html'>While you are correct in your assesment that key value stores dont have any relationships between the key value pairs. But you should also mention that the main draw to key value stores is their distributability. I just started reading about Neo4j so I dont know how ready it is to run on data spread over 100s of different machines or to be run in an online environment.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5194400562660165576/6219538518945177246/comments/default/5035067971356376986'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5194400562660165576/6219538518945177246/comments/default/5035067971356376986'/><link rel='alternate' type='text/html' href='http://blog.neo4j.org/2009/04/current-database-debate-and-graph.html?showComment=1249075783419#c5035067971356376986' title=''/><author><name>Puneet</name><uri>http://www.blogger.com/profile/16212266980352677080</uri><email>noreply@blogger.com</email></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.neo4j.org/2009/04/current-database-debate-and-graph.html' ref='tag:blogger.com,1999:blog-5194400562660165576.post-6219538518945177246' source='http://www.blogger.com/feeds/5194400562660165576/posts/default/6219538518945177246' type='text/html'/></entry><entry><id>tag:blogger.com,1999:blog-5194400562660165576.post-452843577267462110</id><published>2009-07-21T23:17:49.958+02:00</published><updated>2009-07-21T23:17:49.958+02:00</updated><title type='text'>@Phil Goetz

Thanks for your input!

Neo4j was des...</title><content type='html'>@Phil Goetz&lt;br /&gt;&lt;br /&gt;Thanks for your input!&lt;br /&gt;&lt;br /&gt;Neo4j was designed to provide a simple, flexible and performant way to persist directed labeled graphs. Other representations can then easily be built on top of Neo4j and as different use cases have different needs, it wouldn&amp;#39;t be a good design choice to try to put everything into the core Neo4j engine.&lt;br /&gt;&lt;br /&gt;At the moment Neo4j is quite new and doesn&amp;#39;t come with lots of different layers built on top of it, but this part improves more and more. One example of a layer on top of Neo4j that already exists is the RDF/SPARQL implementation, maybe that is of some interest for you.&lt;br /&gt;&lt;br /&gt;To solve your problems, you could for example add a layer to represent rules using Neo4j. Also, you could add a layer to make relationships able to have relationships themselves by simply using an intermediate node. I&amp;#39;m sure you could get some help from people on the &lt;a href="http://neo4j.org/community/list/" rel="nofollow"&gt;mailing list&lt;/a&gt;.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5194400562660165576/6219538518945177246/comments/default/452843577267462110'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5194400562660165576/6219538518945177246/comments/default/452843577267462110'/><link rel='alternate' type='text/html' href='http://blog.neo4j.org/2009/04/current-database-debate-and-graph.html?showComment=1248211069958#c452843577267462110' title=''/><author><name>Anders Nawroth</name><uri>http://www.blogger.com/profile/02538334376288340169</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='02361133308408145972'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.neo4j.org/2009/04/current-database-debate-and-graph.html' ref='tag:blogger.com,1999:blog-5194400562660165576.post-6219538518945177246' source='http://www.blogger.com/feeds/5194400562660165576/posts/default/6219538518945177246' type='text/html'/></entry><entry><id>tag:blogger.com,1999:blog-5194400562660165576.post-1231996509161087970</id><published>2009-07-21T02:23:01.738+02:00</published><updated>2009-07-21T02:23:01.738+02:00</updated><title type='text'>I was excited to hear about Neo4j.  I was disappoi...</title><content type='html'>I was excited to hear about Neo4j.  I was disappointed to see how it&amp;#39;s implemented.&lt;br /&gt;&lt;br /&gt;It&amp;#39;s a vast improvement over relational DBs.  You should write examples for the SQL people who can&amp;#39;t see that.  For example, here&amp;#39;s an SQL query in a program I work on:&lt;br /&gt;&lt;br /&gt;SELECT r.role_id FROM omnium..ident_names i, omnium..role_link r, omnium..asm_feature f, omnium..db_data d WHERE i.lower_com_name = ? AND i.locus = r.locus AND i.locus=f.locus AND f.db_data_id=d.id AND (d.original_db &amp;lt; &amp;#39;nt&amp;#39; OR d.original_db &amp;gt;= &amp;#39;nu&amp;#39;)&lt;br /&gt;&lt;br /&gt;With a logic system, the query would be&lt;br /&gt;&lt;br /&gt;com_name(L, ?), original_db(L, DB), or(less(DB, &amp;#39;nt&amp;#39;), less(&amp;#39;nu&amp;#39;, DB)), role_id(L, R).&lt;br /&gt;&lt;br /&gt;The query is simpler because for each node, every fact about that node is connected to it, so you don&amp;#39;t have to know what table the info is in, or query fields like db_data_id whose only purpose is to link to tables together.&lt;br /&gt;&lt;br /&gt;Also, with a logic system, you can add rules that will  then be automatically used to answer queries.  So if you have to look up role_id by com_name a lot, you add the rule&lt;br /&gt;&lt;br /&gt;comname_roleid(CN, R) :- com_name(L, CN), original_db(L, DB), or(less(DB, &amp;#39;nt&amp;#39;), less(&amp;#39;nu&amp;#39;, DB)), role_id(L, R).&lt;br /&gt;&lt;br /&gt;and then can just ask&lt;br /&gt;&lt;br /&gt;comname_roleid(&amp;#39;ATP synthase&amp;#39;, ?)&lt;br /&gt;&lt;br /&gt;You can put more and more intelligence into the graph itself.&lt;br /&gt;&lt;br /&gt;More importantly, using a relational DB hinders you from using the information you have.  For instance, if you have a reaction pathway database, it would be really hard to write an SQL query that meant &amp;#39;Find all the proteins X whose mutation could account for the loss of production of protein Y.&amp;quot;  It would be simple with a graph database.&lt;br /&gt;&lt;br /&gt;Sadly, you can&amp;#39;t do all of these things with neo4j either!  It falls short of the basic principles of knowledge representation developed in the 1970s in 3 critical ways:&lt;br /&gt;&lt;br /&gt;1. It stores only triples. It can&amp;#39;t represent unary or trinary relations.  This means that it can&amp;#39;t represent the &amp;quot;not&amp;quot; predicate.  So if your schema lets you store &amp;quot;relation(A,B)&amp;quot; in the DB, you can&amp;#39;t store the fact &amp;quot;not(relation(A,B))&amp;quot;.  Also, you can&amp;#39;t store the relation &amp;quot;true(relation(A,B))&amp;quot;, which means you can&amp;#39;t distinguish between facts that are asserted as true, and facts that are merely the constituents of larger, opposite assertions, like &amp;quot;not(relation(A,B))&amp;quot;.  This  means you can&amp;#39;t do reasoning, because you can&amp;#39;t represent what one agent believes that another agent believes.&lt;br /&gt;&lt;br /&gt;2. The &amp;#39;link&amp;#39; part of a neo4j relation is not a node!  So you can&amp;#39;t write a relation about another relation.  So you can&amp;#39;t even represent boolean statements like and(or(A,B), or(C,D)).  All the info about a link has to be stored in that link, so it is impossible to add arbitrary modifiers about links!  For instance, if you have a link saying that a gene has an annotation, you can&amp;#39;t then say how confident you are about that annotation, except by building that into the link schema.  And even if you do that, you can&amp;#39;t then make another assertion about your confidence in the data you used to make the first confidence assertion.  (Yes, it is necessary to do this in the real world.) Which defeats the purpose of moving away from a relational DB.&lt;br /&gt;&lt;br /&gt;3. It doesn&amp;#39;t use the same representation for rules and data.  So there are a lot of things you can&amp;#39;t do.  You can&amp;#39;t use machine learning to learn rules; only programmers can write rules, because they are in Java code, not in Java data structures.  You can&amp;#39;t write rules to inspect other rules; for example, to prioritize rules based on their complexity.&lt;br /&gt;&lt;br /&gt;What I want is a Prolog that works using terabyte knowledge stores on disk.  See &lt;a href="http://en.wikipedia.org/wiki/SNePS" rel="nofollow"&gt;SNePS&lt;/a&gt; for an example of a system that gets knowledge representation right.  Unfortunately, I think it requires its knowledge to all be in memory.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5194400562660165576/6219538518945177246/comments/default/1231996509161087970'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5194400562660165576/6219538518945177246/comments/default/1231996509161087970'/><link rel='alternate' type='text/html' href='http://blog.neo4j.org/2009/04/current-database-debate-and-graph.html?showComment=1248135781738#c1231996509161087970' title=''/><author><name>Phil Goetz</name><email>noreply@blogger.com</email></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.neo4j.org/2009/04/current-database-debate-and-graph.html' ref='tag:blogger.com,1999:blog-5194400562660165576.post-6219538518945177246' source='http://www.blogger.com/feeds/5194400562660165576/posts/default/6219538518945177246' type='text/html'/></entry><entry><id>tag:blogger.com,1999:blog-5194400562660165576.post-234057174774172492</id><published>2009-04-08T23:22:23.450+02:00</published><updated>2009-04-08T23:22:23.450+02:00</updated><title type='text'>One of the other big issues is that a lot of datab...</title><content type='html'>One of the other big issues is that a lot of database work ends up as follows...&lt;BR/&gt;&lt;BR/&gt;1) Using JPA (or whatever), serialize and de-serialize a lot of object graphs.  This happens a lot interactively.&lt;BR/&gt;&lt;BR/&gt;2) Occasionally (less often than (1) but still fairly often), create broad-based sweeping queries against the data represented by those object graphs.&lt;BR/&gt;&lt;BR/&gt;RDBMS systems can handle (1) moderately poorly, and handle (2) really, really well.  Graph and Object systems handle (1) well and (2) poorly.  The thing is that, generally, I'd almost always take a trade-off if the interactive graph building was 10x slower and the big, hairy, complicated reporting was 10x faster, based on application usage.&lt;BR/&gt;&lt;BR/&gt;Every now and then I start feeling differently, and make a system that's more optimized for OO usage than for data usage.  Every single time, so far, I've come to regret that decision.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5194400562660165576/6219538518945177246/comments/default/234057174774172492'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5194400562660165576/6219538518945177246/comments/default/234057174774172492'/><link rel='alternate' type='text/html' href='http://blog.neo4j.org/2009/04/current-database-debate-and-graph.html?showComment=1239225743450#c234057174774172492' title=''/><author><name>Richard</name><uri>http://www.blogger.com/profile/05465142455763149084</uri><email>noreply@blogger.com</email></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.neo4j.org/2009/04/current-database-debate-and-graph.html' ref='tag:blogger.com,1999:blog-5194400562660165576.post-6219538518945177246' source='http://www.blogger.com/feeds/5194400562660165576/posts/default/6219538518945177246' type='text/html'/></entry><entry><id>tag:blogger.com,1999:blog-5194400562660165576.post-7290621277287108242</id><published>2009-04-06T16:19:04.553+02:00</published><updated>2009-04-06T16:19:04.553+02:00</updated><title type='text'>"People are questioning the RDBMS to an extent tha...</title><content type='html'>"People are questioning the RDBMS to an extent that we're not used to."&lt;BR/&gt;&lt;BR/&gt;I commented on that article &lt;A HREF="http://rtdata.wordpress.com/2009/03/02/not-another-article-about-the-doomed-relational-model/" REL="nofollow"&gt;on my blog&lt;/A&gt;, so I won't repeat my arguments here. After debating with a commenter, I'm inclined to think that this "new energy" is another round of inventors trying to attract attention to their new DBMS. I don't think there's anything wrong with that; after all, if they really do have a good idea it ought to get attention. I just think there's no reason we should be less skeptical of hype or FUD than we normally are.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5194400562660165576/6219538518945177246/comments/default/7290621277287108242'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5194400562660165576/6219538518945177246/comments/default/7290621277287108242'/><link rel='alternate' type='text/html' href='http://blog.neo4j.org/2009/04/current-database-debate-and-graph.html?showComment=1239027544553#c7290621277287108242' title=''/><author><name>Ben</name><uri>http://www.blogger.com/profile/06009702414432282984</uri><email>noreply@blogger.com</email></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.neo4j.org/2009/04/current-database-debate-and-graph.html' ref='tag:blogger.com,1999:blog-5194400562660165576.post-6219538518945177246' source='http://www.blogger.com/feeds/5194400562660165576/posts/default/6219538518945177246' type='text/html'/></entry><entry><id>tag:blogger.com,1999:blog-5194400562660165576.post-4350592402052819418</id><published>2009-04-06T15:29:25.722+02:00</published><updated>2009-04-06T15:29:25.722+02:00</updated><title type='text'>Ðis is ſtupid.  People condemn ðe relational model...</title><content type='html'>Ðis is ſtupid.  People condemn ðe relational model for SQL limitations, but SQL is not relational at all.  Much better ðan reinventing ðe wheel would be to implement &lt;A HREF="http://thethirdmanifesto/" REL="nofollow"&gt;truly relational databaſe management ſyſtems&lt;/A&gt;.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5194400562660165576/6219538518945177246/comments/default/4350592402052819418'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5194400562660165576/6219538518945177246/comments/default/4350592402052819418'/><link rel='alternate' type='text/html' href='http://blog.neo4j.org/2009/04/current-database-debate-and-graph.html?showComment=1239024565722#c4350592402052819418' title=''/><author><name>leandro</name><uri>http://leandro.myopenid.com/</uri><email>noreply@blogger.com</email></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.neo4j.org/2009/04/current-database-debate-and-graph.html' ref='tag:blogger.com,1999:blog-5194400562660165576.post-6219538518945177246' source='http://www.blogger.com/feeds/5194400562660165576/posts/default/6219538518945177246' type='text/html'/></entry><entry><id>tag:blogger.com,1999:blog-5194400562660165576.post-6211129311275238530</id><published>2009-04-06T14:01:38.306+02:00</published><updated>2009-04-06T14:01:38.306+02:00</updated><title type='text'>There is one novel and rather unusual approach whe...</title><content type='html'>There is one novel and rather unusual approach where partially ordered sets are used instead of graphs: &lt;A HREF="http://c2.com/cgi/wiki?ConceptOrientedModel" REL="nofollow"&gt;http://c2.com/cgi/wiki?ConceptOrientedModel&lt;/A&gt; What is attractive is that it is claimed to be joinless and integrated with programming (like LINQ?). Yet, it is not clear if it is something really new or simply a number of old techniques and patterns.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5194400562660165576/6219538518945177246/comments/default/6211129311275238530'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5194400562660165576/6219538518945177246/comments/default/6211129311275238530'/><link rel='alternate' type='text/html' href='http://blog.neo4j.org/2009/04/current-database-debate-and-graph.html?showComment=1239019298306#c6211129311275238530' title=''/><author><name>Anonymous</name><email>noreply@blogger.com</email></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.neo4j.org/2009/04/current-database-debate-and-graph.html' ref='tag:blogger.com,1999:blog-5194400562660165576.post-6219538518945177246' source='http://www.blogger.com/feeds/5194400562660165576/posts/default/6219538518945177246' type='text/html'/></entry></feed>