团队放弃 DynamoDB 的原因主要有以下几点:
一、高写入吞吐量和低延迟需求下的成本问题- 高成本压力:当工作负载具有高写入密集型吞吐量且数据规模较大时,DynamoDB 的使用成本会显著增加。例如全球最大媒体流媒体服务之一的用户状态和自定义团队,其数据量约 10TB 且有增长空间,每秒需处理超过 170K 次写入和 78K 次读取,P99 延迟要求为 10 到 20 毫秒。该团队后端工程师称继续使用 DynamoDB 相当于“把钱扔进火里”,因其成本过高。
- 替代方案成本更低:该团队探索使用 ScyllaDB,设置六个 AWS i4i 4xlarge 节点的 ScyllaDB Cloud 测试集群,预加载 30 亿条记录并运行组合负载后,以零错误命中组合负载,P99 读取延迟为 9 毫秒,写入延迟小于 1 毫秒,且成本节约超过 50%。
二、性能无法满足业务需求- 性能瓶颈导致规模扩大成本增加:Digital Turbine 作为移动广告技术领域巨头,年收入达 5 亿美元,在其 DynamoDB 实施中面临性能和成本问题。该公司与 DynamoDB 的所有交互中 90%都是读取操作,随着规模扩大出现性能瓶颈,为达到所需性能需更大规模,这增加了成本。例如其平台架构副总裁 Joseph Shorter 表示,随着规模扩大成本有点高,性能瓶颈要求比想要的规模更大,进而增加了成本。
- 替代方案性能更优:Digital Turbine 迁移到 ScyllaDB 后立即取得改进,迁移不到一个冲刺就完成且结果超出预期。不仅节省了 20%的成本,而且发现“几乎没有使用 ScyllaDB 集群”,表明即使在没有成比例成本增加的情况下也有更大增长空间。
三、多区域支持和架构灵活性需求- 多区域支持需求:媒体流媒体服务在五个主要地理区域流行,需要多区域支持的数据库,DynamoDB 难以满足其成本和性能综合要求。而 ScyllaDB 的灵活一致性级别和复制因子有助于支持单独的 Auth 和 Edge 管道,例如 Auth 使用仲裁一致性,Edge 由于数据重复和高吞吐量使用“1”的一致性级别。
- 架构灵活性需求:一些团队希望保留特定架构分离,如 Auth 和 Edge 区域之间的分离,不寻找它们之间任何特定于数据库的复制。DynamoDB 在这方面难以满足需求,而 ScyllaDB 的性能导向设计(如基于 Seastar 框架构建,使用 C++,支持 NUMA,提供分片感知驱动程序)有助于减少维护时间和成本,增量压缩策略有助于显着减少写入放大,能更好地满足架构灵活性需求。
四、跨云平台需求- 无法在 AWS 之外运行:公司有时需要能够在其 AWS 以外的地方运行其应用程序,而 DynamoDB 是 AWS 生态系统的产品,在这方面存在局限性。例如 Digital Turbine 迁移的主要动机是在收购后标准化到 Google Cloud Platform,现有的 DynamoDB 解决方案无法满足其在 GCP 上运行的需求,只能选择迁移到其他数据库。