In my previous post, I tried to discuss how the traditional RDBMS, while being very good at storing and tracking certain types of data and transactions, fails to provide value for others, and how graph databases are coming to the forefront of modern architectures for understanding the connected nature of stuff. Kind of funny, really, since whole books have already been written about the topic, and others have blogged about it (here), and written papers about it (here), but I guess I am just publishing my own process of working through it for myself…. 🙂
Therefore, having addressed the reasoning behind the ‘raison d’etre’ for graphy goodness, my thoughts turn toward use case. Clearly, just the fact that a wicked cool new db technology is starting to gain popularity is not enough, by itself, to displace traditional RDBMS… Graph theory and implementation will have a hard time completely replacing the prototypical use cases like a customer-order tracking system. There are plenty of discussions out there already on what NOSql databases are good for…
- 35 Use Cases for Choosing Your Next NoSQL Database
- Is NoSQL for Me…
- The business case for NoSQL
- Five Reasons to Use NoSQL
- Use Cases for Cloud Databases
BTW – you can visit http://nosql-database.org/ for an exhaustive list of NoSQL systems…
Neo4J has also listed their own use cases here: http://www.neotechnology.com/industries-and-use-cases/.
To my own mind, however, I believe that graph theory is still undervalued and as of yet not well understood… to be fair, I am still learning about it myself. Nonetheless, when I read that a graph database is only good or something like, “Rock complicated graph problems. Fast” on the High Scalability blog site above, or the handful of use cases on the Neo4J site, I am surprised that its impact on social graphing is not more self evident. Personally, I have found that “graph problems” exist everywhere, yet up until now I simply haven’t had the tools or understanding to capture them in a meaningful way.
We, as humans, understand this inherently – we are frequently confronted with the implications of our ‘network’ – the intersection of our business with our social interactions. I personally believe there is an application for graph theory throughout our lives.
Several years ago, we developed a leak under our hot water heater. Water was leaking from all around our house, and since our house sits on a slab, with no crawl space or basement, we had no way to easily detect where the leak was. Fortunately we found a very clever plumber, who by selectively turning specific faucets in the house on and off was finally able to get a clear sound of the leak – we could literally hear it dripping from the pipes. Through his clever work , we were able to determine – through sound – that the leak was probably within a few feet of the water heater, rather than under the kitchen, near the sink or someplace else. This localized where we had to jack hammer through the slab, and prevented thousands of dollars worth of damage. Sure enough, the leak was in the hot water line, no more than a foot away from the water heater.
What’s my point? Well, the next year, when we had some elective plumbing work to accomplish, we wanted to use the same plumber – but he had moved on. It took a while for us to track him down and discover which outfit he had joined up with. We had to force the issue with the previous plumbing company, ask a bunch of friends, call a few plumbers until we ran across a plumber from another company that knew the guy, and then we were able to track him down. There’s a graph problem in there somewhere…
I work for EMC as a Presales Systems Engineer, and I interact with customers every day. My job is all about assembling infrastructure solutions to solve business problems for our customers, and I happen to be focused on virtualization solutions. It is frequently necessary – desirable, in fact – to coordinate my efforts with my VMware or Cisco counterparts. However, the sales and support models for the three companies – EMC, VMware, and Cisco – are significantly different. I work in the Enterprise Mid Atlantic South division of EMC, but any given customer may be a “Strategic” customer for VMware, while being a “Commercial Select” customer for Cisco ( don’t ask – account designations per vendor can be somewhat arbitrary). If I want to work with the VMware SE on a particular account, certainly it would be easiest to just ask the customer who their VMware SE is. However, there are times you might want to work with them before approaching the customer, and for that reason I might need to navigate the VMware presales organization to figure out who the correct SE is. Today, I maintain my own business network in my head – I already know the VMware and Cisco SE’s in the area, and I can usually reach out to them directly. But what if there was a kind of Facebook for customer / vendor relationships? LinkedIn doesn’t quite accomplish this – it allows you to designate if you have worked with someone at another company, but not necessarily the nature of that relationship.
Those are just two examples from my own life… Consider the following possible uses cases as well:
- Org charts – I have worked with many organizations that have both functional and hierarchical requirements for their organization – employees are “matrixed” to multiple business units. A graph makes this extraordinarily easy to represent and navigate.
- CRM – if you work for a sales organization, you are familiar with the problem of the “business” structure of a customer versus their “political” structure… that is to say – who are the political and influential people at a customer, and that doesn’t always map cleanly to an org chart. Employees way down on the org chart frequently carry influence, this manager might have the ‘juice’ to get a decision made where another might not, etc. Again, a graph makes this easy to capture and represent, while many traditional CRM packages fail to do this seamlessly.
- Career management – what happens when you leave a role? You want to work with others that you know will help make you successful… My gut tells me there’s a graph problem there, too.
- Conflict Resolution – Consider the problem of Rock-Paper-Scissors (or Rock-Paper-Scissors-Lizard-Spock) – modeling conflict scenarios and possible outcomes… I am thinking of a conflict modeling engine to help navigate problem resolution…. I would think there would be tremendous geo-political application.
As humans, we deal with graph problems daily – we are social creatures, and networks permeate every aspect of our lives. I am sure I don’t (yet) have the capacity to anticipate every way in which graph theory might impact us, but I am sure it is going to. Does this mean we need a graph database for everything in our lives? Of course not, but for something so pervasive, I am guessing new and interesting ways to use graph theory are going to be popping out of the woodwork for years to come…
What do you think? What are some of the interesting ways you see graphs being used?