azure - 比较 Azure SQL 和 Cosmos DB 之间的读取性能的好方法是什么?
问题描述
尝试列出 Azure 中 SQL 和 NoSQL 选项之间的优缺点。我知道这两个选项之间的大部分关键概念差异,但是性能问题是最重要的。我一直在阅读 Cosmos DB 的响应速度非常快,但它经常重复,我对此表示怀疑。
我真的很想知道有些人如何比较 SQL 和 NoSQL 选项的性能(特别是读取操作的性能)。
编辑: 我正在寻找存储非常大的 csvs。每个都有一个时间戳列和多达 1000 个数据列。我打算将每一列拆分为它自己的文档,并有一个摘要文档,其中包含对包含数据的每一列的引用。
速度对读取至关重要,而不是写入。
解决方案
你不太可能在这里得到一个决定性的答案,因为它取决于很多细微的差别,这些细微差别无法做到,也不应该出现在 SO 问题中。这就是为什么会有架构师和 DBA 的原因——因为没有万能的灵丹妙药。如果你想知道什么效果更好,那么你应该选择你想要最优化的确切场景,设定性能目标,画红线并进行测试。
一些考虑:
- 生成真实的数据集。在 csv 文件计数、大小、结构和列值分布中,如果可能,请使用真实数据。
- 测试需要从同一个数据中心进行多次往返的场景 - 单个呼叫延迟可能很重要。
- 通常,SQL 适用于固定模式,SQL 中的覆盖索引也很快。考虑哪些查询必须快速,您将如何对 DB 中的 1000 列进行建模以满足您的查询需求?您可以为查询编写覆盖索引吗?
- 如果结构变化很大,则 CosmosDB 会更容易。是否会随机弹出新列?
- CosmosDB 具有自动/默认索引。从维护/开发的角度来看,这可能很重要。
- 考虑你的团队技能。如果性能至关重要,那么选择熟悉的思维方式和技术堆栈可以帮助您避免代价高昂的设计错误。特别是如果您的预算/截止日期不允许重写。
推荐阅读
- java - 如何防止 Crashlytics 将 Java 库中的所有异常聚集在一个问题中
- java - 如何在 JPGraph 中放置不可编辑的元素
- image - 使用空占位符将图像插入幻灯片 (PowerPoint)
- java - 从另一个组件更新组件的状态
- vuejs2 - Nuxt 尝试获取窗口大小时无法在“节点”上执行“appendChild”
- python - 在 python2 中然后在 python3 中计算大数时出现奇怪的结果
- java - 在 Empty EditText 处设置 Span(尤其是 AbsoluteSizeSpan)
- javascript - 在 twilio 视频聊天中显示禁用音频
- javascript - 将消息从 iframe 发送到父级但不同的机器
- css - 如果需要,如何截断最后一个元素