Tier有りメーターのIPU (Informatica Processing Unit) 換算早見表（データ統合編）

こんにちはMitzです。IPU (Informatica Processing Unit) の計算に関してインフォマティカが公開しているドキュメントは二つあって、私の日々の業務でバイブルとなっています。

- [Informatica Cloud and Product Description Schedule](https://www.informatica.com/content/dam/informatica-com/en/docs/informatica-cloud-and-product-description-schedule.pdf)
- [Informatica Cloud Services Measurement Guide](https://knowledge.informatica.com/s/article/DOC-19140?language=en_US)

オンラインマニュアルには各サービスでの利用量に応じた具体的な消費IPU数の記載が無いため、IPUの計算について理解を得るにはこれら二つの資料に目を通す事が近道になります。今後の価格改定によって見直しが入る可能性もありますが、自分自身の作業効率化のためにも代表的なメーターについて換算早見表を作成してみました。
# IPU消費の基本的な考え方 
IDMCの各サービスにはそれぞれメーターが定義されており、対応するスカラの測定単位に応じて消費するIPU数が決まっています。このメーターとかスカラとか測定単位に加えて、さらにメーターにはTier（層）が設定されているものがいくつも存在します。Tier（層）は単一請求期間内で使えば使うほど割安に使えるようになるというCloudのサブスクリプションにおいては一般的な仕組みだと思いますが、この存在がIPUの計算を複雑化させています。

因みに、到達した上位Tier（層）のIPU消費レートは当該請求期間のみ有効であり、翌請求期間は最下位のTier（層）から開始する事になります。

# データ統合(CDI : Cloud Data Integration)
データ統合についてはとりあえずこの3つを押さえておけば十分かと思います。
- Data Integration
- SQL ELT (旧 Advanced Pushdown Optimization)
- Data Integration - Change Data Capture
## Data Integration
おそらく一番接する事が多いメーターなのですが、スカラがCompute Unitsのためビギナーにはとっつきにくいメーターでもあります。Informatica Cloud and Product Description Scheduleには下記の通り記載されています。

- Scalar: Compute Units
- Metric: Per Hour
- IPU Per Metric Unit:
    - 0.16 for the first 2,000 Hours
    - 0.025 for > 2,000 Hours

これは、2000時間以内は1時間毎に0.16 IPUを消費し、2000時間を超えた場合は1時間毎に0.025 IPUを消費するという意味です。

| Compute Units<BR> Per Hour | 必要IPU数 | 消費レート |
| :---: | :---: | :---: |
| 1000 | 160 | 0.16 IPU / Hour |
| 2000 | 320 | ↑ |
| 3000 | 345 | 0.025 IPU / Hour |
| 4000 | 370 | ↑ |
| 5000 | 395 | ↑ |
| 6000 | 420 | ↑ |

最初のTierでは2000時間処理するのに320 IPU必要だったのが、次のTierでは同じ2000時間処理するのに必要なのは50 IPUになっています。これをグラフ化すると下記の通りです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/786891/2022032d-1b10-0838-c28d-bb9a65064a1f.png)

### Data Integrationにおける、Compute Unitsの計算について
因みに、Data Integrationにおける、Compute Unitsの計算は下記の通りです。 
- 使用された論理コア数が4より大きい場合 : ジョブの実行時間 * 使用された論理コア数 ÷ 4
- 使用された論理コア数が4以下の場合 : ジョブの実行時間 * 1
::: note alert
誤解を招くポイントにもなっていますが、セキュアエージェントに搭載された論理コア数ではなく、ジョブの実行時に使用された論理コア数が計算時に採用されます。実行前に使用される論理コア数を見積もることは出来ませんし、コア数を指定してジョブを実行する事もできません。
:::
## SQL ELT (旧 Advanced Pushdown Optimization)
Informatica Cloud and Product Description Scheduleには下記の通り記載されています。100万行処理する毎に消費するIPUが定義されているのですが、換算する単位が日米で異なるため必要IPU数を算出するのはなかなか面倒です。
- Scalar: Rows Processed
- Metric: Per Million Rows
- IPU Per Metric Unit:
    - 0.048 for the first 100M Rows
    - 0.010 for 100M - 10B Rows
    - 0.002 for > 10B Rows

これは、1億行以内は100万行毎に0.048 IPUを消費し、1億行を超えて100億行以内は100万行毎に0.010 IPUを消費し、100億行を超えた場合は100万行毎に0.002 IPUを消費するという意味です。

| Rows<BR>Per Million Rows | 必要IPU数 | 消費レート |
| :---: | :---: | :---: |
| 1M | 0.048 | 0.048 IPU / M Rows |
| 10M | 0.48 | ↑ |
| 100M | 4.8 | ↑ |
| 200M | 5.8 | 0.01 IPU / M Rows |
| 1000M(1B) | 13.8 | ↑ |
| 10B | 103.8 | ↑ |
| 20B | 121.8 | 0.048 IPU / M Rows |
| 30B | 139.8 |  ↑ |

10B行処理するのに最初と次のTierで103.8 IPU必要だったのが、最上位のTierでは同じ10B行処理するのに必要なのは18 IPUになっています。これをグラフ化すると下記の通りです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/786891/716772c8-eb0e-618c-d5c3-d46ea13f0a44.png)

### SQL ELT (旧 Advanced Pushdown Optimization)における、Rowsの計算について
ターゲット書き込まれた行数で決まります。ソースから読み込まれた行数は影響しません。 

## Data Integration - Change Data Capture
PowerExchangeとの併用が必須なCDIでの変更データキャプチャについて、Informatica Cloud and Product Description Scheduleには下記の通り記載されています。

- Scalar: Rows
- Metric: Per Million Rows
- IPU Per Metric Unit:
    - 4.88 for the first 15M Rows
    - 0.41 for 15M - 750M Rows
    - 0.04 for > 750M Rows

これは、1千5百万行以内は100万行毎に4.88 IPUを消費し、1千5百万行を超えて7億5千万行以内は100万行毎に0.041 IPUを消費し、7億5千万行を超えた場合は100万行毎に0.04 IPUを消費するという意味です。

| Rows<BR>Per Million Rows | 必要IPU数 | 消費レート |
| :---: | :---: | :---: |
| 1M | 4.88 | 4.88 IPU / M Rows |
| 5M | 24.4 | ↑ |
| 10M | 48.8 | ↑ |
| 15M | 73.2 | ↑ |
| 30M | 79.35 | 0.041 IPU / M Rows |
| 150M | 128.55 | ↑ |
| 300M | 190.05 | ↑ |
| 750M | 374.55 | ↑ |
| 765M | 375.15 | 0.004 IPU / M Rows |
| 780M | 375.75| ↑ |

15M行処理するのに最初のTierでは73.2 IPU必要だったのが、次のTierでは6.15 IPU、最上位のTierでは必要なのは0.6 IPUになっています。これをグラフ化すると下記の通りです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/786891/9eec59c1-7c59-ddc8-dfab-83f044d5facd.png)

### Data Integration - Change Data CaptureにおけるRowsの計算について
ソースの変更ログから読み込まれた行数で決まるのですが、同一行に対して複数の変更が発生している場合には、1行としてカウントされるようです。

# おわりに
書き始めたときは他のサービスのメーターも合わせて記載つもりだったのですが、意外と時間がかかってしまった関係で、サービス毎に分割してしまいました。