什么是正确的Microsoft Azure技术,用于存储和搜索"动态"数据?

时间:2014-04-02 19:14:00

标签: json azure-storage-blobs document-database

背景

我正在为特定的行业利基建立一个多租户(大约100个付费客户)客户关系管理应用程序。 CRM将存储有关我的客户的潜在客户和客户(或更确切地说,联系人)的数据。将要存储的数据将是已知/标准数据(Id,名称,地址,电话等)和每个客户定义的可配置/动态数据的组合。换句话说,将有一个“表单构建器”允许我的客户添加有关每个联系人的更多数据。此外,他们需要能够从遗留系统导入标准和动态数据。关键要求:除了搜索“标准”数据外,客户还应该能够搜索“动态”数据以查找与查询的匹配,甚至可以创建包含/通过此动态数据进行汇总/分组的报告。

我更喜欢使用Microsoft Azure,因为我是C#开发人员,并且对用户界面有一定的了解,即使我在Azure提供的所有工具方面都没有广泛的经验。

问题

我希望使用reflection emit来创建表示具有标准和动态属性的联系人的动态类的实例,然后将这些实例序列化为JSON和Azure Blob。但是,我通过几个Stack Exchange线程读取了你无法搜索存储在Blob中的JSON数据(至少没有效率)。

问题

用于存储和搜索动态数据的正确Microsoft Azure技术是什么?是否存在允许我存储此“expando”数据的现有模式/方法,允许我搜索它,并允许我将其反序列化回POCO而没有太多麻烦?

或者,除了Microsoft Azure之外,C#友好的工作还有更好的工具吗?

2 个答案:

答案 0 :(得分:0)

查看Azure将以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

如果这不起作用,您可以在Linux VM上启动ElasticSearch或MongoDB,以将动态数据存储为JSON。

答案 1 :(得分:0)

发布此问题一年后,答案现在已经清楚了。正确的技术是DocumentDb。它可以与静态和动态类型一起使用,正如ScottGu的帖子所解释的那样:

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