# Data Tank 1.0 から 2.0 への置き換え

この記事では、Data Tank を Data Tank 2.0 に置き換える際の Integration に関する変更点について説明します。Treasure Data はセキュリティと機密データの保護への取り組みの一環として、手順を開始する前にドキュメント全体をご確認いただくことを推奨します。

## Data Tank と Data Tank 2.0 の機能の違い

このセクションでは、Data Tank と Data Tank 2.0 の機能の差異について説明します。

| 機能 | ステータス | Data Tank 1.0 | Data Tank 2.0 |
|  --- | --- | --- | --- |
| エンドポイント | 差異あり | 静的 IP アドレス | ライタエンドポイント URI。関連する IP アドレスは固定できません |
| データベース名 | 差異あり | `datatank` | `aciddb` |
| アクセス制御（ロールとスキーマ） | 差異あり | Treasure Data が `tank_user` および `tank_integration_user` アカウントを提供 | ユーザーとスキーマは **Management UI** で作成（アカウントは **Access Keys** と呼ばれます）。アクセス制御は UI 内で管理 |
| DDL ステートメント | 差異あり | 追加コマンド不要 | DDL 実行前に `SET ROLE _owner_aciddb_<schema_name>` を実行する必要があります |
| SSL 暗号化 | 差異あり | 強制されない | すべての接続で SSL が必要 |
| メンテナンスウィンドウ | 差異あり | 定期的なウィンドウなし。必要に応じてサポートが調整 | お客様が週次メンテナンスウィンドウを定義。その時間帯にパッチが適用されます（[Data Tank 2.0 のメンテナンスについて](/ja/products/control-panel/datatank/understanding-data-tank-2-0-maintenance)を参照） |
| IP Allowlist のサイズ | 差異あり | 制限なし | 最大 200 件の IP アドレス |
| エンジン動作の差異 | 差異あり | PostgreSQL 12 ベース | Aurora PostgreSQL 12.13 ベース。一部エンジンの差異があります |
| カスタムポート番号 | 非対応 | デフォルト 5432。サポート経由でカスタマイズ可能 | ポート 5432 に固定 |
| ポートフォワーディング | 非対応 | サポートがポート 80、443、または 5439 を追加可能 | 非対応 |
| IPv6 Allowlist | 非対応 | IPv6 をサポート | IPv6 は非対応 |
| 拡張機能 | 非対応 | `plpgsql`、`pgcrypto`、`cstore_fdw`、`mysql_fdw`、`tds_fdw`、`foreign_table_exposer` がデフォルトでインストール済み | `plpgsql` と `pgcrypto` のみ利用可能。`SERVER`、`FOREIGN DATA WRAPPER`、`FOREIGN TABLE`、`USER MAPPING` オブジェクトは移行できません |
| Management UI | 新機能 | 利用不可 | 設定、ロール、スキーマの管理およびモニタリングのための Web インターフェース |
| ログ収集 | 新機能 | 利用不可 | PostgreSQL ログを **Management UI** で確認可能 |
| モニタリング | 新機能 | DataDog リンク経由でダッシュボードを提供 | **Management UI** でダッシュボードを直接利用可能 |


