Traffine I/O

日本語

2022-11-09

Singer

Singerとは

Singerは、シンプルさと汎用性を重視したオープンソースのETLツールです。データ統合ソリューションで知られるStitch Dataの製品です。このツールは、データの抽出とロードにおいてユニークなモジュラーなアプローチを採用し、TapsとTargetsという異なるコンポーネントを提供します。Tapsはデータをソースから取得し、Targetsはデータを受け取って目的の宛先にロードします。

Singer ETLのコンポーネント

Singerは、ETLに取り組む際に非常にモジュラーで効率的な設計を採用しており、主にTapsとTargetsの2つのコンポーネントに分かれています。

SingerのTaps

SingerのTapsはデータ抽出の役割を果たします。Tapsはデータソースに接続し、必要なデータを抽出し、Singerのスキーマと互換性のある標準化された形式に整形します。Tapsは、データベース、Web API、またはローカルのファイルなど、さまざまなソースに接続することができます。

各Tapは特定のデータソース向けに設計されており、それとのやり取り方法を知っています。例えば、PostgreSQLデータベース、MySQLデータベース、Salesforce APIに接続するための異なるTapsがあります。Singerのコミュニティは、さまざまなデータソースをカバーする豊富なTapsのエコシステムを開発しています。

Tapの主な出力はデータレコードのストリームですが、データの構造を説明するスキーマメッセージや抽出プロセスの進捗状況を追跡するためのステートメッセージも含まれます。

SingerのTargets

Tapsがデータを抽出するのに対し、Targetsは抽出されたデータを選択した宛先にロードする責任を持ちます。Targetsは、データストレージやデータ処理システムなど、さまざまな種類のデータを受け取ることができます。宛先はGoogle BigQueryやAmazon Redshiftのようなデータウェアハウス、またはシンプルなCSVファイルなどがあります。

Tapsと同様に、Targetsも特定の宛先向けに設計されています。Tapからの出力(レコード、スキーマメッセージ、ステートメッセージ)を受け取り、データレコードを宛先にロードし、スキーマメッセージを使用してデータが宛先の構造に適合することを確認します。

Singerの利点

  • 優れたSingerのコア仕様
    Singerの仕様は、文書化されており、メンテナンスが行き届いています。仕様に準拠した多くのTapsが利用できます。JSONを使用してTapsとTargets間でデータを転送することにより、非互換な出力形式を回避し、異なるTapsを互換性を持って使用することができます。

  • 豊富なSingerのTaps
    Singerの仕様に基づいて開発されたTapsは約200個あります。これらのTapsの大部分は、特定のデータソースが必要な開発者によって開発・提供され、Singerによるレビューを経ています。

Singerのデメリット

  • Tapsの標準化の課題
    Tap開発プロジェクトの個別性から、Taps間でのサポートされる機能や使用事例の一貫性に欠ける場合があります。そのような場合には独自にフォークして管理する必要になる場合があります。

  • メンテナンスの不足
    StitchがTalendに買収された後、Singerプロジェクトは放置され、APIの変更や非推奨のTapsの継続使用が生じる可能性があります。さらに、Tapsの依存関係が互いに競合する場合や、バージョンの一貫性の欠如が複数のTapsを同時に実行する際の競合を避けるために独立した環境の設定が必要です。

参考

https://www.singer.io/
https://towardsdatascience.com/should-you-build-on-singer-taps-16bb1e45ef09
https://blog.panoply.io/etl-with-singer-a-tutorial
https://github.com/singer-io/getting-started

Ryusei Kakujo

researchgatelinkedingithub

Focusing on data science for mobility

Bench Press 100kg!