データエンジニアリングの分野は新しいものではありませんが、過去10年の前半にRedshiftやBigQueryのような技術が普及したことで、新旧の問題やニーズに対応する新しい技術やアイデアが爆発的に増えました。

このリストにあるすべての用語に精通している必要はありません。網羅的なリストでもありませんが、知識を広げるための出発点として使用することをお勧めします。

1. カテゴリー

ここでは、データエンジニアリングのために覚えていた方が良い用語やそれぞれの使われ方、ITにおけるエコシステムも含めて簡潔に説明していきます。ただし、一部の用語は幅広い意味で使用されるものも含まれているため、用語についての理解や使い方については場面によって考慮する必要があるのでご注意下さい。

  • 1.1 専門用語または業界用語

「ビッグデータ」
ビッグデータとは、従来のデータ分析や処理アプローチでは大きすぎたり複雑すぎたりするデータセットに関する研究、ツール、ソリューションなどを指す包括的な用語。ビッグデータを、必要なデータ処理、分析、保存に機械では不十分なあらゆる状況と定義する人もいます。

「データレーク」
構造化データおよび非構造化データの一元管理されたリポジトリ。データを変換することなく、そのままの状態で保存できます。そうすることで、後で他のユーザーがデータを利用することができます。「データレイク」はストレージに限定される言葉ではなく、データ分析、機械学習、カタログ化、データ移動など、プラットフォームに必要な機能も含みます。

「データウェアハウス」
分析クエリの実行に最適化されたリポジトリのことをいいます(詳細はOLAPをご参照ください)。データレイクとは違い、データウェアハウスに格納できるようにデータが構造化されていることが前提となります。
構造化データとは?
例えば、ドライブにアップロードできる様々なタイプのファイルのようなものをいいます。プラットフォームによって構造化データに適した形式の制限は異なりますが、一般的にはテーブルを指します。

「データレイクハウス」
データウェアハウスのデータ構造と管理機能を、データレイクの低コストのストレージと組み合わせようとするアプローチを表す用語。構造化されたトランザクション層を含みます。
この言葉は広範囲で使われるため、その必要性を理解する方が良いでしょう。DatabricksのDelta Lakeは、データレイクハウスを広めた中心的な存在ですが、AWSも十分に活用できるでしょう。

「データマート」
データウェアハウスで使われる用語で、特定の組織構造やパターンを示します。部門あるいはチーム(財務、マーケティング、製品など)ごとに分けられた階層のことで、ユーザーはそれぞれのニーズに合ったフォーマットでデータを利用することができます。

「データメッシュ」
多くの人々はこれを分散型アーキテクチャとして認識しており、さまざまなチームがデータを製品であるかのように管理します。アーキテクチャーにより多くの要件を設定するその他の定義もあります(オリジナルや、AWSによるいくつかの実装提案を含む)。比較的新しい言葉であるため、今後どのように使われ方が変化していくかは興味深いですが、核となる大きなトレンドになるでしょう。

「関係データベース」
正式には、リレーショナル・モデルを使ってデータをモデル化したデータベースのことをいいます。実際、データベース管理システム(MySQL、PostgreSQL、SQLサーバーなどのアプリケーション)は「リレーショナル」と呼ばれ、データの整合性を保証し、SQL言語によるデータアクセスやACIDトランザクションをサポートするメカニズムを持っています。

「NoSQLデータベース」
リレーショナル・データベースとは異なるモデルでデータを保存・検索する仕組みを提供するシステムを指し、実際はこの記事では記載されていないいくつかの異なるタイプのデータベースのことをいいます。
これはあくまで包括的な用語ですが、リレーショナルデータベースの特徴に関連する条件のいくつかを緩和したものであることを覚えておいてください。しかし、他の側面では異なる場合があります。(例えば、Google DatastoreはNoSQLデータベースとしてACIDトランザクション、SQL様なクエリ、インデックスなどを対応していますが、オブジェクトデータベース形式でデータを保存する)。

「バッチ処理とストリーミングデータ」
これらの言葉はさまざまな文脈で使われます。使用例としては次のような場合です。
データセットを意味する場合:バッチ処理は時間などの限られた範囲での集合であり、データストリームは(「境目のない」つまりオープンな意味で)無制限の集合です。例えば、1日の売上高を含むテーブルはデータバッチで、ネットワークを経由してサーバーに送信されるHTTPリクエストの集合はデータストリームです。
処理モデルを意味する場合:たとえば、データバッチを送信するときに、テーブルにある履歴データのエクスポートを毎日にスケジュール設定できます。ストリーミング処理モデルでは、複数のシステムにわたる健全性メトリクスのムービングウィンドウを計算し、自動スケーリングを管理することができます。

  • 1.2 クラウドプラットフォーム

