谓词下推:计算和存储分开进行分析是低效的?


将计算和存储分开进行分析是非常低效的,也许我们应该支持谓词和投影下推到存储?
谓词下推predicate pushdown是指提取 where 子句条件并使用它们修剪您从磁盘读取的数据的优化(从执行引擎“下推”到存储层/引擎)。可以大幅减少 I/O、缓存流失和/或网络 I/O。包括启用 AI 的谓词下推。
谓词下推的名字来自于SQL语句的一部分,那些过滤数据的语句,被称为谓词。它们之所以被称为谓词,是因为数理逻辑中的谓词和SQL中的子句是同一种东西:对于不同的变量或数据值,可以是真或假的语句。
它可以通过减少从存储文件读取的数据量(I/O)来提高查询性能。数据库进程根据存储文件中的元数据评估查询中的过滤谓词。
 
谓词下推是如何帮助处理规模化数据的?
元数据可以帮助存储那些与读有关的文件。
如果你在一个地方发出一个查询,针对在另一个地方的大量数据运行,你可能会产生大量的网络流量,这可能是缓慢而昂贵的。但是......。
......如果你能将部分查询 "下推 "到数据存储的地方,从而过滤掉大部分的数据,那么你就能大大减少网络流量。
鉴于存储元数据,"向下推 "帮助我们决定哪些文件是相关的,哪些是不相关的。
 
Apache Spark 已经支持谓词下推用于 Apache Parquet 和 RDBMS。从 Apache Spark 3.1.1 开始,您还可以将它们用于 Apache Avro、JSON 和 CSV 格式!