Amazon Web Services ブログ

Category: Amazon DynamoDB

Amazon DynamoDB のベストプラクティスに従うという 2019 年の計を立てる

AWS ではこの 2019 年、DynamoDB での作業時にミッションクリティカルなワークロードのパフォーマンスを最大化して、コストを最適化するために役立つ Amazon DynamoDB のベストプラクティスに従うことをお勧めします。この記事は、このような抱負の維持を助ける DynamoDB のコンテンツに焦点を当てて行きます。

Read More

タグベースのスケーリングプランを使って AWS Auto Scaling ポリシーを簡単に管理する方法

このブログ記事では、リソースをひとつ、または複数のタグに基づいてグループ化し、スケーリングプランを使用することによって AWS Auto Scaling ポリシーを集約、設定、および管理する方法をご紹介します。スケーリングプランを使用すると、タグを用いることによって AWS Auto Scaling ポリシーの作成を自動化し、これらのポリシーを簡単に変更できます。

Read More

[AWS Black Belt Online Seminar] Amazon DynamoDB Advanced Design Pattern 資料及び QA 公開

先日 (2018/12/25) 開催しました AWS Black Belt Online Seminar「Amazon DynamoDB Advanced Design Pattern」の資料を公開しました。当日、参加者の皆様から頂いた QA の一部についても共有しております。 AWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design Pattern from Amazon Web Services Japan AWS クラウドサービス活用資料集(すべての過去資料が閲覧できます) Q. 「時系列データが必要なアプリケーション」のスライドで GSIKey Rand(0-N) というのがありましたが、これはどのような目的がありますか? A. こちらにあるような形で、書き込み後の検索効率向上の為のテクニックになります。 今後の AWS Webinar スケジュール 直近で以下のオンラインセミナーを予定しています。各オンラインセミナーの詳細およびお申し込み先は下記URLからご確認いただけます。皆様のご参加をお待ちしております! AWS Black Belt Online Seminar 1月分申込先 ≫ Redshift Recently Features Update 2019 年 […]

Read More

2018 年に最もよく読まれた AWS データベースブログ

この記事では、私たちが 2018 年に掲載した AWS データブログ記事で、最もよく読まれた10本を紹介しています。このリストをガイドとして使って、まだ読んでいないデータベースブログに目を通す、または特に有益だと思った記事を読み返すことができます。

Read More

AWS データストア内の機密データを保護するためのベストプラクティス

このブログ記事では、データを保護する一般的なデータセキュリティパターンとそれに対応する AWS セキュリティコントロールに焦点を当てます。クラウド内の機密データを保護するための効果的な戦略を立てるには、一般的なデータセキュリティパターンをよく理解し、これらのパターンを明確にマッピングしてクラウドセキュリティコントロールに活かすことが必要です。

Read More

Amazon DynamoDB グローバルテーブルを使用してマルチリージョンアーキテクチャを強化する方法

この記事では、Amazon DynamoDB を使用して、複数の AWS リージョンにデプロイされたグローバルバックエンドのデータベースを強化する方法について説明します。ここでは DynamoDB グローバルテーブルを使用します。これは完全マネージド、マルチリージョンかつマルチマスターのデータベースを提供するもので、世界中のどこにいても低レイテンシーのデータアクセスをユーザーに提供できます。

Read More

DynamoDB グローバルセカンダリインデックスを使用してクエリのパフォーマンスを向上させ、コストを削減する方法

この記事では、グローバルセカンダリインデックスを使用してデータを照会し、アプリケーションのパフォーマンスを向上させ、毎月の DynamoDB 請求金額を削減する方法をいくつかご紹介します。最近、テーブルあたりのグローバルセカンダリインデックスの最大数が 5 から 20 に、制限が引き上げられました。そのため、今が DynamoDB の使用を最適化するためのグローバルセカンダリインデックスの使用方法を学ぶ恰好のタイミングです。

Read More

新しい Amazon DynamoDB キー診断ライブラリを使用して、アプリケーションのトラフィックパターンを視覚化および理解する方法

最もアクセスしたデータベース項目のグラフとダッシュボードを表示することを可能にする Amazon DynamoDB キー診断ライブラリを公開しました。このブログ記事では、主要な診断ライブラリを設定する方法を説明します。次に、ライブラリの視覚化を使用して、映画データベースの例で、不均一なアクセス分布のキーを特定する方法を説明します。