企業のデータ関連ニーズに対応するためのクラウドプラットフォームの利用はもはや定番となりつつあります。オンプレミス(下記参照)は、主にセキュリティ、ポリシー、およびプロセスの観点において今後も重要な存在であり続けるでしょう。プロバイダーについて話す前に、概念や用語を含めてソリューションの概要を理解しておく方がよいでしょう。
マルチクラウドまたはハイブリッドクラウド(複数のプロバイダーから相互接続されたサービスを利用すること)は、これから大きく注目され、トレンドになるでしょう。

「オンプレミス」
オンプレミスは企業が所有するコンピューターやサーバーにインストールされて実行されるソフトウェア。顧客は別の組織からコンピューティングリソースを借用するためクラウドとは対照的です。(下記参照)。

「プロセッシングとストレージ」
プロセッシングとは、何らかのアクティビティ(データの取り込み、処理、送信など)を実行する能力のことをいい、通常はCPUと連動しています。一方、ストレージは処理されるデータを保管するために必要なスペースのことをいい、通常はディスクスペースと連動しています。
クラウドの世界では、この2つの機能を切り離すことで無駄をなくし、結果的にコストを削減することにつながります。

「仮想マシン」
コンピュータのエミュレーションで、より強力な物理マシンの計算資源によって間接的に作成される仮想リソースを持ちます。ユーザーがクラウドプラットフォームからリソースを消費するための主な方法です。GCPのCompute Engine、AWSのEC2、AzureのVirtual Machinesはそれぞれ独立した製品ですが、大半のサービスの基盤となっています。

「サーバーレス」
リソースがオンデマンドで割り当てられ、アプリケーションの使用時(データの取り込み、処理、送信など)にのみコンピューティングリソースを消費するクラウドコンピューティングモデル。サーバーを暗黙的に使用することに変わりはないため、「サーバーレス」というのは語弊があるが、ユーザーはサーバーのリソースやライフサイクルの管理(非公式には「サーバーのオンとオフ」)に責任を負わないです。

  • 1.3 Googleクラウドプラットフォーム

Google Cloud Platform(略称:GCP)の製品はカテゴリーに分かれており、その中でも主にデータ分析、データベース、ストレージに焦点を当てています。最も関連性の高い資格は、Professional Data Engineerです。

「BigQuery」(ビッグクエリ)
GCPのサーバーレスデータウェアハウスプラットフォームは、 カラム型データストレージを備え、ソリューションにネイティブに保存されたデータに対してSQLインタフェースを提供します。価格設定は基本的にデータの保存とクエリに基づきますが、予約された処理能力に基づく固定価格モデルも用意されています。

「Google Cloud Storage」(クラウドストレージ)
あらゆるサイズとフォーマットのデータを保存するためのソリューション。主に非構造化データを扱うために使用されますが、この機能に限らず柔軟なソリューションでもあります。

「データプロック」
Apache Sparkのようなツール・ソリューション(その他多数)を使って大規模なデータ処理を行うマネージド・サービス。最近では、サーバーレス機能も開始されました。

「データフロー」
Apache Beamフレームワークを使用し、バッチおよびストリームデータのロードを記述するための統一言語として開発された、大規模データ処理のためのサーバーレスマネージドサービス。

「Pub/Sub」
パブリッシャーとサブスクライバーのアーキテクチャを実装したメッセージキュー用のサービス。イベント駆動型アーキテクチャなどでサービス間のセキュアな通信の実装しや、(GoogleアーキテクチャのDataflowと組み合わせてよく使われる)ストリーミングデータフローを管理するのに最適です。プルモードとプッシュモードを対応しています。サービス間の通信には、Cloud Tasksを使用することも可能です。

「Pub/Sub」
Apache Airflowを使用したワークフローのオーケストレーションのためのマネージドサービス。(他のプラットフォームやソフトウェアはいくつかあります)

「Cloud SQL」
MySQL、PostgreSQL、SQL Server用のGCPマネージドリレーショナルデータベースサービス。

「Cloud Data Fusion」
データの取り込み、処理、エクスポートフローを作成するためのビジュアルインターフェースツール。基盤となるオープンソーステクノロジーはCDAPです。

「Cloud Bigtable」
大容量のデータを低レイテンシーで読み書きが可能なキーバリュー構造で保存し、高速アクセスをサポートするシステム。

