Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon redshift 针对SaaS应用程序的Amazon红移_Amazon Redshift - Fatal编程技术网

Amazon redshift 针对SaaS应用程序的Amazon红移

Amazon redshift 针对SaaS应用程序的Amazon红移,amazon-redshift,Amazon Redshift,我目前正在测试一个SaaS近实时分析应用程序的红移。 在100M行数据集上,查询性能良好 但是,当更多用户同时使用应用程序时,每个集群15个查询的并发限制将成为一个问题 我无法缓存所有聚合结果,因为我们授权对每个查询自定义筛选器(即席查询) 该应用程序的要求如下: 查询必须在10秒内返回结果 在100多列上使用筛选器的即席查询 在应用程序上同时连接1到50个客户端 数据集以每天1000万行的速度增长 典型的查询是带有聚合函数计数的SELECT,带有1或2个联接的平均值 红移对于这个用例不正确

我目前正在测试一个SaaS近实时分析应用程序的红移。 在100M行数据集上,查询性能良好

但是,当更多用户同时使用应用程序时,每个集群15个查询的并发限制将成为一个问题

我无法缓存所有聚合结果,因为我们授权对每个查询自定义筛选器(即席查询)

该应用程序的要求如下:

  • 查询必须在10秒内返回结果
  • 在100多列上使用筛选器的即席查询
  • 在应用程序上同时连接1到50个客户端
  • 数据集以每天1000万行的速度增长
  • 典型的查询是带有聚合函数计数的SELECT,带有1或2个联接的平均值

红移对于这个用例不正确吗?对于这些要求,你会考虑哪些其他的技术?

< P>这个问题也在红移论坛上发表。p> 我正在为通过谷歌找到这个问题的其他人交叉发布我的答案。:)

在过去,我们会为此使用OLAP产品,比如Essbase或AnalysisServices。如果您想研究OLAP,有一个非常好的开源实现,叫做Mondrian,它可以运行在各种数据库上(包括Redshift AFAIK)。还可以查看Saiku,了解一个基于OSS浏览器的OLAP查询工具

我认为您应该使用超过15个并发查询来测试Redshift的行为。我怀疑用户不会注意到这一点,因为查询只会排队等待一两秒钟

如果你证明红移不起作用,你可以测试Vertica的免费3节点版本。它比Redshift更成熟(即,它将处理更多并发用户),并且在数据加载方面更灵活

在我看来,Hadoop/Impala对于您这样大小的数据集来说过于复杂。它也不是为大量并发查询或短时查询而设计的

Shark/Spark专为数据快速到达的情况而设计,您可以预先计算有限的指标集。同样,这似乎不符合您的要求

祝你好运


这个问题也发布在红移论坛上

我正在为通过谷歌找到这个问题的其他人交叉发布我的答案。:)

在过去,我们会为此使用OLAP产品,比如Essbase或AnalysisServices。如果您想研究OLAP,有一个非常好的开源实现,叫做Mondrian,它可以运行在各种数据库上(包括Redshift AFAIK)。还可以查看Saiku,了解一个基于OSS浏览器的OLAP查询工具

我认为您应该使用超过15个并发查询来测试Redshift的行为。我怀疑用户不会注意到这一点,因为查询只会排队等待一两秒钟

如果你证明红移不起作用,你可以测试Vertica的免费3节点版本。它比Redshift更成熟(即,它将处理更多并发用户),并且在数据加载方面更灵活

在我看来,Hadoop/Impala对于您这样大小的数据集来说过于复杂。它也不是为大量并发查询或短时查询而设计的

Shark/Spark专为数据快速到达的情况而设计,您可以预先计算有限的指标集。同样,这似乎不符合您的要求

祝你好运


红移对联接和group by/order by中使用的键非常敏感。没有动态索引,因此通常需要定义适合任务的结构

  • 您需要确保的是联接与结构100%匹配。看看解释计划-你不应该有任何再分配或广播,也不应该有领导节点活动(如排序)。考虑到您将要进行的查询量,这似乎是最关键的要求

  • 对任意100列进行过滤/聚合的要求也可能是一个问题。如果结构(dist键、排序键)在大多数情况下与列不匹配,则无法利用红移优化。但是,这些都是可伸缩性问题—您可以增加节点数量以匹配您的性能,您可能会对最佳解决方案的成本感到惊讶

  • 如果投影列的数量很小,这可能不是一个严重的问题,否则在排序或聚合(甚至以分布式方式)时,红移将不得不在内存中保存大量数据(并最终溢出),这可能再次影响性能

  • 除了扩展之外,您还可以始终实现分片或镜像,以克服某些队列/连接限制,或者联系AWS支持部门以取消某些限制

  • 你应该考虑预聚合。红移可以在几秒钟内扫描数十亿行,只要它不需要进行诸如重新排序之类的转换。而且它可以存储数PB的数据,所以如果存储的数据过多也没关系


    总之,我不认为仅仅基于您提供的定义,您的用例是不合适的。它可能需要一些工作,细节取决于具体的使用模式。

    红移对联接和分组方式/顺序方式中使用的键非常敏感。没有动态索引,因此通常需要定义适合任务的结构

  • 您需要确保的是联接与结构100%匹配。看看解释计划-你不应该有任何再分配或广播,也不应该有领导节点活动(如排序)。考虑到您将要进行的查询量,这似乎是最关键的要求

  • 对任意100列进行过滤/聚合的要求也可能是一个问题。如果结构(dist键、sort键)在大多数情况下与列不匹配,那么您将无法使用ab