我使用Azure表存储或SQL Azure作为我们的CQRS读取系统?
我们即将在内部实施我们的CQRS系统的Read部分,目的是大大提高我们的读取性能.目前,我们的读取是通过一个Web服务进行的,该服务针对规范化数据运行
Linq-to-SQL查询,涉及到SQL Azure数据库的某种程度的反序列化.
我们的数据简化结构如下: >用户 我想将其移动到非规范状态,以便当用户请求查看从EITHER读取的消息的源: Azure表存储中存在非规范化表示 > UserID作为PartitionKey Azure表存储中保存的归一化表示 >对话详细信息,消息和收件人的不同表 要么 在SQL Azure中持有的非规范化表示 > UserID&对话ID作为复合主键保存 我问的是,有没有人有任何经验在Table Storage或SQL Azure中实现非规范化的结构,你会选择哪一种?还是有更好的方法我错过了? 我的直觉说,表格存储中的数据的归一化(至少在一定程度上)将是要走的路;不过,我担心这样会降低性能提升,进行3次查询,以便获取用户的所有数据. 解决方法考虑Azure表的主要驱动力是大大提高读取性能,根据您在SQL Azure中存在的非规范化表示的最后一点,使用SQL Azure的方案“慢得多”.我个人认为这是非常令人惊讶的,原因很多,并会要求详细分析这一说法.我的默认位置是,在大多数情况下,SQL Azure会快得多.以下是我对这项索赔的怀疑的一些原因: > SQL Azure使用本机/高效TDS协议返回数据; Azure表使用JSON格式,这是更详细的 虽然您可以通过创建其他持有自定义索引的表来伪造Azure Tables中的索引,但您拥有维护该索引的职责,这将减缓您的操作,并且如果您不小心,可能会创建孤立方案. 最后但并非最不重要的是,当您尝试降低存储成本(比SQL Azure更便宜)时,使用Azure表通常是有意义的,当您需要比SQL Azure可以提供的更多存储空间(尽管现在可以使用联合中断单数据库最大存储限制).例如,如果您需要存储10亿个客户记录,则使用Azure Table可能有意义.但是,使用Azure表仅增加速度在我看来是相当可疑的. 如果我在你的鞋子,我会非常努力的质疑这个说法,并确保你有专家的SQL开发技能的工作人员,可以演示您正在完成SQL Server / SQL Azure固有的性能瓶颈,完全改变您的架构. 此外,我将定义您的绩效目标.您是否正在浏览100倍的访问时间?你考虑过缓存吗?您在数据库中正确使用索引吗? 我的2美分… (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |