优化查询性能
联合数据库实例的性能受以下因素影响:
S 3中的数据结构以及在联合数据库实例配置中的表示方式。
数据文件的大小。
数据文件的格式和结构。
S3 中的数据结构
为了便于管理,请确保您的数据在逻辑上分组为分区。 Atlas Data Federation 利用您通过分区语法中指定的字段值创建的分区。 您可以通过确保分区结构映射到查询模式并且在 databases.[n].collections.[n].dataSources.[n].path
中定义分区结构来提高联合数据库实例的性能。 对于分区,选择您经常查询的字段,并从第一个位置查询最频繁的字段到最后一个位置查询次数最少的字段进行排序。
databases.[n].collections.[n].dataSources.[n].path
中列出的字段顺序与在复合索引中一样重要。 指定的路径对应于首先按第一个字段的值分区的数据,然后按下一个字段的值分区,依此类推。
例子
考虑一个包含software
、 computer
和OS
字段的collection,在名为metrics
的S3存储桶上分区,首先是software
字段,然后是computer
字段,最后是OS
字段。
metrics |--software |--computer |--OS
Atlas Data Federation 使用分区对以下字段进行查询:
software
字段。software
字段和computer
字段,software
字段、computer
字段和OS
字段。
Atlas Data Federation 可以使用分区来支持对software
和OS
字段的查询。 但是,在这种情况下,Atlas Data Federation 的查询效率不如仅对software
和computer
字段进行查询时的效率。 按顺序解析分区;如果查询省略了特定分区,则 Atlas Data Federation 在使用该分区之后的任何分区时效率会降低。 由于对software
和OS
的查询省略了computer
,因此 Atlas Data Federation 使用software
分区比OS
分区更有效地支持此查询。
Atlas Data Federation 无法使用分区来支持对databases.[n].collections.[n].dataSources.[n].path
中未指定的字段的查询。此外,Atlas Data Federation 无法使用分区来支持包含以下字段但不包含software
字段的查询:
computer
字段。OS
字段,或computer
和OS
字段。
您可以将分区映射到配置中的分区属性,从而使用分区来提高 Data Federation 性能。 通过将分区属性( S3前缀中看起来像文件夹的部分)映射到查询属性,Atlas Data Federation 可以有选择地打开包含与查询相关的数据的文件。 这减少了查询所需的时间并降低了成本,因为 Data Federation 从Amazon Web Services读取和下载的文件减少了。
例子
考虑具有以下结构的S3存储桶metrics
:
metrics |--hardware |--software |--computer |--phone
您可以通过在配置中定义/metrics/{metric_type string}/*
来设置“指标类型”的分区属性。 如果您发出包含{metric_type: software}
的查询,Data Federation 仅处理前缀为/software
的文件,而忽略前缀为/hardware
的文件。
然后,您可以通过在配置中定义/metrics/{metric_type string}/{software_type string}
来设置“软件类型”的分区属性。 如果您发出包含{metric_type: software, software_type: computer}
的查询,Data Federation 将忽略前缀为/phone
的文件。
有关将分区属性映射到collectiondatabases.[n].collections.[n].dataSources.[n].path
的更多信息,请参阅为 S3 数据定义路径。
数据文件大小
Atlas Data Federation 处理的每个文件都需要一定量的计算资源。 如果您的联合数据库实例存储包含许多小数据文件,则所需的资源会增加,并且可能会降低性能。 或者,许多大型数据文件会出现问题,因为 Data Federation 然后会下载并处理不必要的数据。
对于大多数使用案例,性能文件大小为100 到 200 MB 。
数据文件格式
联合数据库实例支持多种数据文件格式。 您可以通过压缩某些文件格式或针对查询优化文件内容来提高性能。
压缩
压缩数据文件后,下载时间会缩短。 与解析未压缩数据相比,减少下载时间具有更大的性能优势。
您可以使用 gzip 压缩以下文件格式 :
JSON
BSON
文件结构
Parquet , Avro ,以及 ORC 文件包含有关文件本身的元数据,以便应用程序可以以不同的方式遍历文件内容。如果您构建数据文件以与要运行的查询保持一致,则Atlas Data Federation可以利用此元数据快速跳转到正确的数据。
在这些格式中, Parquet 文件为联合数据库实例提供了最佳性能和空间效率,因为它针对解析 Parquet 的行组和列组进行了优化。