Amazon Web Services ブログ

Category: Database

Amazon RDS Online Seminar 第1回 「Amazon Aurora と RDS Proxy」 資料・動画及び QA 公開

先日(2020/9/10)開催しました 第1回  Amazon RDS Online Seminar「Amazon Aurora と RDS Proxy」
の資料・動画を公開しました。当日、参加者の皆様には数多くの QA を頂きありがとうございました。
頂いた QA の一部についても共有しております。

Read More

サーバーレス LAMP スタック – Part 2: リレーショナルデータベース

本投稿は AWS サーバーレス アプリケーションのシニアデベロッパーアドボケートである Benjamin Smith による寄稿です。 この投稿では、サーバーレスアプリケーションで Amazon Aurora MySQLリレーショナルデータベースを使用する方法を学びます。Amazon RDS Proxy を使用してデータベースへの接続をプールおよび共有する方法と、構成を選択する方法を示します。この投稿のコード例は PHP で記述されており、この GitHubリポジトリにあります。なお、この概念自体は、AWS Lambda でサポートされている他のランタイム言語にも適用できますので、PHP に限定しない内容としてお読みいただけます。 サーバーレス LAMP スタック このサーバーレス LAMP スタックアーキテクチャについては、この記事で説明しています。このアーキテクチャでは、PHP Lambda 関数を使用して、Amazon Aurora MySQL データベースの読み取りと書き込みを行います。 Amazon Aurora は、MySQL および PostgreSQL データベースに高いパフォーマンスと可用性を提供します。基盤となるストレージは、最大64 テビバイト(TiB)まで需要に応じて自動的に拡張されます。 Amazon Aurora DB インスタンスは、パブリックアクセスを防止するために仮想プライベートクラウド(VPC)内に作成されます。 Lambda 関数から Aurora データベースインスタンスに接続するには、同じ VPC にアクセスするようにその Lambda 関数を設定する必要があります。 RDS データベースに直接接続すると、データベースのメモリ不足が発生する可能性があります。これは、データベース接続の急増、または高速で開閉する多数の接続が原因です。これにより、クエリが遅くなり、アプリケーションのスケーラビリティが制限される可能性があります。この問題を解決するために、Amazon RDS Proxy が実装されました。 […]

Read More

新しいサーバーレス LAMP スタック – Part 1: 概要紹介

本投稿は AWS サーバーレス アプリケーションのシニアデベロッパーアドボケートである Benjamin Smith による寄稿です。 これは、PHP 開発者向けの投稿シリーズの第一弾です。このシリーズでは、PHP でサーバーレステクノロジーを使用する方法を説明します。サーバーレスアプリケーションを構築するために利用できるツール、フレームワーク、戦略や、なぜ今始めるべきかについて説明します。 今後の投稿では、Laravel や Symfony などの PHP フレームワークとともに構築された Web アプリケーションに AWS Lambdaを使用する方法を示します。Lambda を Web ホスティング機能の代替として使用することから、分離されたイベント駆動型のアプローチに移行する方法を示します。最小限のスコープの複数の Lambda 関数を他のサーバーレスサービスと組み合わせて、パフォーマンスの高いスケーラブルなマイクロサービスを作成する方法について説明します。 まずは、カスタムランタイム API を使用して Lambda で PHP を使用する方法を学びます。サンプルコードについては、この GitHubリポジトリにアクセスしてください。 サーバーレスLAMPスタック 従来の PHP アプリケーションの課題 スケーラビリティは、従来の LAMP スタックの伝統的な課題です。スケーラブルなアプリケーションとは、非常に多様なレベルのトラフィックを処理できるアプリケーションです。PHP アプリケーションは、多くの場合、必要に応じて Web サーバーを追加することにより、水平方向にスケーリングされます。これは、リクエストをさまざまな Web サーバーに転送するロードバランサーを介して管理されます。サーバーを追加するたびに、ネットワーキング、管理、ストレージ容量、バックアップと復元のシステム、およびアセット管理インベントリの更新に関するオーバーヘッドが増加します。さらに、水平方向にスケーリングされた各サーバーは独立して実行されます。これにより、構成の同期が困難になる可能性があります。 従来の LAMP スタックアプリケーションによる水平スケーリング 各サーバーには独自のディスクとファイルシステムがあり、開発者がユーザーセッションを処理するメカニズムを追加する必要があることが多いため、新しいストレージの課題が発生します。 サーバーレステクノロジーを使用すれば、開発者のためにスケーラビリティが(自動で)管理されます。トラフィックが急増した場合、サービスが拡張され、追加のサーバーを展開する必要なく、需要に応えます。これにより、アプリケーションをプロトタイプから本番環境にすばやく移行できます。 サーバーレス LAMP アーキテクチャ 従来の Web […]

Read More

[AWS Black Belt Online Seminar] Amazon Redshift Advanced Guide −最新ベストプラクティスとアップデート 資料及び QA 公開

先日 (2020/07/29) 開催しました AWS Black Belt Online Seminar「Amazon Redshift Advanced Guide −最新ベストプラクティスとアップデート」の資料を公開しました。当日、参加者の皆様から頂いた QA の一部についても共有しております。 20200729 AWS Black Belt Online Seminar Amazon Redshift Advanced Guide −最新ベストプラクティスとアップデート from Amazon Web Services Japan AWS クラウドサービス活用資料集(すべての過去資料が閲覧できます) Q. CTAS で、Parquet の外部テーブルを作成する際の質問です。利用イメージとして、データの全件洗替を上記でしたいのですが、S3 ファイルの上書きができないため、SQL 以外でS3ファイルを削除する必要がある認識です。Redsfhit で完結できないでしょうか。 A. データ全件洗い替えの方法はご認識いただいている通りとなります。現状 Redshift の CTAS での既存 S3 ファイルの上書きや、SQL 経由での S3 ファイルの削除をサポートしていないため、Redshift SQL のみでの完結は出来ません。 Q. Amazon DynamoDB […]

Read More

オンラインセミナー「RDS+Lambda が始まる。過去のアンチパターンはどう変わるのか」 資料および QA 公開

先日(2020/7/28)開催しましたオンラインセミナー
「 RDS+Lambda が始まる。過去のアンチパターンはどう変わるのか」
の資料を公開しました。当日、参加者の皆様から頂いた QA の一部についても共有しております。

Read More

[AWS Black Belt Online Seminar] Amazon Neptune 資料及び QA 公開

先日 (2020/07/14) 開催しました AWS Black Belt Online Seminar「Amazon Neptune」の資料を公開しました。当日、参加者の皆様から頂いた QA の一部についても共有しております。 20200714 AWS Black Belt Online Seminar Amazon Neptune from Amazon Web Services Japan AWS クラウドサービス活用資料集(すべての過去資料が閲覧できます) Q. 可視化について QuickSigt ではできませんか? A. 現在のところ QuickSight での可視化は直接行えませんので、本セミナーでご紹介した可視化ツールをご検討下さい。 Q. グラフ D Bのクエリ言語が ISO で標準化 (GQL) されたがこれまで Neptune は非対応だった。どうなる? A. Amazon Neptune は GQL には対応しておりません。 Q. Neptune は可視化がサードパーティー頼みだったが、以前より良いものが出てきていそうか? A. 可視化につきましては本セミナーでご紹介した可視化ツールをご検討下さい。 […]

Read More

ロールの連鎖を使用して、Amazon Redshift Spectrum 外部テーブルへのアクセスを Amazon Redshift IAM ユーザーとグループに制限する

 Amazon Redshift Spectrum では、Amazon Redshift クラスターから中央 AWS Glue メタストアを使用して、Amazon Simple Storage Service (Amazon S3) データレイクのデータをクエリすることができます。この機能により、ご使用中の Amazon Redshift データウェアハウスにおけるペタバイト規模のデータ保存制限がなくなり、エクサバイトのデータへの拡張を低予算でできるようになります。Amazon EMR と同様に、オープンデータ形式と低料金のストレージによるメリットを享受しながら、Redshift Spectrum ノードを数千に拡張し、データのプル、フィルタリング、投影、集約、グループ化、ソートなどが行えます。Redshift Spectrum はサーバーレスであり、プロビジョニングや管理が不要な点で、Amazon Athena と同じです。お支払いは、1 TB のデータスキャンごとに 5 USD のみです。今回の記事では、ロールの連鎖を使用したきめの細いアクセス制御を有効化し、ユーザーの要求に忠実なアクセス管理を実現するための、Amazon Redshift でのセキュリティ設定方法をご説明していきます。 RedShift Spectrum を使用して Amazon Redshift と Amazon S3 のデータレイクを統合する、レイクハウスアプローチの使用を開始する際、クラスターにある異なる外部スキーマにアクセス権を付与するためには一定以上の柔軟性が必要です。たとえば、ここでは次のようなユースケースを考えます。2 つの Redshift Spectrum スキーマ(SA および SB)が、(それぞれに、A と B という)2 つのデータベースに対し AWS Glue […]

Read More

Woot がお買い得品を拡大するために Amazon DocumentDB (MongoDB 互換) を使用する方法

 Woot! は 2004 年に設立され、2010 年にアマゾンが買収した元祖デイリーディールサイトです。Woot は当初、毎日 1 つの製品を売り切れるまで販売していましたが、現在は 7 つのカテゴリーでその日のお買い得品とその他期間限定オファーを提供しています。私のチームは Woot でリテールカタログサービスを担当しており、これは Woot のさまざまなフロントエンドサービスとユーザーインターフェイスにお買い得品を提供します。Woot が年々成長する中で私たちが直面した問題の多くは、スケーリング限界に達した古いレガシーシステムに起因するものでした。 この記事では、Woot でご覧いただける製品カタログとお買い得品の原動力となるセルフホスト型の MongoDB データベースを Amazon DocumentDB (MongoDB 互換) にどのように移行したかについて説明していきます。また、コストを削減しながらパフォーマンス、スケーリング、および俊敏性を向上させる上で Amazon DocumentDB がどのように役立ったかについても説明します。 アプリケーションアーキテクチャ Woot のリテールカタログサービスは Amazon DocumentDB をそのプライマリデータベースとして使用しています。Amazon DocumentDB 内では、データがアイテム (Woot が販売する製品)、オファー (時間と数量によって制限される販売対象アイテム)、およびイベント (お客様に売り出されるオファーのグループ) のコレクションに分類されます。私たちのバックエンドシステムは、主に C#/.Net (レガシー .Net Framework Windows サービスとサーバーレス .Net Core マイクロサービススタックの組み合わせ) を使用します。現在、Windows IIS API が Amazon […]

Read More

Amazon RDS for PostgreSQL 環境の自動バキュームを理解する

 PostgreSQL は、多くのエンタープライズデベロッパーや新興企業に推奨されるオープンソースリレーショナルデータベースになり、主要なビジネスアプリケーションやモバイルアプリケーションを強化しています。アマゾン ウェブ サービス (AWS) は、完全マネージド型のリレーショナルデータベースサービスとして、Amazon Relational Database Service (Amazon RDS) および Amazon Aurora を提供しています。Amazon RDS for PostgreSQL により、クラウドで PostgreSQL デプロイを簡単にセットアップ、操作、スケーリングできます。コマンドをいくつか使用するだけで、本稼働データベースのインスタンスを AWS で起動して実行することができます。オンラインデータベースを使用すれば、データベース管理者 は多くのメンテナンスタスクや管理タスクから解放されます。ただし、VACUUM など、データベースの使用状況に基づいて綿密なモニタリングと変更を必要とするメンテナンスタスクがあります。自動バキュームは、バキュームの操作を自動化するプロセスです。 この記事では、自動バキュームプロセスとその重要性について説明します。また、パフォーマンスを向上させるための自動バキューム設定を調整することと、オフにすることの欠点についても説明します。 PostgreSQL の MVCC PostgreSQL は多版型同時実行制御 (MVCC) を使用して、データの変更を実行するときに行を複数のバージョンで維持しています。テーブルに対する UPDATE および DELETE 操作中、データベースは古いバージョンの行を保持します。これは、他の実行中のトランザクションがデータのビューに一貫性を持たせることを要求する場合があるためです。PostgreSQL では、データベースを変更するすべてのステートメントが、xid と呼ばれるトランザクション ID を生成します。行のステータスは、xmin と xmax という 2 つの非表示列の xid を用いて追跡します。 1 つの列を持つテーブル test を考えてみましょう。行を挿入するには、次のコードを参照してください。 postgres=# CREATE […]

Read More