ablog

不器用で落着きのない技術者のメモ

NoDB: Efficient Query Execution on Raw Data Files

1990年代から産み出されるデータ量は右肩上がりで増えてきたが、分析可能なデータ量は大きく変わっていない。

列指向データベースなどにロードすれば大量データを高速に分析できるが、ロード時間が課題だった。2010年代に入ってDB外の生データ(CSVファイルなど)をロードなしでロード済みに近い性能を出す研究が進んだ。

Oracle Database、PostgreSQLMySQL などではDB外の生ファイルを表として扱う機能はすでに実装されている。

ただの外部表ではなくI/O量削減のため、Selective tokenizing/parsing/tuple formation、Adaptive indexing (positional map)、Tuple caching といった研究がされている。

Redshift Spectrum は Redshift で高度な分析しつつロードしきれない/したくないS3上のデータを Redshift 内のデータと一緒に一つのクエリーだ分析できるようになった。Redshift の成熟した実装を活かしつつ、分析対象データの範囲がS3まで広がった。


PostgreSQL の成熟した実装を活用して Presto にクエリを投げる Tresure Data の Prestogres とアプローチが似ていると思う。

Athena は本格的な DWH というよりは以下のように分析頻度の低いデータをアドホックに分析するユースケースが向き。

サブクエリやJOIN を駆使した複雑なクエリや大量データを長時間処理するには Redshift のほうが向いている。

Q: When should I use Amazon Athena vs. Redshift Spectrum?

Amazon Athena is the simplest way to give any employee the ability to run ad-hoc queries on data in S3. Athena is serverless, so there is no infrastructure to setup or manage, and you can start analyzing your data immediately.

If you have frequently accessed data, that needs to be stored in a consistent, highly structured format, then you should use a data warehouse like Amazon Redshift. This gives you the flexibility to store your structured, frequently accessed data in Amazon Redshift, and use Redshift Spectrum to extend your Amazon Redshift queries out to the entire universe of data in your S3 data lake. This gives you the freedom to store your data where you want, in the format you want, and have it available for processing when you need.

Amazon Redshift FAQs - Amazon Web Services

Q: What is the difference between Amazon Athena, Amazon EMR, and Amazon Redshift?

Query services like Amazon Athena, data warehouses like Amazon Redshift, and sophisticated data processing frameworks like Amazon EMR, all address different needs and use cases. You just need to choose the right tool for the job. Amazon Redshift provides the fastest query performance for enterprise reporting and business intelligence workloads, particularly those involving extremely complex SQL with multiple joins and sub-queries. Amazon EMR makes it simple and cost effective to run highly distributed processing frameworks such as Hadoop, Spark, and Presto when compared to on-premises deployments. Amazon EMR is flexible - you can run custom applications and code, and define specific compute, memory, storage, and application parameters to optimize your analytic requirements. Amazon Athena provides the easiest way to run ad-hoc queries for data in S3 without the need to setup or manage any servers.

Amazon Athena FAQs – Amazon Web Services (AWS)