【问题标题】:What would be a good way to compare read performance between Azure SQL and Cosmos DB?比较 Azure SQL 和 Cosmos DB 之间的读取性能的好方法是什么?
【发布时间】:2018-10-16 13:46:31
【问题描述】:

尝试列出 Azure 中 SQL 和 NoSQL 选项之间的优缺点。 我知道这两个选项之间的大多数关键概念差异,但是性能问题是最重要的。我一直在阅读 Cosmos DB 的响应速度非常快,但它经常重复,我对此表示怀疑。

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

编辑: 我正在寻找存储非常大的csvs。 每个都有一个时间戳列和多达 1000 个数据列。 我打算将每一列拆分为它自己的文档,并有一个摘要文档,其中包含对包含数据的每一列的引用。

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

【问题讨论】:

  • 这真的归结为您想要存储和检索的内容。想详细说明一下用例吗?

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


【解决方案1】:

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

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

【讨论】:

  • 如果不查看具体的数据建模和查询用例,真的无法得出任何性能结论。
【解决方案2】:

您不太可能在这里得到决定性的答案,因为这取决于很多细微的细微差别,这些细微差别无法做到,也不应该出现在 SO 问题中。这就是为什么会有架构师和 DBA 的原因——因为没有万能的灵丹妙药。如果您想知道什么效果更好,那么您应该选择最需要优化的确切场景,设定性能目标,画红线并进行测试。

一些注意事项:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-01-18
    • 2018-08-10
    • 2014-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-20
    相关资源
    最近更新 更多