A look at the top reasons why teams decide to leave DynamoDB: throttling, latency, item size limits, and limited flexibility…not to mention costs 完整声明:我喜欢DynamoDB. 它已经在规模上被证明,并且是许多行业领导者多年来一直使用的后端来支持业务关键工作负载。 完整声明:我喜欢DynamoDB. 它已经在规模上被证明,并且是许多行业领导者多年来一直使用的后端来支持业务关键工作负载。 但是(希望!),有时候你的组织规模相当大,随着巨大的增长,成本成为大多数公司自然的担忧,而DynamoDB经常被引用为由于其缺口的主要原因之一。 服务模式。 按操作支付 你可能在想:哦,这是另一个试图说服我DynamoDB成本太高的帖子,我应该切换到你的数据库,你会声称它更便宜。 虽然成本在选择数据库解决方案时绝对是重要的考虑因素(而ScyllaDB确实提供相当令人印象深刻的价格性能与DynamoDB相比),但这并不总是最关键的考虑。 如果成本对你来说是至关重要的考虑,那么你可以审查的其他资源有很多。 ScyllaDB vs. DynamoDB Benchmark:在工作负载上比较价格绩效 亚历克斯·德布里关于如何考虑DynamoDB成本的文章 托比亚斯·施密特的非常全面的亚马逊DynamoDB价格解释 但是,让我们切换叙述,并讨论你在决定是否离开DynamoDB时应该考虑的其他方面。 HTTPS://WW.SCYLLADB.COMDynamoDB成本优化硕士课程本硕士课程将教你关于DynamoDB成本优化和其他AWS替代方案的策略,以满足您的技术需求。 HTTPS://WW.SCYLLADB.COMDynamoDB成本优化硕士课程本硕士课程将教你关于DynamoDB成本优化和其他AWS替代方案的策略,以满足您的技术需求。 HTTPS://WW.SCYLLADB.COMDynamoDB成本优化硕士课程本硕士课程将教你关于DynamoDB成本优化和其他AWS替代方案的策略,以满足您的技术需求。 HTTPS://WWW.CYLLADB.COM 的位置 DynamoDB 成本优化硕士课程 这个硕士课程将教你 DynamoDB 成本优化和其他 AWS 替代方案的策略,以满足您的技术需求。 HTTPS://WWW.CYLLADB.COM 的位置 DynamoDB 成本优化硕士课程 这个硕士课程将教你 DynamoDB 成本优化和其他 AWS 替代方案的策略,以满足您的技术需求。 DynamoDB 打击 在任何情况下,打破是没有乐趣的。 如果你看过它,你可能恨过它,并且学会了与它相处,有些人甚至可能声称他们在彻底理解它后爱它。 ProvisionedThroughputExceededException 您可以通过多种方式成为DynamoDB的受害者,事实上,这种情况经常发生,AWS甚至有 这里的一个建议是“切换到按需模式”,然后实际上讨论均匀分布的访问模式。 专门解决问题页面 DynamoDB 的主要问题是,它会大大损害延迟。具有 Zipfian 分布的工作负载容易受到影响......并且在最近的基准中获得的结果并不漂亮: 在这项基准期间,很明显,转移可能会导致受影响的分区在最长一段时间内无法访问。 这大大增加了您的P99尾巴延迟。 2.5 seconds 虽然大多数数据库都有内置的转移机制是真的,但DynamoDB转移只是过于侵略性的,如果您的应用程序经常访问特定一组项目,则不太可能能够进一步扩展,因为它会跨越DynamoDB分区或表限制。 直觉可能会说:“好吧,如果我们打破了DynamoDB的限制,那么让我们把一个缓存放在前面!”好吧,但最终也会这样。 事实上,在DynamoDB Accelerator的准确标准中找到硬数是特别困难的,这似乎主要针对CPU利用(而不是使用CPU)。 )。 throttle 你下载 负荷丢失的最佳标准 DynamoDB 延迟 您可能认为上面显示的 Zipfian 发行版针对的是 DynamoDB 的阿基利斯尾巴,并且 AWS 解决方案更适合遵循统一类型的发行版的工作负载。 即使在DynamoDB的甜点中,P99延迟在各种场景中比ScyllaDB要高得多。 当然,你可能能够达到比这里介绍的更低的DynamoDB延迟,但当需要提供更高的输出时,DynamoDB会缩短,导致延迟最终开始下降。 避免这种峰值的一种方法是使用DynamoDB加速器(或任何其他缓存解决方案,实际上)来提高性能,正如我所承诺的那样,我不会在这里讨论成本,而是指出DynamoDB承诺的单位毫秒延迟在实践中更难实现。 要了解更多关于为什么在数据库前放置缓存通常是一个坏主意,您可能想观看这段视频。 . 用 ScyllaDB 更换您的缓存 DynamoDB 元素大小限制 每个数据库都有一个项目大小限制,包括DynamoDB。然而,400KB限制最终可能对你来说太限制了。 : 关于DynamoDB限制的博客 DynamoDB 向您展示了如何在 OLTP 数据库中模拟您的数据。在线交易处理(或 OLTP)系统的特点是对数据库进行大量小操作。 (...)对于这些操作,您想要快速有效地过滤特定领域以找到所需的信息,例如用户名或 Tweet ID。 DynamoDB 向您展示了如何在 OLTP 数据库中模拟您的数据。在线交易处理(或 OLTP)系统的特点是对数据库进行大量小操作。 (...)对于这些操作,您想要快速有效地过滤特定领域以找到所需的信息,例如用户名或 Tweet ID。 虽然事实是,较小的负载(或项目)通常会提供更好的延迟,但强加硬限制可能不是最好的想法。 如果你无法在DynamoDB中存储此类项目,你会做什么?你可能会想出策略,例如压缩使用量相关部分或将它们存储在其他媒体中,如AWS S3。 在ScyllaDB,我们采取了不同的方法:单一 默认情况下可以大到 16 MB (这是可配置的)。我们认为您应该能够决定什么最适合您和您的应用程序。 mutation 谈论自由:让我们谈谈... DynamoDB的有限F 读性 回归 回归 这个是相当容易的。 DynamoDB 完美地集成到 AWS 生态系统中,但这正是好处的尽头。一旦您参与多云策略或决定转向另一个云供应商,或者可能回到本地(不要让我开始使用 AWS Outposts!),您将不可避免地需要找到另一个工作负载的地方。 当然,你不能预测未来,但你可以避免未来的问题,这就是区分优秀的工程师和优秀的工程师:你的解决方案是否准备好应对组织日益增长的需求。 毕竟,你不想发现自己需要学习新技术,更改应用程序,在新的DBMS中进行负载测试,迁移数据,潜在地评估多个供应商... 相当频繁,这可能成为一个多年的项目,取决于你的组织规模和涉及的工作负载的数量。 DynamoDB 工作负载自然适合 ScyllaDB. 更常见的是,您可以简单地遵循您已经在 DynamoDB 中使用的相同数据建模,并在 ScyllaDB 上使用。 允许您无缝迁移,如果您想继续使用相同的API与您的数据库进行通信,因此需要更少的代码更改。 ScyllaDB Alternator - 一个开放源代码的DynamoDB兼容的API 最后的评论 它涵盖了一些有趣的现实生活故事,其中一些触及了我们在这里涵盖的点。 人們,不要讓我在DynamoDB上開始... 尽管如此,这篇文章的第一句话仍然是真的:我喜欢DynamoDB,这是一个很好的合适和经济的解决方案,当您的公司或使用案例具有较低的输出要求或不受一些意想不到的延迟峰的影响。 随着您的成长,数据建模和确保您不超越DynamoDB的硬极限可能会变得特别具有挑战性,此外,您将被锁定,如果组织的方向改变,最终可能需要大量的努力和规划。 在选择数据库时,最终要选择合适的工具来完成这个任务。ScyllaDB绝不是每个DynamoDB使用案例的替代品,但当团队需要一个NoSQL数据库以实现高输出和高输出时。 低延迟,ScyllaDB始终是正确的选择。 predictable