Here's my small contribution to this. First of all I wanted to say that I totally agree with Thad when he says: *"Folks just need better much more detailed Domain Model examples than what is available, that would help incredibly so, since many folks have a complex Domain Model to begin with..."* The matrix sample is cool but not very useful when you have to tackle with much more complex domains.
It's already been a while since the last time I looked for information about how to build your domain model with Neo4j but I just did a quick google search and found this: http://wiki.neo4j.org/content/Guidelines_for_Building_a_Neo4j_Application which guess is the 'official' documentation for it right? *(please correct me if I'm wrong)* * * There I'm missing a lot of information plus real-world examples in the sub-sections of Structuring your graph: - *Keep your graph connected --> **What do you exactly mean with this?* - *Use reference and subreference nodes to organize entry points* --> (In principle I don't even agree with this. Well, I do in theory and it actually is how I implemented things in the beginning. However in my case, where I'm dealing with huge amounts of relationships, reference and subreference nodes become supernodes which in turn are a very problematic bottleneck in most traversals;* (this is due to the lack of a natively implemented system for discerning between relationships with different types, I opened this issue about this here: https://github.com/neo4j/community/issues/19 ).*While this is solved, I'm always tempted/forced to start using indexes instead of relationships, but then I wonder how different things are in the end compared to other not graph-based DB systems !?? - Prefer relationships to properties when your whiteboard tells you to --> I agree with this but still miss at least a short explanation of what this means. - *Use relationships types appropiately -->* I know maybe it's not the better place to say this but I never understood why there're mandatory relationships types but not node types !?* (I'm in favor of mandatory node types by the way)* - * Use an indexing service to find nodes by property values * * * Summing up I'd like to emphasize the lack of information/documentation in general for cases which are not the typical small DB whose domain model can be in principle easily designed with just a bit of common sense. Nonetheless this lack of info can be easily covered by the great support you guys provide here; *(still I think it's too bad having this (IMHO) big gap between the great quality of support you provide in this user-list and that of the 'static' documentation present in the wiki.)* With all this having been said, I still find Neo4j a very promising DB in the near future and I'm really happy to use it in a lot of different projects/use-cases; however I think the way for it to get better each day is not keeping saying how cool it is but actually pointing at the weak spots it may have. Cheers, Pablo On Fri, Oct 14, 2011 at 4:14 PM, Thad Guidry <[email protected]> wrote: > I would suggest breaking down his statement further and fill in the blanks > to gain even better insight into his conjecture. > > "it‘s basically a bunch of nodes where you just blob your attributes.‘ > Worse than that, to wrap objects around it, you have to have them > explicitly > incorporate their node class, which is ugly, smelly, violates every law of > separation of concerns and logical vs. physical models." > > > "it's" - Neo4j > > "to wrap objects around IT" - what is the IT that he is referring to ? > > "you have to have THEM explicitly incorporate THEIR node class" - what is > THEM / THEIR really mean for Neo4j here ? > > "law of separation of concerns" - what and where are we JOINING that should > be SEPARATING , is it only the Domain objects ? > > > From outside looking in, I have seen others not complete their Domain Model > as needed with Neo4j, and also make it entirely TOO SIMPLE. Why ? Because > they might be new to graph databases, or their Domain Model really IS NOT > complete yet and they need help from others to assist with putting together > an elegant Domain Model to begin with. Being able to easily wire up a > Domain Model is the primary reason they were attracted to graph databases > in > the first place !... to build it out without resorting to defining a rigid > schema (a SQL table mantra). But many need help in contorting their Domain > Model over time. To me, Neo4j is already wide open enough to handle that > contortion and the beauty of Neo4j & graph databases in general. > > Folks just need better much more detailed Domain Model examples than what > is > available, that would help incredibly so, since many folks have a complex > Domain Model to begin with (they just do not realize it yet) and they are > hoping Neo4j will help them quickly wire it up, stretch it out when needed, > and analyze the hell out of it when the time comes, and stretch it out even > more as they continue to fill it up and expand their Domain Model. A > bottom > up approach (and I mean really BOTTOM) is the best practice, but it does > take thought and research in finding where that generic bottom is at. A > "Friend" - what is a Friend, what attributes does a Friend have ? Which > ones > do I care about now and can worry about later ? A "Stock Issuing Company", > do I need to think of my relationships first for those, or should I start > with attributes ? Will those attributes be shared with others ? Do I care > about it now at this early beginning of my Domain Model, or can I wait on > this ? Should I start with attributes (properties) always, and leave > relationships alone until the very end, when I build a Domain Model ? (the > answer to that last question is YES, because Neo4j actually DOES allow you > to) > > > He attacks our pattern of building domain models with Neo4j, calling it > > > "ugly", "smelly" and "in violation of every law of separation of > concerns > > > and logical vs. physical models". Is he right? My feeling is that he is > > > brain washed with too many so called "best practices", but Neo4j has > been > > my > > > main model for a long time now, my perspective is likely skewed. I'd > like > > to > > > hear your thoughts. > > > > Your main model IS NOT Neo4j. That is your main database that "holds" your > Domain Model. And if Neo4j is not really doing this from top to bottom, > then I would agree with Richard that the Neo4j infrastructure is not in the > best place right now and might need more work. > > -- > -Thad > http://www.freebase.com/view/en/thad_guidry > _______________________________________________ > Neo4j mailing list > [email protected] > https://lists.neo4j.org/mailman/listinfo/user > -- Pablo Pareja Tobes My site http://about.me/pablopareja LinkedIn http://www.linkedin.com/in/pabloparejatobes Twitter http://www.twitter.com/pablopareja Creator of Bio4j --> http://www.bio4j.com http://www.ohnosequences.com _______________________________________________ Neo4j mailing list [email protected] https://lists.neo4j.org/mailman/listinfo/user

