At this point I don't want to say too much about what were are doing until were are further along.
The startup is I.T. related and requires me/more developers to come up with a good solid piece of software backed up with a well designed database.
As I'm more primarily focused in the Windows dev space, my first prototype took about 8 weeks on evenings and weekends to write in C# and WPF. For the time I spent on it I reasonably pleased with the results, which included graph based UI data, multi-lingual and basic analytics of the data entered.
The code base ran to almost 15,000 lines of code with a good portion of that generated from a code generator I wrote a few years back.
We designed the database in Sql Server and came up with a decent design that held up quite well including history.
The problem was I was never happy with my choice of Sql Server and not convinced on using a relational model. The focus of the application is more node/edge based and the more I looked at RDBMS based solutions, then less happy I was.
I hunted around for 4 or 5 weeks, looking at Hadoop, Cassandra, MemSql and various others. I came close to giving Cassandra a go a few times before coming across something that was just calling out to me to be used. That was when I discovered Neo4j.
So, what is Neo4j?
Basically it's a graph based database, not only for representing the data, but also for storing. It's been around for the past 6 years and I have to say blows relational databases out of the water.You come to live with the fact that relational databases have to have tables to hold additional foreign key column or table to hold many-to-many relationships. But when you think about it, that has nothing to do with the data and so pollutes the design with structural data.
If you were to model a design in UML it would not show these additional structural columns and tables.
Working with Neo4j you immediately see the power in it's representation of data and the fact that models are virtually identical to the design created in a graph database.
Other benefits (according to documentation) are that it is quick, and the performance won't degrade as you navigate nested data. It also comes with a REST interface, an awesome interactive query tool built into the NEO4J Browser that puts Sql Server Management Studio to shame.
After too many years in the RDBMS space, it's a refreshing change to be working on a greenfield system with database technology that was made for it. I still only know the basics of Cypher, there custom query language but it's already proved to be far more concise than SQL.
Love it!! Now if I'd only held off building that prototoype...
0 comments:
Post a Comment