背景
我正在为特定的行业利基建立一个多租户(大约100个付费客户)客户关系管理应用程序。 CRM将存储有关我的客户的潜在客户和客户(或更确切地说,联系人)的数据。将要存储的数据将是已知/标准数据(Id,名称,地址,电话等)和每个客户定义的可配置/动态数据的组合。换句话说,将有一个“表单构建器”允许我的客户添加有关每个联系人的更多数据。此外,他们需要能够从遗留系统导入标准和动态数据。关键要求:除了搜索“标准”数据外,客户还应该能够搜索“动态”数据以查找与查询的匹配,甚至可以创建包含/通过此动态数据进行汇总/分组的报告。
我更喜欢使用Microsoft Azure,因为我是C#开发人员,并且对用户界面有一定的了解,即使我在Azure提供的所有工具方面都没有广泛的经验。
问题
我希望使用reflection emit来创建表示具有标准和动态属性的联系人的动态类的实例,然后将这些实例序列化为JSON和Azure Blob。但是,我通过几个Stack Exchange线程读取了你无法搜索存储在Blob中的JSON数据(至少没有效率)。
问题
用于存储和搜索动态数据的正确Microsoft Azure技术是什么?是否存在允许我存储此“expando”数据的现有模式/方法,允许我搜索它,并允许我将其反序列化回POCO而没有太多麻烦?
或者,除了Microsoft Azure之外,C#友好的工作还有更好的工具吗?
答案 0 :(得分:0)
查看Azure将以JSON格式存储数据的文档数据库。
http://azure.microsoft.com/en-us/services/documentdb/
如果这不起作用,您可以在Linux VM上启动ElasticSearch或MongoDB,以将动态数据存储为JSON。
答案 1 :(得分:0)
发布此问题一年后,答案现在已经清楚了。正确的技术是DocumentDb。它可以与静态和动态类型一起使用,正如ScottGu的帖子所解释的那样: