Amazon Redshiftは、今年2月に一般公開されて以降、継続して多くの機能をリリースし、注目され続けています。今年11月中旬にラスベガスで開催されたAmazon Web Services(AWS)最大のイベントである re:Inventでも数々の新機能が発表されました。
機能追加や機能改善を通して、ますます使いやすくなっていくAmazon Redshiftですが、実際どう使いやすくなったかは、発表文を見てもなかなかわかりづらいかもしれません。本シリーズではAmazon Redshiftへ追加された機能の中でも特に便利なものをピックアップしていき、Redshiftに関する開発者やデータアナリスト向けの便利なTipsも紹介していきたいと思います。
今回のre:Inventのキーノートセッションでも言及がありましたが、Amazon Redshiftの機能開発の速さは特筆すべきものです。一般公開後発表されたアップデートだけでも、ざっとこれだけの数があります。
Automated cross-region Snapshots |
Remote loading |
Ability to configure how tables are distributed |
Approximate Count Distinct |
Workload Memory Management |
Key Rotation |
Database Auditing and Logging |
Hardware Security Module (HSM) Support |
SNS Notification for Redshift events |
Data Pipeline support for Redshift |
CONVERT_TIMEZONE with automatic daylight savings time adjustment |
SPLIT_PART function for splitting strings |
STL_USERLOG for logs of changes to database users are made |
JSON string parsing. |
Regular expressions in conditional expressions. |
Cursors for ODBC connections. |
Replacement of invalid UTF-8 characters. |
Support for 4-byte UTF-8 characters. |
IAM resource-level permissions. |
Restore progress metrics. |
COPY from CSV format. |
Workload Management (WLM) enhancements. |
Automatic date, time, and format recognition for COPY. |
New FUNC_SHA1, MD5, and CRC32 functions. |
Snapshot sharing between AWS accounts. |
ACCEPTINVCHAR option for COPY |
CSV option for COPY |
New COPY options 'auto' and 'epochsecs' |
max_execution_time to limit the maximum query time |
Four-byte UTF-8 characters support |
Validating input data |
その中でもまずは、re:Inventで発表された機能から一緒に見ていきましょう。
クロスリージョンでの自動スナップショットコピー(Automated Cross-Region Snapshot Copy)
これまで、Redshiftで出力したスナップショットのインポートは、同じリージョンのRedshiftに限定されており、スナップショットを用いて他のリージョンにRedshiftのデータを移行することができませんでした。リージョン間のデータ移行の方法としては、これまでUNLOADコマンドを利用して同リージョンのS3へエクスポートし、新たなRedshiftのリージョンのS3バケットへデータをコピー、新たなRedshiftに対してCOPYを実行、というステップが必要で、若干手順が面倒でデータ量が多い場合は時間がかかるものでした。
今回のこの機能の発表で、他のリージョンへのRedshiftクラスタの移動がより簡単にできるようになりました。また、もともとのRedshiftのリージョンで何か不測の事態が起きた時も、自動スナップショットを設定しておくことによって比較的新しい状態での復元も可能となりました。
リモート・ローディング(Remote Loading)
今までRedshiftへのデータのロードは、S3かAmazon DynamoDBからのCOPYコマンドの実行に限られていましたが、新たにSSHでのリモート・ローディングがサポートされるようになりました。この機能は今までのデータを「プッシュ」するやり方とは逆の、「プル」型のデータロード方法となります。つまり、Redshiftクラスタ側からSSHコマンドを発行し、起動されたユーザサーバ側のプロセスがデータを生成してその結果を元に、Redshiftがロードするという、全く新しい方法です。
この機能により、たとえばHadoopやCassandraなどが生成するデータを直接読みに行くことができますので、既存のデータベース資産がある場合などには特に有効です。S3へのコピーステップも減らすことができるので、より効率的にロードできる可能性があります。
ただ、現時点では使いはじめるための設定ステップが複雑 (Manifest JSONをS3に置く・AWSからの直接のSSHアクセスを許可するためセキュリティ上の作業を行う、など)なので、上級者用の機能という位置づけのようです。
Amazon Kinesis integration
re:Inventで発表されたビッグデータ関連の大きなものとして、Amazon Kinesisがあります。Kinesis自体リミテッドプレビューという位置づけで、まだ一般公開はされていないのですが、既にRedshiftとのインテグレーションの可能性についても言及されています。詳細についてはまだ情報が少ないものの、Amazon Kinesisの登場により、ストリーミングデータのビッグデータ分析がよりリーズナブルな価格で提供されるようになりそうです。Kinesisを利用してイベントデータストリームを処理することで、ほぼリアルタイムにメトリクス分析やデータ・アナリティクスを行うことが可能となるようです。
他にもre:Inventにて以下の機能追加が発表されました。それぞれの機能について機能説明とコメントをしています。
テーブルの分散方法の指定が可能に(Distributed Tables)
Redshiftにデータを保存する際、クラスタ上のどこ(どのスライス)にデータを保存するかで、クエリ実行の速度に差が出てきます。そこでRedshiftではRedshift optimizerを使って高速なクエリ実行に適切な位置にデータを一度保存し、クエリが実行される度に、さらにクエリ速度を高められるようデータを分散させています。
- コメント
- 今回の発表でその分散方法のカスタマイズが可能となりましたので、データの分散方法を予めオプティマイズしたいようなヘビーユーザの方向け機能です。
ユニークレコード数の概算 (Approximate Count Distinct)
この機能では「だいたい」のユニーク・レコード数を出すことができます。たとえばクエリを打つ際にselect approximate count( distinct user_id ) from actionsとすることで、テーブルが非常に大きい場合でもかなり早いクエリ実行を行うことができます。誤差はおよそ2%程度の範囲内に収まるようです。
- コメント
- トラブル調査時などはすぐにだいたいの数字を知りたい場合が多いと思うので、重宝しそうですね。
ワークロード・キューにおけるメモリ・マネジメント(Workload Queue Memory Management)
Redshiftではデフォルトで1キューが設定されており、5クエリまで同時に実行できるようになっています。設定を変更することにより、7キューまで追加することができ、各キューに対して同時に実行できるクエリ数、ユーザーリスト、タイムアウトまでの秒数、クエリグループなどが設定できました。これに加え、今回キューごとのメモリ利用率の最大値も設定も可能となりました。
- コメント
- Workload Management機能もアップデートが著しいですね。この辺り、実ユーザの意見をすぐに反映するところがRedshiftの強みと言えそうです。
暗号化キーの入れ替え(Key Rotation)
Redshiftではデータを暗号化する際、3つのキーが利用されていますが、セキュリティポリシーによっては暗号化キーを定期的に入れ替える必要があるかもしれません。そこで、今回の発表以降は、これらの暗号化キーをスナップショットも含めて、入れ替えることができるようになりました。
暗号化キーの入れ替え中は、クラスタのステータスが「ROTATING_KEYS」となり、一時的に利用ができなくなります。
- コメント
- 何気なく「入れ替え」と書かれていますが、暗号化されている全データが対象となるので、かなりパワフルな機能と思われます。明らかに、とても厳しいセキュリティポリシーを対象としているようですね。
HSMの高度なサポート(HSM Support)
今回の発表でHardware Security Module(HSM)内にencryption keyを保存することが可能となりました。これにより、HSMに必要な鍵管理を、アプリケーションやデータベースから分離することができます。
- コメント
- これも、高度なセキュリティ機能です。やはり、Redshift自体「そのようなセキュリティポリシーが必要な業種」への利用が広がっているということでしょう。
データベース監査・ロギング(Database Auditing and Logging)
Redshiftではクラスタへのユザーアクセス等に関する情報のログをとっており、セキュリティ・チェックやトラブルシューティングの際には便利です。今回の発表以降は、これらのログをS3にダウンロードし容易にアクセスすることができるようになりました。
SNS Notification
Redshiftではクラスタに起こるさまざまな「イベント」をトリガーとして、様々な通知を受け取ることができます。通知にはmanagement、monitoring、security、configurationの4種類が存在し、重要度はinfoとerrorの2段階、イベントはcluster、snapshot、security group、parameter groupsに対するおよそ40もの異なるイベントが用意されています。AWSコンソールより、これらのイベントが起きた際に、たとえばメール通知を受け取るよう設定が可能です。
- コメント
- この2点は、よりデータベース上で何が起こっているかがわかるようになる(静的/動的)機能ですね。広く使われる商用クラウドデータウェアハウスというのは歴史上でも初めてのことでしょうから、オンプレミスでの要求はもちろん、さらに高度な機能を使うこと(Notificationなど)ができるのがRedshiftの醍醐味かもしれません。
上記の内容については、AWS Japanのブログでもより詳細に見ることができるようです。
Amazon Redshift 日本語ドキュメント
これまで英語のみだったAmazon Redshiftリファレンスですが、ついに先日、日本語版のドキュメントが公開されました。Redshiftの管理や運用に役立つポイントが盛り沢山なのでぜひご利用ください。
- Amazon Redshift 文書
- URL:http://aws.amazon.com/jp/documentation/redshift/
最後に
Amazon Redshiftは現時点で最も進化が早いAWSサービスと言われています。どんどん進化するRedshiftの最新情報をタイムリーにこれからも届けていきますので、ご期待ください!
筆者が所属するHapyrusでは、Amazon Redshiftを使いはじめるための継続データインテグレーションサービスFlyData for Amazon Redshiftを提供しています。また、Amazon Redshiftの導入コンサルティングも行っていますので、興味がある方はぜひお気軽にinfo@hapyrus.comにお問い合わせください。