比较Azure SQL和Cosmos DB之间的读取性能的好方法是什么?

时间:2018-05-06 17:27:52

标签: azure nosql azure-sql-database azure-cosmosdb

尝试列出Azure中SQL和NoSQL选项之间的优缺点列表。 我已经意识到这两个选项之间的大多数关键概念差异,但是所有重要的性能问题都存在。我一直在读,Cosmos DB有很好的响应速度,但它经常重复,我非常怀疑。

我真的很想知道有些人如何比较SQL和NoSQL选项的性能(特别是读取操作的性能)。

修改 我希望存储非常大的csv。 每个都有一个时间戳列和最多1000个数据列。 我打算将每一列拆分成它自己的文档,并有一个摘要文档,其中包含对包含数据的每列的引用。

速度对于读取至关重要,而不是写入。

2 个答案:

答案 0 :(得分:0)

你不太可能在这里得到一个决定性的答案,因为它取决于很多细微的细微差别,而不应该成为问题。这就是建筑师和DBA的原因 - 因为没有普遍的银子弹。如果你想知道哪些更好,那么你应该选择你想要最佳优化的场景,设置性能目标,绘制红线并测试它。

一些注意事项:

  • 生成实际数据集。在csv文件计数,大小,结构和列值分布中,如果可能,请使用实际数据。
  • 需要从同一数据中心进行多次往返的测试场景 - 单个呼叫延迟可能很重要。
  • 通常,SQL适用于固定模式,并且SQL中的索引也很快。考虑哪些查询必须快速,您将如何建模DB中的1000列以满足您的查询需求?你能为你的查询编写覆盖索引吗?
  • 如果结构变化很大,CosmosDB会更容易。新列会随机出现吗?
  • CosmosDB具有自动/默认索引。对于维护/开发的观点来说,这可能很重要。
  • 考虑您的团队技能。如果性能至关重要,那么选择熟悉的思维模式和技术堆栈可以帮助您避免代价高昂的设计错误。特别是如果您的预算/截止日期不允许重写。

答案 1 :(得分:-2)

如果您需要存储文档,那么Cosmos DB将显示更好的性能。对于不需要存储文档的关系数据库,Azure SQL数据库将显示更好的性能。

不仅仅是性能,请不要忘记Azure SQL数据库为事务提供的ACID属性。您可以使用Cosmos DB来使其具有某些ACID属性,但这会损害Cosmos DB的性能。