Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.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
用于增量SQL查询的AWS等价物_Sql_Postgresql_Amazon Web Services_Incremental Build - Fatal编程技术网

用于增量SQL查询的AWS等价物

用于增量SQL查询的AWS等价物,sql,postgresql,amazon-web-services,incremental-build,Sql,Postgresql,Amazon Web Services,Incremental Build,我可以在RDS(postgreSQL)中创建一个具体化视图,以跟踪SQL查询的“最新”数据输出,然后在QuickSight中对此进行可视化。此过程也非常“快速”,因为它不会导致调用其他AWS服务和/或再次重新处理所有数据(通过SQL查询)。我的假设是这样的:它运行一个SQL,重新运行SQL,但不重新运行整个数据,因此,如果您正确地构造查询,您可以得到一个“实时运行总计”指标 问题是,为100个查询创建实体化视图(每5秒一次),并将它们全部存储在数据库中是不可伸缩的。想象一个拥有1TB数据的数据库

我可以在RDS(postgreSQL)中创建一个具体化视图,以跟踪SQL查询的“最新”数据输出,然后在QuickSight中对此进行可视化。此过程也非常“快速”,因为它不会导致调用其他AWS服务和/或再次重新处理所有数据(通过SQL查询)。我的假设是这样的:它运行一个SQL,重新运行SQL,但不重新运行整个数据,因此,如果您正确地构造查询,您可以得到一个“实时运行总计”指标

问题是,为100个查询创建实体化视图(每5秒一次),并将它们全部存储在数据库中是不可伸缩的。想象一个拥有1TB数据的数据库,创建一个增量/具体化视图似乎比使用其他AWS服务要轻松得多,但最终不会是处理时间/成本等方面的最佳选择

我探索了各种AWS服务,似乎没有一种能够解决这个问题

  • 我试着用AWS胶水。您需要为每个查询创建一个脚本,并将其输出到数据库。读取和写入增量数据之间的延迟大于创建具体化视图;因为您可以增量地处理数据,但将其附加到当前的“总计”度量是另一个过程
  • 我探索了使用AWS Kinesis和Lambda对流中的“新”数据运行SQL,并将值存储在S3或RDS中。同样,这增加了延迟,并且不如实际化视图那样有效
  • 我读到AWS Redshift没有具体化的视图,因此坚持使用RDS(PostgreSQL)
  • 有什么想法吗

    [一个类似的问题:-除了我想避免在“所有”数据上运行SQL以避免大量处理成本。]

    编辑(示例):

    • 表1有模式(日期时间、客户id、收入)
    • 我运行这个查询:从表1中选择sum(revenue)
    • 这将扫描整个表,得出每个客户id的度量
    • 表1现在随着日期时间的推移使用新数据进行更新,例如1小时额外数据
    • 如果我再次运行表1中的select sum(收入),它将再次扫描所有数据
    • 一种更有效的方法是只计算新数据上的查询,并附加结果
    • 此外,我希望查询在数据发生变化的情况下主动运行,而不必“按计划运行”,这样我的前端仪表盘基本上可以“自动更新”,而无需客户做太多工作
    我不明白您所说的
    是什么意思,我可以在RDS(postgreSQL)中创建一个具体化视图,以跟踪SQL查询的“最新”数据输出。具体化视图如何帮助处理增量数据?是否每次数据更改时都创建新视图?我认为某种基于触发器的摘要将是更好的解决方案。需要更多地了解用例。@TomC-我在上面添加了一个示例来帮助您。您基本上需要流媒体。数据是如何进入数据库的?而是使用Kafka或类似的东西进行流式处理。@Nick.McDermaid-这是我试图主动自动化的SQL查询,不一定是流式处理部分。当然,我可以使用Kafka,它可以实时地传递数据,但是SQL必须重复执行。这听起来像是一个经典的触发器用例。