[英]Best Solution for Real Time Complex Queries
所以我一直在构建一个加密分析工具,需要在几个表中摄取数十亿行数据。 销售、清单、NFT、元数据、合同信息等。我获取这些数据并对其进行机器学习,每小时将每个合同的大量数据输出到另一个表中。 数据是高度相关的,最终结果是尝试基于具有许多连接的复杂查询输出大量数据(考虑在过去 3 天内获取销售额最多的 500 个项目中的每项资产,连接到它们的元数据属性,连接这些属性归因于他们最近的 mle 结果,然后以 20 种不同的方式对该数据进行切片)。
我目前有一个 8 vCPU Postgresql RDS,32 GB 内存,上面有 5-6 个物化视图,它以 75% 以上的平均 CPU 利用率运行,需要 10-15 分钟以上来更新一些视图,因此任何随后查询这些视图的东西views 需要很长时间才能响应基本上一半的时间。 我研究了多维数据集、时间刻度、红移等。基于流的数据库似乎很难设置高度相关的历史数据,而关系数据库还没有增量更新物化视图的概念。
我应该怎么办? 我愿意支付高达 1000 美元/月的费用来以可扩展的方式解决问题(可能有 10-1000 亿行横跨几个表,可以从不支持读写的视图中查询)希望我能很快就会达到这个数字,但现在我要承担所有费用,还没有从中获得收入
我会仔细研究 Redshift。 它是柱状的,专为大型分析查询而设计。 它的 SQL 基于 postgres,因此移植工作是可管理的。 您当前解决方案的某些方面可能不太适合 Redshift,但它应该能够达到您声明的成本和分析性能目标。
如果您想实时处理数据,您应该尝试将数据发布到专为该工作设计的技术中。 像 Confluent Kafka 这样的东西。
一旦数据流式传输到您的消息代理,您就可以以您选择的任何方式处理和处理数据。 您可以为每个业务需求提供多个小型服务。 最后您可能不得不将数据写入数据库,但这可能是一个小得多的卷,只包含您真正需要存储的结果。
不幸的是,PostGresql 没有技术和功能来帮助您解决问题。
但是这些技术和功能存在于其他一些 RDBMS 中,例如 Microsoft SQL Server(“重”查询的自动并行化、ColumStore 索引、内存表、本机过程、索引视图、压缩、批处理模式、用于 BI 的 SSAS 引擎……)
当然,您需要为所有这些东西支付许可证,但如果没有相同的性能,您将需要支付更多的费用才能拥有 PostGreSQL 的超级计算机。
例如,我对一些非常简单的查询做了一些性能测试,这些测试表明 PostGreSQL 在 SQL Server 面前有多慢:
PostGreSQL 与 Microsoft SQL Server – 比较第 2 部分:COUNT 性能本文证明 PostGreSQL 平均比 SQL Server 慢 90 倍,在最坏的情况下(使用列存储索引)慢 1500 倍......
PostGreSQL 与 Microsoft SQL Server – 比较第 1 部分:DBA 命令性能本文论证了 PostGreSQL 在基本 DBA 操作中大约是播种时间的 20 倍
问你为什么 StackOverflow 运行在 Microsoft SQL Server 上而不运行在 PostGreSQL 上?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.