パーティションについて
Dataikuのパーティション機能を利用した際に、ファイルベースの場合はパーティションごとにファイル分割されますが、DBに対してパーティション機能を利用した際は、データの持ち方やインデックスの設定などDB側に変更は加えられるのでしょうか。
また、パーティションを利用する利点として処理対象のレコードをフィルタリングすることで処理の高速化が図れることが挙げられると思いますが、DBをSnowflakeにした場合にはSnowflake側でマイクロパーティションを作成しているため、パーティションは不要という認識ですが正しいでしょうか。
処理の高速化以外のパーティション利用に関するメリットがあればご教示ください。
Comments
-
Tsuyoshi Dataiker, PartnerAdmin, Dataiku DSS Core Designer, Dataiku DSS ML Practitioner, Dataiku DSS Adv Designer, Registered Posts: 340 Dataiker以下、回答させていただきます。
Dataikuのパーティション機能を利用した際に、ファイルベースの場合はパーティションごとにファイル分割されますが、DBに対してパーティション機能を利用した際は、データの持ち方やインデックスの設定などDB側に変更は加えられるのでしょうか。
DB接続用のデータセットにパーティション機能を適用した場合、DB側のスキーマやインデックス設定は特に変更されません。Dataikuの「パーティション」機能では、定義したパーティション情報に基づいて、Dataiku側で論理的にアクセスを制御します。このDataikuのパーティション機能は、DB側で提供するパーティション機能とは独立したものとなっています。
また、パーティションを利用する利点として処理対象のレコードをフィルタリングすることで処理の高速化が図れることが挙げられると思いますが、DBをSnowflakeにした場合にはSnowflake側でマイクロパーティションを作成しているため、パーティションは不要という認識ですが正しいでしょうか。
Dataiku側のパーティション機能を利用するケースは、特定のケースに限られますので、通常は特にパーティションを設定する必要はございません(詳細は、以下ご質問への回答をご参照ください)。Snowflakeのマイクロパーティションのように、DB側で最適化の機能が提供されている場合には、その機能をご利用いただく形で良いと考えられます。
処理の高速化以外のパーティション利用に関するメリットがあればご教示ください。
Dataikuのパーティション利用を検討するケースとして、例えば以下のような例が挙げられます。
- データパイプラインを定期的にシナリオ実行する場合、毎回全てのデータを処理するのではなく、特定の日付や時間帯のデータだけを処理することにより、バッチ処理時間を短縮・効率化したい。
- 機械学習モデルを作成する場合、カテゴリー変数にパーティションを適用して、それぞれ別のモデルとして訓練・スコアリングを行うことで、各カテゴリーに対して、より最適化されたモデルを作成したい。
上記に関連して、以下のドキュメントが存在しますので、こちらもご参照いただけますと幸いです。