Read More

Amazon DynamoDB On-Demand – 事前のキャパシティプランニングが不要のリクエスト課金が可能になりました。

少し前まで、あなたのビジネスに合わせていつでもスケールし安定した低いレイテンシを提供するデータベースを作成することは困難でした。2012年にWerner VogelsがpostしたブログでAmazon DynamoDBがアナウンスされました。(これは私がAWSに入る数ヶ月前の事でした。)DynamoDBは2007年にAmazonが公表したDynamoの論文に基づいて設計されています。それから数年、多くの新機能がAWSの顧客が利用するデータベースを更に簡略化するために導入されました。今、フルマネージドかつマルチリージョン、マルチマスターデータベースとencryption at rest、point-in-time recovery、in-memory cachingなどの機能、そして99.99%のuptime SLAを提供しています。 Amazon DynamoDB On-Demand 今日我々はAmazon DynamoDB on-demand、事前のキャパシティプランニングが不要で1秒あたり数千リクエストのトラフィックにも対応が出来るフレキシブルな課金を実現する新しいオプションを案内します。DynamoDB on-demandはシンプルなpay-per-request課金モデルを提供しreadリクエストとwriteリクエストを使った分に応じて支払うだけになります。これによりシンプルなコスト計算とパフォーマンス管理を実現します。例えばtableにon-demanmd modeを適用すると、DynamoDBは即座に対応しワークロードに応じて以前に観測されたトラフィックレベルまで処理できるようにパフォーマンスを調整します。また新たなピークトラフィックが観測されたときはDynamoDBはワークロードに対応するために迅速に適応します。(翻訳者注: DynamoDBは内部的にパーテーションという概念で負荷を分散します。そのため一度拡張されたテーブルは内部的に何もしなくても拡張された状態を維持している事と、新たな負荷が発生したときも自動的に拡張して対応します。) DynamoDBのコンソールを見るとon-demand read/wriite capacity modeが新規テーブル作成時と既存テーブルのCapacityタブに追加されている事が確認出来ます。 on-demand modeを適用したTableは全てのDynamoDBの機能がサポートされ(例としてencryption at rest、point-in-time recovery、global tablesなど)、例外としてauto scalingはこのmodeでは無効になります。 on-demand modeが有効な状態でセカンダリインデックスを構築した場合も同じスケーラビリティと課金モデルが適用されます。セカンダリインデックスへも使った分だけお支払い頂き事前にキャパシティプロビジョニングする必要はありません。もしon-demand modeが有効なtableでread/writeリクエストが発生しなかった場合、支払う必要があるのはストレージ課金のみになります。 DynamoDBは予測困難なアプリケーショントラフィックへの対応や短期間で大きなスパイクが発生するワークロード、もしくはあなたのテーブルの使用率が平均では低い場合にとても有効です。例えば以下のようなユースケースです。 新たなアプリケーション開発時、もしくはワークロードが複雑で予測が困難な場合 pay-per-use な課金モデルのサーバレスサービスとの組み合わせ SaaSプロバイダやソフトウェアベンダーでシンプルかつリソース分離を必要とするようなアプリケーションを開発している on-demand modeへの変更は1日1回可能です。on-demandからprovisioned modeへの変更も可能です。 簡単にパフォーマンステストをやってみましょう では早速新たに作ったDynamoDB on-demand modeのtableに対して負荷テストを実施してみましょう。 私は2つのサーバレスアプリケーションを作ってみました。 1つ目のアプリケーションはAmazon API GatewayとAWS LambdaでHTTPインターフェイスによるDynamoDBに対してread/writeする処理を実装しています。 2つ目のアプリケーションはLambdaで1000個の並行に同時実行でランダムにHTTPメソッドを生成しendpointに各Itemに操作リクエストを生成するファンクションです。 全てのファンクションは同時実行数100でリクエストを実行し、終了するとすぐにまた別の100同時実行がスタートする処理を一分間行います。ランプアップするために必要な時間は無く、負荷の生成はフルスピードで実行されます!! DynamoDB コンソールのメトリクス tabから、ピーク時には5000request/secの負荷が流れていることとスロットリングが発生しないことをメトリクスから確認ができます。 サーバレスアプリケーションがscalingするか、API GatewayとLambdaとDynamoDBはフルマネージドで対応が出来ています。スループットやアプリケーションロジックに寄る課金の仕組みを計画する事はなく実現出来ました。 […]