Data Tank 2.0（Aurora PostgreSQL 12.13）でサポートされている拡張機能の完全なリストについては、[AWS Aurora PostgreSQL 拡張機能ドキュメント](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Extensions.html#AuroraPostgreSQL.Extensions.12)を参照してください。

Data Tank 1.0 から 2.0 への移行概要
Management UI では、データベース設定の構成、スキーマおよびアクセスキーの作成・管理、ログやダッシュボードの確認を単一のインターフェースから行うことができます。

| レガシーモニタリング | Management UI モニタリング |
|  --- | --- |
|  |  |


## Data Tank の Integration を Data Tank 2.0 の Integration に変更する

以下の 2 つの機能を使用して、Data Tank からレコードをインポートしたり、Hive/Trino クエリの結果を Data Tank にエクスポートしたりすることができます。

- [PostgreSQL からのインポート](/int/postgresql-import-integration)
- [PostgreSQL へのエクスポート](/int/postgresql-export-integration)


これらの Integration を使用するには、ほとんどの場合、事前に Authentication を作成する必要があります。

## Data Tank の Authentications

以下の **Authentications** がデフォルトで用意されています。以下の両方の **Authentications** において、データベースユーザーとして `tank_integration_user` が使用されます。

- `datatank`
- `datatank_cstore`


Data Tank のデフォルト Authentications
ユーザー定義の Authentications を作成することもできます。

### Data Tank 2.0 の Authentications

Authentications はデフォルトでは用意されていません。新しい Authentications を作成する必要があります。

### Data Tank からのインポート

Data Tank からインポートするには、Bulk Load ジョブを実行する必要があります。このタイプのジョブを実行するには、以下のいずれかを使用します。Data Tank を Data Tank 2.0 に置き換える場合は、インポート元を Data Tank から Data Tank 2.0 に変更する必要があります。

- Sources（Treasure コンソール）
- CLI（Toolbelt、Workflow の `td_load>` オペレーター）


### Sources

Data Tank 用の既存の **Sources** がある場合、Treasure コンソールで Authentication に接続されている Sources を以下のように確認できます。画像の赤い矢印は、*databank* という名前の Authentication に関連付けられている Sources の数を指しています。

Treasure コンソールで Authentication に接続されている Sources
既存の Source が Data Tank 2.0 からインポートする場合、各 Source の Authentication は置き換えられないため、Data Tank 2.0 用の Authentication に関連付けられた新しい Source が必要です。Data Tank 2.0 からインポートする新しい Source を作成する際は、既存の Source のスケジュール実行を停止することを推奨します。

### CLI（TD Toolbelt）

Authentication を使用して Plazma DB にインポートするために CLI を使用する場合、以下のように YAML ファイルで `td_authentication_id` オプションを使用します。インポート元を変更するには、このオプションに設定されている Authentication ID を変更する必要があります。また、`database` オプションなど他のオプションも変更する必要があります。


```yaml
in:
  type: postgresql
  td_authentication_id: <your_authentication_id>
  ...
```

YAML ファイルで `td_authentication_id` オプションを使用していない場合、以下の例のように Authentication の代わりに Data Tank の認証情報が指定されています。その場合は、Data Tank 2.0 の認証情報に置き換えてください。


```yaml
in:
  type: postgresql
  host: xx.xxx.xxx.xxx
  user: tank_integration_user
  password: xxxxx
  ...
```

## Hive/Trino の結果を Data Tank にエクスポートする

以下の機能のいずれかを使用して、Hive/Trino ジョブの結果を Data Tank にエクスポートできます。これらの機能を使用して Data Tank にエクスポートしている場合は、エクスポート先を Data Tank 2.0 に変更する必要があります。

- Treasure コンソールのクエリエディター
- Workflow の `td_run>` オペレーター
- Workflow の `td>` オペレーター
- CLI（Toolbelt）
- REST API


### Treasure コンソールのクエリエディター

以下のように **Export Results** を選択してエクスポート設定を構成できます。次に、既存の設定を置き換えるために新しい **Authentication** で再設定する必要があります。既存のエクスポート設定を削除したら、Data Tank 2.0 用の **Authentication** を使用して新しいエクスポート設定を行ってください。

クエリエディターでの Export Results 設定
DDL が必要な場合は、以下のように **Set Role** オプションに `_owner_<database_name>_<schema_name>` を設定する必要があります。

DDL 用の Set Role オプション設定
### Workflow の td_run> オペレーター

このワークフローオペレーターは既存の保存済みクエリを呼び出します。そのため、クエリエディターの場合と同じ操作を行う必要があります。

### Workflow の td> オペレーター

このワークフローオペレーターでは、以下のように `result_connection` パラメーターに **Authentication** 名を指定します。このパラメーターを Data Tank 2.0 用の **Authentication** に置き換えるとともに、他のパラメーターも変更してください。


```yaml
+export_task:
  td>: queries/sample.sql
  result_connection: data_tank # Authentication 名
  result_settings:
    database: datatank
    table: ...
    ...
```

また、DDL が必要な場合は、以下のように `set_role` オプションを指定する必要があります。


```yaml
+export_task:
  td>: queries/sample.sql
  result_connection: <your_authentication_name>
  result_settings:
    database: aciddb
    table: ...
    schema: <schema_name>
    set_role: _owner_aciddb_<schema_name>
    ...
```

`result_connection` に Authentication を指定しない場合は、以下のように `result_connection` と `result_settings` の代わりに `result_url` パラメーターを使用してください。


```yaml
+export_task:
  td>: queries/sample.sql
  result_url: postgresql://tank_integration_user:xxx@......
```

この場合、`result_url` パラメーターの値を変更してください。

また、DDL ステートメントが必要な場合は、クエリパラメーターとして `set_role=_owner_aciddb_<schema_name>` を追加してください。

### エクスポート用 CLI（Toolbelt）

CLI では、エクスポート情報を URL 形式で指定します。

たとえば、以下のように `td query` コマンドを使用してクエリの結果を Data Tank にエクスポートできます。エクスポート情報を `-r` オプションに直接指定するため、Data Tank 2.0 の設定を指定してください。


```bash
td query -d kazzy_test -w -r "postgresql://tank_integration_user:<password>@<ip_address>/datatank/<table_name>?mode=replace" "SELECT 1 AS col1;"
```

## Workflow の pg> オペレーターを使用して Data Tank に接続する

以下の例のように、`pg>` オペレーターを使用して Workflow から Data Tank で任意のクエリステートメントを実行できます。


```yaml
_export:
  pg:
    host: ....
    port: 5432
    database: datatank
    user: tank_integration_user
    schema: public

+access_data_tank:
  pg>: queries/sample.sql
  ...
```

Data Tank 2.0 でクエリステートメントを実行するには、`pg>` オペレーターのオプションに設定されている値を変更する必要があります。DDL を使用する場合は、DDL ステートメントの前に `SET ROLE` ステートメントを追加する必要があります。

## サードパーティツールを使用して Data Tank に接続する

サードパーティツールを使用して Data Tank に接続するには、ツールに接続情報を指定します。接続情報を Data Tank 2.0 のものに置き換えてください。

## 参考資料

- [Data Tank 2.0 について](/ja/products/control-panel/datatank/about-data-tank-2-0)
- [Data Tank 2.0 と Plazma DB の Integration](/ja/products/control-panel/datatank/about-integrating-data-tank-2-0-with-plazma-db)
- [Data Tank 2.0 のメンテナンスについて](/ja/products/control-panel/datatank/understanding-data-tank-2-0-maintenance)
- [Management UI を使用した Data Tank 2.0 の管理](/ja/products/control-panel/datatank/managing-data-tank-2-0-with-the-management-ui)