「Dataprep」
分析および機械学習のためにデータを探索、クリーニング、準備するためのビジュアルインターフェースツール。お馴染みのエクセルをさらに良くしたようなツールなので、学習曲線としては低いです。独自のソリューションであるTrifactaによって提供されています。

「Cloud Functions」
データの抽出、変換、ロードなど、よりシンプルなタスクの実行に最適なサーバーレスコンピューティングソリューション。
(データ分析)Dataplex、Analytics Hub、Looker(サーバーレス・コンピューティング)、Cloud Run、ワークフロー、(データベース)Firestore、Cloud Spanner、Datastream、(開発者向けツール)Artifact Registry、Cloud Build、Cloud Source Repositories、Cloud Schedulerなどがある。

  • 1.4 アマゾンウェブサービス(AWS)

アマゾンのクラウドプラットフォームのことをいい、一般的にはAWSと呼ばれています。製品はカテゴリーに分かれており、弊社が主に扱っているのはアナリティクス、データベース、ストレージである。

「AWS Lambda」
サーバーレスコンピューティングソリューションは、データの抽出、変換、ロードといった単純なタスクの実行に最適です。

「Amazon Athena」
サーバーレスでSQLを使ってS3のデータを参照するソリューション。価格モデルはデータへのクエリのみに基づいています。

「Amazon Redshift」
AWSのデータウェアハウスソリューションで、カラムでのデータ保存とSQL(PostgreSQLベース)を対応しています。計算資源の予約に基づく価格モデルで、最近ではサーバーレスモデルもあると発表。

「Amazon SageMaker」
AWSインフラ上で機械学習モデルを構築、トレーニング、デプロイするためのマネージドプラットフォーム。データサイエンティストがモデル開発と分析に集中できるよう、大量のデータを扱う際に遭遇しがちな多くの課題に対処します。

「AWS Glue」
サーバーレスのデータ統合サービス。データ統合プロセスはETL(Extract、Transform、Load)の頭文字に基づいて構成されます。Glueでは、PySparkのような技術を使ってデータ統合プロセスを構築することができ、クラウドインフラを利用してスケーリングや並列処理を行うことができる。

「Amazon S3」 (Simple Storage Service)
Googleのクラウドストレージと同様、形式にとらわれずあらゆるデータを受け入れるデータストレージサービス。大量の非構造化データを保存する方法として、データレイクを語る上で参考となるツールです。

「Amazon Kinesis、SQS、SNS」
パブリッシャーとサブスクライバー形式のメッセージングサービス。これらはプルとプッシュのユースケースを対応し、異なるシナリオに特化したサービスを提供します。Simple Queue Serviceは他のサービスで処理されるメッセージキューを作成し、Simple Notification Serviceは多数の購読者にメッセージをレプリケートします。Kinesisは、ストリーミングデータを扱うためのより完全なサービスです(StackOverflowでこちらに関する質問から、製品比較についてのさまざまな意見を見てみましょう)。
Step FunctionsはAWS内のマネージドプロセスオーケストレーションサービスです。ルーティン、機械学習、データ処理などの自動化を可能にします。
(データ分析)Amazon EMR、Amazon Kinesis、Amazon QuickSight、Amazon Lake Formation、AWS Data Pipeline、(データベース)Amazon Aurora、Amazon RDS、Amazon DynamoDB、(開発者向けツール)AWS CodeCommit、AWS CodePipelineなどがあります。

2. 略語集

「ACID特性」(Atomicity Consistency Isolation Durability)
データベースにおけるトランザクションの4つの重要な特性のことをいいます。

「API」
システムやソフトウェアとの通信インターフェースを示す用語。システムやソフトウェアとの通信インターフェースを示す用語。一般的にはライブラリのメソッド群のことをいいます。しかし、ウェブツールでの場面ではREST標準と関連付けられることが最も多く、HTTPプロトコルの使用は一連の標準によって定義されています。もうひとつの一般的なパターンはRPCです。データエンジニアリングの分野においては、サーバー間のデータ転送(収集と送信)とサービス間の通信の自動化の両方で、APIが一般的に使用されます。

「SDK」(Software Development Kit)
ソフトウェア開発を容易にするツールの集合体。通常は1つのパッケージで提供されます。場面によっては、SDKにはコンパイラ、テストツール、デバッガなども含まれることがあります。その他の使用例として、プラットフォームのメーカーがAPIとの通信をパッケージ化したさまざまなプログラミング言語用のSDKのコレクションを提供している場合です。この違いは絶対に覚えておいた方が良いでしょう。

