The graph modeling paradigm suits our data set well, where there may be orders of magnitude more connections between data points than data points themselves. The Cypher query language is declarative, expressive and easy to learn the basics. Graph database design also allows for interesting optimization patterns that are more difficult to visualize and model in relational or key/value databases.
Improvements to My Organization
We are not transitioning from another database system, so our system will be based on graph database design from the start.
Room for Improvement
There are things I found unintuitive or difficult to understand, however I can't say this is a deficiency in the product and likely more a function of my relatively low experience. I believe the best performance can be gained by building your logic in Java and interacting directly with their Java API, however this may be less of an issue with the stored procedure support coming in version 3.0.
Use of Solution
I've used it for four months.
I hear good things about the scalability when using Neo4j Enterprise Edition and its High Availability cluster support.
Customer Service and Technical Support
They reached out to me, set up a phone meeting to help answer any questions, and along with their partner GraphAware offered a variety of training and prototyping assistance services.
It's pretty straightforward. You can either run the server using the minimal graphical UI, or you can run it directly in various configurations from the command line. There are two configuration files you can tweak to achieve the best memory and disk usage for your needs, as well as to configure any extensions.
In-house implementation. We may use paid vendor services down the road to help with optimization and other advanced usage needs.
Pricing, Setup Cost and Licensing
We haven't yet transitioned to their paid Enterprise Edition, but it looks like you need to contact them to establish pricing.
Other Solutions Considered
We considered Postgres, Mongo and Arongo, but decided that the graph modeling approach was far and away the best match for our data sets.
Strongly consider graph solutions if you have a high ratio of relationships to data points, or if you need to run optimized queries against enormous datasets. Because you can build your own indexing trees, you can really hand-optimize if necessary. There are also out-of-the-box solutions like GraphAware's TimeTree extension that can really limit the number of objects that have to be consulted during a query.