この記事はAmazon Redshiftのアップデート情報からどのようなアップデートがあったのかを紹介するものです。
今後も定期的に行いたいと思っております。
今回紹介するものは、2022-04-20にリリースされたものです。
https://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/cluster-versions.html#cluster-version-168
アップデート一覧
-
- Amazon Redshift ML の線形学習モデルタイプのサポートを追加しました。
- SQL トランザクション分離レベルの SNAPSHOT オプションを追加しました。
- VARBYTE および VARCHAR データの新しいハッシュアルゴリズムとして farmhashFingerprint64 を追加しました。
- マテリアライズドビューの増分更新で AVG 関数をサポートします。
- Redshift Spectrum の外部テーブルの相関サブクエリをサポートします。
- 初期状態のクエリパフォーマンスを向上させるために、Amazon Redshift は、特定のテーブルにおける単一列のプライマリキーを分散キーとして自動的に選択します。
Amazon Redshift ML の線形学習モデルタイプのサポートを追加しました。
https://docs.aws.amazon.com/sagemaker/latest/dg/linear-learner.html
上記をRedshift MLがサポートしたというものです。
Redshift内のデータをSQLで直接利用できることから、容易に機械学習への応用ができるといったものです。
Redshift MLの詳細については今後解説できればと思います。
SQL トランザクション分離レベルの SNAPSHOT オプションを追加しました。
これまではトランザクション分離レベルは「SERIALIZABLE」のみが利用できました。
これまでは、同時書き込みを行う際にトランザクションが分離できず、エラーが発生することがあり困ったかたも多かったのではないでしょうか。
新たな「SNAPSHOT ISOLATION」を利用することでそういったリスクを低減できるようになるようです。
近年では、日次取り込みよりさらに頻度高く同時書き込みを行うワークロードも多くなっており大変うれしいアップデートです。
一方で、利用するにはDBレベルでの変更を行う必要ががあるようで、検証を引き続き行いたいです。
(CREATE DB, ALTER DBより変更可能)
https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_DATABASE.html
VARBYTE および VARCHAR データの新しいハッシュアルゴリズムとして farmhashFingerprint64 を追加しました。
md5関数などのような文字列から別の値を生成するハッシュ関数に新たなアルゴリズムが増えました。
https://docs.aws.amazon.com/ja_jp/redshift/latest/dg/r_FARMFINGERPRINT64.html
こちらは聞いたことはなかったのですが、Googleより2004年に発表された、非暗号化アルゴリズムで、高速なハッシュアルゴリズムであるようです。
マテリアライズドビューの増分更新で AVG 関数をサポートします。
これは素直にうれしいですね。
増分更新にはまだ制約が多く、利用できるケースは限られますが、魅力的なものではあるので今後もウォッチしていきたいです。
増分更新の制約に関してはこちらをご覧ください。
https://docs.aws.amazon.com/ja_jp/redshift/latest/dg/materialized-view-refresh-sql-command.html#mv_REFRESH_MARTERIALIZED_VIEW_limitations
Redshift Spectrum の外部テーブルの相関サブクエリをサポートします。
していなかったのか、という驚きがありました。
(現在我々はRedshift Spectrumは塩漬けデータに対して利用することが多かった)
一方でRedshiftとしての相関サブクエリの制限はあると思われます。
https://docs.aws.amazon.com/ja_jp/redshift/latest/dg/r_correlated_subqueries.html
初期状態のクエリパフォーマンスを向上させるために、Amazon Redshift は、特定のテーブルにおける単一列のプライマリキーを分散キーとして自動的に選択します。
Redshiftにprimary keyあったのか?と思われるかもしれません。
Redshiftではprimary key制約(一意制約など)は多くは、テーブル作成時に定義自体はできるものの制約としては機能しないものでした。
定義することで、クエリプランナーが利用するというものでした。
https://docs.aws.amazon.com/ja_jp/redshift/latest/dg/t_Defining_constraints.html
このアップデートでは、そのprimary key制約をつけることで、自動的に分散キーに指定してくれるというものです。
多くの場合で主キーをもとにjoinなどを行うため、パフォーマンスが上がる可能性がある、ということでしょう。
こういった自動でパフォーマンスの調整をしてくれるような機能がここ数年で増えており、確実に便利になっていることを感じます。
まとめ
簡単な紹介でしたが以上となります。
気になるアップデートに関しては深ぼって紹介できればと思います。
今後もAmazon Redshiftのみならずデータにかかわるサービス・技術的なトピックを配信していこうと思うのでご興味あれば見ていただければ幸いです。
弊社ではTableauやGCP/AWSなどのパブリッククラウドを使ったデータ分析基盤構築コンサルティングサービスやGoogleAnalytics/AdobeAnalyticsなどの各Martechツールの導入実装コンサルティングサービスを提供しております。
お問い合わせはこちらからどうぞ。