「DAG」(Directed Acyclic Graph)
グラフ理論はAirflowやDBTなどのツールでループのない依存構造をモデル化するために使用されるため、オーケストレーション(ワークロードやデータ)の場面でよく使用される用語。抽象化自体は非常に汎用的であり、多くの異なる場面で使用されるため、データとは無関係な場合もあります。

「ETL 」(Extract Transform Load)
これは、1つのソース、またはより一般的には複数のソースからデータを抽出し、構造化された方法でシステムに転送し、分析に備えるプロセスです(上記のデータウェアハウスを参照)。アーキテクチャにおけるあらゆるデータ変換、またはそのためのツール(ETL ツール)を指す包括的な用語として使用されることもあるが、そうすることで一般化しすぎて意味が失われる。

「ELT 」(Extract Load Transform)
この頭字語はETLに関連しており、より近代的なアーキテクチャで使用される、アナリティクスシステム自体でより重い変換を実行するプラクティスを識別するために使用されます。これは、BigQuery、Redshift、Snowflakeなどのソリューションにおける処理能力の向上により可能になりました。ETLの概念はELTの中にも存在するが、それは通常、ソースから標準化された生の(しかし構造化された)方法でデータを抽出する専門ツールの責任です。したがって、この頭字語はELTLのより完全なプロセスを指すと言うのが適切です。

「リバース ETL」(Reverse Extract Load Transform)
ETLはそれ自体の頭字語ではなく、データウェアハウス内の構造化されたデータを自動化された方法で他のプラットフォームへ送信し、日常的に使用することを目的としたソリューション(例:カスタマーオーディエンス)であり、オペレーショナルアナリティクスと呼ばれています。「リバース 」(=逆)という用語は、ELTアーキテクチャにおけるデータ取り込みに対するETLという用語の使用を指し、これは類似のプロセスである。

「OLTPL」(Online Transaction Processing)
eコマース(売上、在庫)、ATM(出金、入金)など、アプリケーションにおけるトランザクションを管理・促進するシステムを指します。リレーショナル・データベースを使用するのが一般的だが、トランザクションをサポートするNoSQL技術の使用も可能です。(このような場合、NewSQLという用語が使用される)。

「OLAP」(Online Transaction Processing)
元々は(「OLAPキューブ」と呼ばれる構造体を介して)多次元クエリを実行できるシステムを表すために使用された用語であったが、現在ではOLTPと対比される用語としてより一般的に使用され、分析目的のデータベース利用を表します。現在では、BigQuery、Redshift、Snowflakeのようなカラムにストレージを持つデータウェアハウスがこの目的で使用されており、OLAPシステムの機能を実装していると言われています。

3. 他のプラットフォームやソフトウェア

「Apache Airflow」
DAGを抽象化として使用し、Pythonでプログラム的にワークフローを開発するためのプラットフォーム。オープンソースのソリューション(GitHub)であるが、クラウドプロバイダー上のプロプライエタリな自己管理プラットフォーム(Cloud Composer)もあります。

「Apache Airflow」
してコードを実行するには、サポートされているプラットフォーム(ランナーと呼ばれる)のいずれかを使用することが想定される。PythonとJava言語をサポートするオープンソースのソリューション(GitHub)です。

「Apache Spark」
機械学習機能を備えたスケーラブルなデータ処理のためのマルチ言語エンジン。SQLを含む複数の言語を対応し、バッチ処理やストリーミングデータ処理も可能です。

「Census」
一連のデータ統合を含むリバースETLプラットフォーム。これらの統合は、データウェアハウスの主要なプラットフォームと、販売、広告、マーケティングなどのプラットフォームとの間で行われます。

「dbt」
SQLを使ってデータ変換パイプラインを記述するためのオープンソースのコマンドラインツール。同じベンダーのdbt Cloudというマネージドプラットフォームもあります。

「Great_Expectations」
オープンソースのデータ品質フレームワーク。テストやドキュメント作成、モニタリングに役立ちます。

「Snowflake」
主要クラウドプロバイダー3社(AWS、GCP、Azure)のストレージをサポートするデータプラットフォーム。当初は「Data Warehouse as a Service」と名乗っていたが、その目的はアナリティクスとデータストレージのための最新クラウドプラットフォームを提供することです。

最後に

この記事を読んで、もしデータパイプラインのメンテナンスやAPI開発のネックをお持ちであると思われるなら、こちらからソリューションエンジニアとの30分のオンライン相談会を予約してください。

本投稿の原作(英語)はこちらです。