Question

Background

I am building a multi-tenant (approx. 100 paying clients) Customer Relationship Management application for a specific industry niche. The CRM will store data about my clients' prospects and customers (or rather, contacts). The data that will be stored will be a combination of known / standard data (Id, Name, Address, Phone, etc.) and configurable / dynamic data defined by each client. In other words, there will be a "form builder" allowing my clients to add more data about each contact. Furthermore, they will need to be able to import both the standard and dynamic data from legacy systems. The key requirement: in addition to searching through the "standard" data, clients should be able to search through "dynamic" data to find matches to queries, or even create reports that include / summed / grouped by this dynamic data.

I would prefer to use Microsoft Azure since I am a C# developer and have some familiarity with the user interface, even if I'm not widely experience in all the tools Azure has to offer.

Problem

My hope was to use reflection emit to create instances of dynamic classes representing contacts with both standard and dynamic properties, then serialize those instances into JSON and into Azure Blobs. However, I've read via several Stack Exchange threads that you cannot search through JSON data stored in a Blob (not efficiently, at least).

Question

What is the correct Microsoft Azure technology for storing and searching through dynamic data? Is there an existing pattern / approach that would allow me to store this "expando" data, allow me to search through it, and allow me to deserialize it back out to POCO's without a lot of hassle?

Alternatively, is there a better tool for the job other than Microsoft Azure that is C# friendly?

Was it helpful?

Solution 2

One year after posting this question the answer is now clear. The correct technology is DocumentDb. It can work with static and dynamic types as this ScottGu post explains:

http://weblogs.asp.net/scottgu/azure-new-documentdb-nosql-service-new-search-service-new-sql-alwayson-vm-template-and-more

OTHER TIPS

Check out Azure's document database that will store data in JSON.

http://azure.microsoft.com/en-us/services/documentdb/

http://weblogs.asp.net/scottgu/azure-new-documentdb-nosql-service-new-search-service-new-sql-alwayson-vm-template-and-more

If that doesn't work, you can fire up ElasticSearch or MongoDB on a Linux VM to store dynamic data as JSON.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top