AWS Redshift应该用于在线查询吗?

时间:2017-04-03 04:08:53

标签: mysql amazon-web-services amazon-redshift rds

我有一个用例,其中一个相当大(超过1 TB)的SQL数据库必须移动到云端,我正在考虑使用Redshift而不是某些RDS解决方案,因为它有点便宜而且我处理得很好我的查询的延迟不到10秒。该应用程序将很少查询数据库 - 每天大约100次。

与RDS相比,与Redshift相比,是否可以节省成本?

更新:系统每天会更新一次或两次数据库。

3 个答案:

答案 0 :(得分:1)

听起来好像基于您的用例Redshift非常适合。与OLTP数据库相比,Redshift更像是OLAP。在非数据库语言中,它更适用于实时插入或读取(实时为亚秒级)。 Redshift的并发性也比RDS低得多,但这听起来并不像是对你的强烈需求。

如果您需要,RDS会有意义:

  • 实时单记录插入
  • 亚秒级查询
  • 每秒执行数千个查询。

因为您可以处理超过1秒的查询时间,但是在10以下且查询工作量不会太大,Redshift应该可以正常工作。

答案 1 :(得分:0)

关于什么对您的业务最有利的争论将始终存在,并且考虑到所有成本和性能权衡,您将更好地做出最佳决策,但凭借我的所有经验和您提供的信息,我可以我们充满信心地让您了解以下行动将产生的影响:

  
      
  1. 谁会写信给Redshift表?
  2.   

如果数据不是实时数据,您可以继续使用Redshift。但是,如果您需要实时数据或其他指标依赖于它,例如显示余额或忠诚度信用点,则Redshift不是理想的选择。理想情况下,在CPU使用率最低时加载数据。

  
      
  1. Redshift中的写操作速度非常慢
  2.   

作为柱状,预计批量写入将非常缓慢。因此,如果插入数据,请确保是否在午夜发生,以便在ETL任务中不占用CPU。

  
      
  1. 将查询哪个数据集?
  2.   

如果数据集是OLAP,那么Redshift是理想的选择。如果数据是OLTP,那么切换到没有性能优势,尽管可能会节省一些成本。当您的业务增长时,这将是一个痛点

我们需要了解的是,Amazon Redshift与任何基于行的数据仓库都不相似。它用于分析目的。如果您正在生成批量数据(一天数百万)并且您需要查询它,那么它就是您的工具。公司使用Amazon Redshift进行同类群组,用户行为和趋势分析,因为这涉及查询庞大的数据集。柱状数据库用于查询数百万条记录,因为柱状方向已经过优化,可用于查询庞大的数据集。

如果您正在存储OLTP数据集,例如用户创建,下订单,订单属性,偏好,余额等等,那么亚马逊Redshift不适合您。写入速度很慢,您在查询这样一个小型OLTP数据集时也不会看到任何性能提升。

此外,如果您的体系结构具有Master - Slave配置,则您不能承受任何延迟,并且使用RS将导致数据迁移到从设备的延迟,因为它未针对写入操作进行优化。 Slave有望成为master的副本,包含几乎实时的数据,并且使用RS进行此架构将导致无用的延迟。

然而,如果您捕获用户行为,点击和手势,移动角度,他/她的访问时长...任何批量生成数据的内容,您将查询庞大的数据集以进行分析,然后Redshift就是工具为了你。这些数据点不是实时要求的,可以每天加载一次或两次。

我建议只有在你看到性能有所改善的情况下才能使用Redshift。如果您仅为节省成本的措施进行切换,并且将来业务升级,那么再次迁移到适当的架构将是一项艰巨的任务。

答案 2 :(得分:0)

AWS已明确定位Redshift:它对数据库仓库来说意味着什么。

简而言之,AWS期望管理员:

  • 根据数据库仓库需要按摩数据库
  • 了解如何对数据库进行分片/分区
  • 了解如何优化数据库,例如如果需要,则非规范化(即将表格从OLTP(OnLine事务处理)转换或迁移到友好的OLAP(OnLine Analytical processing)友好。
  • 迁移到Redshift时可能需要更多磁盘空间,因为它将为内部优化创建其他索引。

简而言之,转向可能或可能不是会给您带来任何成本和/或性能优势。这不是魔术子弹。