Read More

新機能 – DynamoDB Transactions

Amazon DynanmoDBがローンチされてから多くのユースケースで使われてきました。microservicesやゲームなどのモバイルバックエンドシステム、IoTソリューションなど様々です。例えばCapital Oneのユースケースではモバイルアプリケーションから使われていたメインフレームの処理をサーバレスアーキテクチャに移行しレイテンシの軽減にもなりました。TinderはDynamoDBにゼロダウンタイムで移行し、世界中のユーザーのために必要なスケーラビリティを獲得しました。 開発者の多くはビジネスロジックの実装に複数のItemを操作し、all-or-nothingな結果を一つか複数のtableにまたがって行いたいと思う場面があると思います。要件によっては実装に不必要な複雑さが加わることがあります。今日、我々はこのユースケースに対応するためにDynamoDBにtransaction機能をネイティブサポートしました! Amazon DynamoDB Transactionsについて DynamoDB transactionsは開発者に原子性、一貫性、分離性、永続性(ACID)を保証した操作を一つか複数のテーブルに対して提供します。一つのAWSアカウントの単一リージョンで行います。アプリケーションからinsert、delete、updateを複数のアイテムに対して実施出来る事でビジネスロジックの操作を一回のリクエストで実行出来ます。DynamoDBは、複数のパーティショニングとテーブル間でトランザクションをサポートする唯一の非リレーショナルDBです。 TransacstionsはDynamoDBを利用してより広いワークロードに対してエンタープライズレベルでのbenefitとスケール、パフォーマンスをもたらします。多くのユースケースではすぐに簡単にtransactionsを利用することが可能です。例えば 金融取引 商品の受注から決済までの管理 マルチプレイヤーでの操作を提供するゲーム 複数のコンポーネントによる操作を行うシステム 2つ目にDynamoDBのオペレーションでどうtransactionsを扱うのか紹介します。 TransactWriteItems 書き込みを含む操作で利用します。一つか複数のPutItem、UpdateItem、そしてDeleteItemオペレーションをサポートします。TransactWriteItemsは指定した前提条件にマッチするかをチェックしてから更新することも可能です。これらの条件には書き込みセット内で同一Itemや異なるItemが含まれる場合があります。いずれかの条件が満たされない場合トランザクションはリジェクトされ失敗します。 TransactGetItems 読み込みを含む操作で利用します。一つか複数のGetItemオペレーションをサポートします。もしTransactGetItemsリクエストで対象となっているItemがTransactWriteItemsで書き込まれている最中は読み込みトランザクションはキャンセルされます。書き込みトランザクション処理前の値は取得可能なので通常の読み込み操作は可能です。 これらのトランザクションはユニークな10個のItemと最大4MBのデータ、条件付き書き込みがサポートされます。 この機能を利用してDynamoDBは、さまざまなアプリケーション要件を満たす複数の読み取りと書き込みのオプションを提供し、複雑なデータ駆動型ビジネスロジックを実装する開発者に大きな柔軟性を提供します。 3種類の読み込みオプション – 結果整合性の読み込み、強力な整合性のある読み込み、そしてトランザクションによる読み込み 2種類の書き込みオプション – 通常書き込みとトランザクションによる書き込み たとえば、仮想コインでアイテムを購入できるゲームを構築しているとします。 player tableでは、各playerは多数のコインと購入したアイテムの在庫を持っています。 itemsテーブルでは、各アイテムに価格が設定され、boolean値で使用可能(または使用不可)としてマークされます。 ゲーム内で商品を購入するフローの場合にアトミックトランザクション処理を実装出来ます。 始めに商品があるかを確認し、プレイヤーに必要な残高があるか確認する これらの条件が満たされている場合、商品を在庫無しに変更し所有者をプレイヤーに変更 支払ったアイテムをプレイヤーの持ち物リストに追加する JavaScriptを用いた例として、AWS SDK for JavaScript in Node.jsで例を見てみましょう。 data = await dynamoDb.transactWriteItems({ TransactItems: [ { Update: { TableName: ‘items’, Key: { id: […]

Read More