データエンジニアリングは、データの収集と利用を可能にするデータシステムの構築に対するソフトウェアエンジニアリングのアプローチです。このデータは通常、その後の分析やデータサイエンスを可能にするために使用され、多くの場合、機械学習が含まれます。[ 1 ] [ 2 ]データを利用可能にするには、通常、データ処理だけでなく、相当なコンピューティングとストレージが必要です。
1970年代から1980年代にかけて、データベース設計とデータ分析および処理のためのソフトウェアの使用を説明するために、情報工学手法(IEM) という用語が作られました。 [ 3 ]これらの技術は、1980年代の組織の運用処理ニーズの理解に基づいて、データベース管理者(DBA) とシステムアナリストが使用することを意図していました。特に、これらの技術は、戦略的なビジネス計画と情報システムの間のギャップを埋めることを目的としていました。情報工学手法の初期の重要な貢献者 (しばしば「情報工学手法の父」と呼ばれる) は、オーストラリア人のClive Finkelsteinで、1976年から1980年の間にそれに関するいくつかの記事を執筆し、また、James Martin と共同で影響力のあるSavant Institute のレポートを執筆しました。[ 4 ] [ 5 ] [ 6 ]その後数年間、Finkelstein は急速に変化するビジネス環境に対応することを目的とした、よりビジネス主導の方向で研究を続け、Martin はよりデータ処理主導の方向で研究を続けました。 1983年から1987年にかけて、チャールズ・M・リヒターは、クライヴ・フィンケルスタインの指導の下、IEMの刷新において重要な役割を果たし、IEMの自動化に役立つIEMソフトウェア製品(ユーザーデータ)の設計にも貢献した。
2000年代初頭、ほとんどの企業ではデータとデータツールは一般的に情報技術(IT)チームが管理していました。[ 7 ]その後、他のチームが業務(レポート作成など)にデータを使用し、これらの部門間でデータスキルセットの重複はほとんどありませんでした。
2010年代初頭、インターネットの台頭に伴い、データ量、速度、多様性が飛躍的に増加したことから、データ自体を表す用語としてビッグデータという言葉が生まれ、 FacebookやAirbnbのようなデータ駆動型テクノロジー企業はデータエンジニアという言葉を使い始めました。[ 3 ] [ 7 ]データの規模が大きくなったため、Google、Facebook、Amazon、Apple、Microsoft、Netflixなどの大手企業は、従来のETLやストレージ技術から離れ始めました。そして、データ、特にインフラストラクチャ、ウェアハウジング、データ保護、サイバーセキュリティ、マイニング、モデリング、処理、メタデータ管理に焦点を当てたソフトウェアエンジニアリングの一種であるデータエンジニアリングを作り始めました。 [ 3 ] [ 7 ]このアプローチの変化は、特にクラウドコンピューティングに焦点を当てていました。[ 7 ]データは、ITだけでなく、営業やマーケティングなど、ビジネスの多くの部門で処理および使用されるようになりました。 [ 7 ]
高性能コンピューティングは、データの処理と分析に不可欠です。データエンジニアリングのためのコンピューティングの特に広く普及しているアプローチの 1 つはデータフロー プログラミングであり、計算は有向グラフ(データフロー グラフ) として表現されます。ノードは操作、エッジはデータの流れを表します。[ 8 ]一般的な実装には、 Apache Sparkや、ディープラーニング専用のTensorFlowなどがあります。[ 8 ] [ 9 ] [ 10 ]より最近の実装では、差分/タイムリーデータフローなど、インクリメンタル コンピューティングを使用して、はるかに効率的なデータ処理を実現しています。[ 8 ] [ 11 ] [ 12 ]
データはさまざまな方法で保存されますが、重要な決定要因の一つは、データがどのように使用されるかです。データエンジニアは、コスト削減のためにデータストレージおよび処理システムを最適化します。彼らは、データ圧縮、パーティショニング、およびアーカイブを活用します。
データが構造化されており、何らかのオンライン トランザクション処理が必要な場合は、一般的にデータベースが使用されます。[ 13 ]当初は主にリレーショナル データベースが使用され、強力なACIDトランザクションの正当性保証が備えられていました。ほとんどのリレーショナル データベースはクエリにSQLを使用します。しかし、2010 年代のデータの増加に伴い、NoSQLデータベースも普及しました。これは、 ACID トランザクション保証を放棄することでリレーショナル データベースよりも水平スケーリングが容易になり、オブジェクト リレーショナル インピーダンス ミスマッチも軽減されるためです。[ 14 ]さらに最近では、 ACID 保証を維持しながら水平スケーリングを可能にするNewSQLデータベースが普及しています。[ 15 ] [ 16 ] [ 17 ] [ 18 ]
データが構造化されており、オンライン分析処理が必要な場合(ただし、オンライン取引処理は不要)、データウェアハウスが主な選択肢となります。[ 19 ]データウェアハウスは、データベースよりもはるかに大規模なデータ分析、マイニング、人工知能を可能にし、 [ 19 ]実際、データはデータベースからデータウェアハウスに流れ込むことがよくあります。[ 20 ]ビジネスアナリスト、データエンジニア、データサイエンティストは、SQLやビジネスインテリジェンスソフトウェアなどのツールを使用してデータウェアハウスにアクセスできます。[ 20 ]
データレイクとは、大量のデータを保存、処理、保護するための集中型リポジトリです。データレイクには、リレーショナルデータベースからの構造化データ、半構造化データ、非構造化データ、バイナリデータなど、様々な種類のデータを含めることができます。データレイクは、オンプレミス環境またはAmazon、Microsoft、Googleなどのパブリッククラウドベンダーのサービスを利用したクラウド環境で構築できます。
データに構造化があまり施されていない場合は、多くの場合、単にファイルとして保存されます。いくつかの選択肢があります。
さまざまなデータ処理や保存場所の数と種類が多すぎると、ユーザーにとって圧倒されることがあります。このため、データタスクを指定、作成、監視できるように、ワークフロー管理システム(Airflowなど)を使用するようになりました。 [ 23 ]タスクは、多くの場合、有向非巡回グラフ(DAG)として指定されます。[ 23 ]
経営陣が将来に向けて設定する事業目標は、主要事業計画に明記され、戦術事業計画でより詳細に定義され、運用事業計画で実行に移されます。今日、ほとんどの企業は、この戦略に沿った事業計画を策定する必要性を認識しています。しかし、組織の戦術レベルおよび運用レベルにおける透明性の欠如により、これらの計画の実行はしばしば困難です。このような計画策定には、事業計画の誤解や誤解釈に起因する問題を早期に修正するためのフィードバックが不可欠です。
データシステムの設計には、データプラットフォームのアーキテクチャ設計やデータストアの設計など、いくつかのコンポーネントが含まれます。[ 24 ] [ 25 ]
データモデリングとは、データとデータのさまざまな部分間の関係を記述する抽象モデルであるデータモデルを作成するプロセスです。 [ 26 ]
データエンジニアは、組織内のデータの流れを管理するビッグデータETLパイプラインを作成するソフトウェアエンジニアの一種です。これにより、膨大な量のデータを取り込み、それを洞察に変換することが可能になります。[ 27 ]データエンジニアは、データの運用準備、フォーマット、回復力、スケーリング、セキュリティなどに重点を置いています。データエンジニアは通常、ソフトウェアエンジニアリングのバックグラウンドを持ち、Java、Python、Scala、Rustなどのプログラミング言語に精通しています。[ 28 ] [ 3 ]データエンジニアは、データベース、アーキテクチャ、クラウドコンピューティング、アジャイルソフトウェア開発に精通しています。[ 3 ]
データサイエンティストはデータと情報の分析に重点を置き、数学、アルゴリズム、統計、機械学習の専門知識を持つ。[ 3 ] [ 29 ]