リアルタイムのデータ分析、リアルタイムの監視、リアルタイムのレポート、または複雑なデータ型処理が必要なシナリオでは、DataHub から Hologres にデータを同期できます。 DataHub と Hologres の組み合わせた機能は、データ処理と分析の効率と精度を向上させるのに役立ちます。 このトピックでは、DataHub で DataConnector を作成する方法と、一般的なエラーの解決策について説明します。
背景情報
DataHub は、データソースまたはデータシンクとしてデータ同期をサポートしています。 DataHub トピックから他の Alibaba Cloud サービスにリアルタイムまたは準リアルタイムでデータを同期できます。 これは、Alibaba Cloud サービス間のデータフローを促進します。 DataHub のデータ同期機能の詳細については、概要をご参照ください。
次の表は、DataHub と Hologres の概念間のマッピングを示しています。
DataHub | Hologres |
プロジェクト | データベース |
トピック | テーブル |
同期モードとポリシー
同期モード
モード | 説明 |
1 つずつ挿入 | DataHub データを Hologres に 1 つずつ挿入します。 このモードは、DataHub のすべてのデータを Hologres に同期する場合に適用できます。 |
再生 | ソース DataHub プロジェクトで実行された変更操作を宛先 Hologres データベースで実行して、データの整合性を確保します。 バイナリログを分析することで、データ変更操作を取得できます。 このモードは、データ伝送サービス (DTS) を使用してソースから DataHub にデータを同期し、次に Hologres にデータを同期する場合に適用できます。 この場合、DataHub はバイナリログと同等です。 説明 DTS を使用して DataHub にデータを同期する場合、同期されたデータ列に追加の列が追加され、データ操作が記述されます。 追加の列の名前は、宛先 DataHub トピックの既存の列の名前と競合する可能性があります。 競合を防ぐ方法の詳細については、追加列の命名規則を変更するをご参照ください。 |
同期ポリシー
ポリシー | 説明 |
置換 | データを書き込むときに主キーの競合が発生した場合、元のデータは新しいデータで上書きされます。 これにより、ソースデータベースと宛先データベース間のデータの整合性が確保されます。 |
無視 | データを書き込むときに主キーの競合が発生した場合、新しいデータは無視されます。 データは更新されません。 これにより、データの重複書き込みを防ぎ、宛先データベースのデータ整合性を確保します。 |
注意事項
DataHub の TUPLE タイプのトピックのデータのみを Hologres に同期できます。
Hologres インスタンスのパーティションテーブルにデータを書き込む前に、子テーブルを作成する必要があります。 詳細については、CREATE PARTITION TABLEをご参照ください。
各 DataConnector は接続を占有します。 各 DataConnector が占有する接続数は、DataHub トピックのシャード数です。
準備
DataHub をアクティブ化し、DataHub でデータソースを準備します。 詳細については、DataHub を使い始めるをご参照ください。
Hologres インスタンスを購入し、テーブルを作成します。 この例では、テーブル
lineitemが使用されます。 詳細については、Hologres インスタンスを購入するおよびHologres に接続してデータをクエリするをご参照ください。次の表は、DataHub と Hologres のデータ型間のマッピングを示しています。
DataHub
Hologres
TINYINT
SMALLINT
SMALLINT
SMALLINT
INTEGER
INTEGER
BIGINT
BIGINT
FLOAT
REAL
DOUBLE
DOUBLE PRECISION
DECIMAL
DECIMAL
STRING
TEXT
BOOLEAN
BOOLEAN
TIMESTAMP
TIMESTAMPTZ
たとえば、次のステートメントを実行してテーブルを作成できます。
BEGIN; CREATE TABLE lineitem ( L_ORDERKEY BIGINT NOT NULL, L_PARTKEY BIGINT NOT NULL, L_SUPPKEY BIGINT NOT NULL, L_LINENUMBER BIGINT NOT NULL, L_QUANTITY DECIMAL(20,10), L_EXTENDEDPRICE DECIMAL(20,10), L_DISCOUNT DECIMAL(20,10), L_TAX DECIMAL(20,10), L_RETURNFLAG TEXT, L_LINESTATUS TEXT, L_SHIPDATE TIMESTAMPTZ, L_COMMITDATE TIMESTAMPTZ, L_RECEIPTDATE TIMESTAMPTZ, L_SHIPINSTRUCT TEXT, L_SHIPMODE TEXT, L_COMMENT TEXT ); caLL set_table_property('lineitem', 'orientation', 'column'); COMMIT;
DataConnector を作成する
DataHub コンソールにログインします。 作成したトピックをクリックして、トピックの詳細ページに移動します。
右上隅にある [+ Connector] をクリックします。
表示されたパネルで、[hologres] をクリックします。 [connector の作成] パネルで、パラメーターを構成します。
パラメーター
説明
インスタンス
Hologres インスタンスの ID です。 Hologres コンソールにログインし、必要な Hologres インスタンスの ID をコピーできます。
データベース
DataHub データの同期先となる Hologres データベースの名前です。
テーブル
DataHub データの同期先となる Hologres テーブルの名前です。 この例では、テーブル
lineitemが使用されます。主キーの競合ポリシー
主キーの競合が発生した場合のデータ更新ポリシーです。 有効な値:
replace: データを書き込むときに主キーの競合が発生した場合、元のデータは新しいデータで上書きされます。 これがデフォルト値です。
ignore: データを書き込むときに主キーの競合が発生した場合、新しいデータは無視されます。 データは更新されず、元のデータが引き続き使用されます。
データ同期ポリシーの詳細については、このトピックの同期ポリシーをご参照ください。
同期シナリオ
データ同期に使用されるモードです。 有効な値:
default: データは 1 つずつ挿入されます。 これがデフォルト値です。
dts: DTS を使用して DataHub にデータを同期し、追加列の新しい命名規則を有効にする場合に、このモードを使用します。
dts_old: DTS を使用して DataHub にデータを同期し、追加列の新しい命名規則を有効にしない場合に、このモードを使用します。
データ同期モードの詳細については、このトピックの同期モードをご参照ください。
インポートフィールド
Hologres に同期するフィールドです。 ビジネス要件に基づいて、DataHub トピックのフィールドの全部または一部を同期できます。
認証モード
Hologres インスタンスへのアクセスを認証するモードです。 デフォルト値: AccessKey。
AccessKey ID
Hologres インスタンスへのアクセスに使用する Alibaba Cloud アカウントの AccessKey ID です。 AccessKey ID は、アクセスキーペアページから取得できます。
Accesskey シークレット
Hologres インスタンスへのアクセスに使用する Alibaba Cloud アカウントの AccessKey シークレットです。 AccessKey シークレットは、アクセスキーペアページから取得できます。
タイムスタンプ単位
DataConnector がデータ同期に使用するタイムスタンプ単位です。 有効な値:
MICROSECOND: これがデフォルト値です。
MILLISECOND。
SECOND。
[作成] をクリックして、DataHub から Hologres にデータを同期します。
DataConnector を作成した後、トピックの詳細ページの [同期タスク] タブで DataConnector のステータスを表示できます。
Hologres で同期されたデータをクエリします。
Hologres インスタンスを開発ツールに接続し、ツールを使用して、データが Hologres インスタンスにリアルタイムで同期されているかどうかを確認します。 開発ツールの詳細については、概要をご参照ください。 たとえば、次のステートメントを実行して、同期されたデータをクエリできます。
SELECT COUNT(*) FROM lineitem;
一般的なエラーとトラブルシューティング
このセクションでは、Hologres の使用時に報告される一般的なエラーと、これらのエラーの解決策について説明します。
エラー 1
問題の説明
エラーメッセージ: 宛先スキーマにインポートフィールドが見つかりません。原因
宛先 Hologres テーブルに、DataConnector でインポートフィールドとして指定されたフィールドが含まれていません。
[同期シナリオ] パラメーターが default に設定されていますが、DTS を使用して DataHub にデータを同期するときに生成される追加の列が、DataConnector でインポートフィールドとして構成されています。
解決策
Hologres テーブルを作成し、不足しているフィールドを追加します。 また、DataConnector の [インポートフィールド] パラメーターを変更して、追加のフィールドを削除することもできます。
DataConnector を作成し、[同期シナリオ] パラメーターを dts または dts_old に設定します。
エラー 2
問題の説明
エラーメッセージ: 列タイプが Holo 列と一致しません。原因
DataHub トピックのフィールドのデータ型が、Hologres テーブルのフィールドのデータ型と一致しません。
解決策
Hologres テーブルを作成し、データ型のマッピングに基づいてテーブルに有効なデータ型を指定します。
エラー 3
問題の説明
エラーメッセージ: インポートされていない列 xxx は null を許可せず、デフォルト値がありません。原因
宛先 Hologres テーブルには、DataConnector でインポートフィールドとして指定されていないフィールドがいくつか含まれています。 これらのフィールドには not null プロパティが構成されていますが、デフォルト値は構成されていません。
解決策
Hologres テーブルを作成します。 DataConnector でインポートフィールドとして指定されていないフィールドについては、フィールドにデフォルト値を構成するか、not null プロパティを構成しないでください。