I'm focusing on what's presently a dog project. Soon it will likely be starting mainstream production. My greatest barrier may be the data storage.

The majority of the information is "document" with specific indexes that will span across various kinds data. So just one collection with indexing works all right.

I understand MongoDB, Caché, and M will handle this superbly.

However, the information within the indexes is heavily hierarchical, i.e., graph. A particular example may be the hierarchy of physical location. To consider with this particular, think about the question "where's an item available?" Local, city, region, condition, national, or worldwide level? I understand Neo4J will handle this spend ease.

Data must also be queried geospacially. I understand SQL Server 2008 are designed for this. Neo4J certainly can't.

From the performance perspective, I built a prototype in SQL Server, where I needed to rig the hierarchy utilizing a parent-child table (it had been properly designed and indexed). For my test on roughly 1.two million products, it required 3 minutes for that first query to complete. The ultimate execution was relatively fast (1.2ms) when the indexes were hot. I understand Neo4J also heavily is dependent on hot indexes.

I've considered creating a RAM index engine using LINQ and taking advantage of something similar to MongoDB like a data store and query assistant. However, this increases the project dev time, and it is, obviously, no small venture.