Amazon SimpleDB は、複数のデータセットを作成・格納し、データのクエリを簡単に行い、結果を返すための、簡単なウェブサービスインターフェイスを提供しています。お客様のデータは自動的にインデックス化されるので、必要な情報を素早く見つけることができます。スキーマを事前定義することも、新しいデータを追加した場合にスキーマを変更することも不要です。さらに、拡張は新規サーバーを構築するよりも、新しいドメインを作成するくらい簡単です。
Amazon SimpleDB を使用するには、以下を行います:
- データセットの作成:
- 待ち時間に対する最適化、コストの最小化、または規制要件への対処のため、ドメイン用のリージョンを選択します。Amazon SimpleDB をご利用いただけるリージョンは、現時点では米国東部(バージニア北部)、米国西部(オレゴン)、米国西部(北カリフォルニア)、EU(アイルランド)、アジアパシフィック(シンガポール)、アジアパシフィック(東京)、アジアパシフィック(シドニー)、および南米(サンパウロ)となっています。
- CreateDomain、DeleteDomain、ListDomains、DomainMetadata を使用して、クエリドメインの作成と管理を行います。
- Put、Batch Put、および Delete を使用して、各クエリドメイン内のデータセットを作成したり管理したりします。
- データの取り出し:
- GetAttributes を使用して、特定の項目を取り出します。
- Select を使用して、指定基準を満たす項目のデータセットを照会します。
- 従量課金制
Amazon SimpleDB が使用するこのデータ モデルにより、構築済みデータの格納、管理およびクエリが簡単にできます。開発者は、自分のデータセットをドメインに組み込み、特定のドメインに格納されているすべてのデータに対してクエリを実行できます。ドメインは、属性-値ペアで記述した項目の集まりです。
これらの項目は従来のスプレッドシート表での概念に似ているとお考ください。例えば、以下の表に示すカスタマー管理データベースの詳細を見て、Amazon SimpleDB でどのように表されるかをお考えださい。表全体は、「カスタマー」というドメインです。各カスタマーは、表内の行か、ドメイン内の項目です。連絡先情報は、カラム ヘッダー(属性)により記述されます。値は各セルにあります。さて、以下のレコードはドメインに追加したい新規カスタマーであるとお考えください。
カスタマー ID | 名 | 姓 | 番地 | 市町村 | 州/地域 | 郵便番号 | 電話 |
---|---|---|---|---|---|---|---|
123 | Bob | Smith | 123 Main St | Springfield | MO | 65801 | 222-333-4444 |
456 | James | Johnson | 456 Front St | Seattle | WA | 98104 | 333-444-5555 |
Amazon SimpleDB では、上記レコードを追加するため、各カスタマーの属性-値ペアと共に、CustomerID をドメインに PUT します。特定の構文なしでは、この記述は以下のように見えます。
PUT(項目、123)、(名、Bob)、(姓、Smith)、(番地、123 Main St.)、(市町村、Springfield)、(州/地域、MO)、(郵便番号、65801)、(電話番号、222-333-4444)PUT(項目、456)、(名、James)、(姓、Johnson)、(番地、456 Front St.)、(市町村、Seattle)、(州/地域、WA)、(郵便番号、98104)、(電話番号、333-444-5555)
Amazon SimpleDB は、いくつかの重要な点で従来のデータベースのテーブルとは異なっています。簡単に後戻りして一定のレコードのみに適用される新しい属性を追加できる柔軟性が提供されています。例えば、注文状態に関するリアルタイムアラートを有効にするため、カスタマーの Eメール アドレスのキャプチャを始めることを想像してください。「カスタマー」テーブルの再作成、クエリの再記述、インデックスの再作成などを行うよりも、既存の「カスタマー」ドメインに新しいレコードと追加属性を加えるだけで十分です。生成されるドメインは以下のようなものです。
カスタマー ID | 名 | 姓 | 番地 | 市町村 | 州/地域 | 郵便番号 | 電話 | E メール |
---|---|---|---|---|---|---|---|---|
123 | Bob | Smith | 123 Main St | Springfield | MO | 65801 | 222-333-4444 | |
456 | James | Johnson | 456 Front St | Seattle | WA | 98104 | 333-444-5555 | |
789 | Deborah | Thomas | 789 Garfield | ニューヨーク | NY | 10001 | 444-555-6666 | [email protected] |
Amazon SimpleDB は、データの書き込み、インデクシング、およびクエリイングを実施する少数の簡単な API 呼び出しを提供しています。インターフェイスと機能のセットは、意図的に中核機能に集中しており、開発者がサービスを作成し、容易に学習でき、簡単に使用できるようにする基本的な API を提供しています。
- CreateDomain – データセットを収納するドメインを作成します。
- DeleteDomain – ドメインを削除します。
- ListDomains – すべてのドメインを一覧表示します。
- DomainMetadata – ドメイン作成時刻についての情報、項目名と属性の両方についてのストレージ情報、および合計バイト数(バイト)を取り出します。
- PutAttributes – ある項目とその属性を追加またはアップデートするか、属性-値ペアを既存の項目に追加します。項目は、受信時に自動的にインデクシングが行われます。
- BatchPutAttributes – 大量書き込みの全体的スループットを向上させるため、単一セルで最大25回の PutAttribute 演算を実行します。
- DeleteAttributes – 項目、属性または属性値を削除します。
- BatchPutAttributes – 大量削除の全体的スループットを向上させるため、単一セルで最大25回の PutAttribute 演算を実行します。
- GetAttributes – ある項目およびその属性と値のすべてまたはサブセットを取り出します。
- Select – よく知られている「select target from domain_name where query_expression」構文でデータセットをクエリします。サポートされている値テスト: =、!=、=、like、not like、between、is null、is not null、および every()。例: select * from mydomain where every(keyword) = 'Book’。SORT 演算子を使用して結果を指示し、Count 演算子を使用してクエリ内の述語により指定された条件を満足する項目をカウントします。
注: Amazon SimpleDB は、AWS Identity and Access Management と統合し、Amazon SimpleDB リソースにきめの細かいコントロールを実施します。AWS Identity and Access Management との統合を通じて、AWS Account にサインアップすると、SimpleDB で複数のユーザーを作成できるようになりました。代わりに、ユーザーは、SimpleDB API レベルのユーザー権限を付与され、AWS アカウントが所有する SimpleDB ドメインにアクセスできます。詳細については、AWS Identity and Access Management の詳細のページをご照ください。
Amazon SimpleDB は、各ドメインについて、地理的に分散された場所で複数のコピーを格納することによって、高い可用性と堅牢性を可能にします。(PutAttributes、BatchPutAttributes、DeleteAttributes、CreateDomain または DeleteDomain を用いた)成功した書き込みとは、ドメインの全コピーが、永続的に存続することを意味します。Amazon SimpleDB は、2 つの読み込み整合性オプションをサポートしています。結果的に整合性のある読み込みと、整合性のある読み込みです。
- 結果的に整合性のある読み込み(デフォルト) – 結果的な整合性のオプションは、読み込みパフォーマンスを(少ない待ち時間と高スループットの点で)最大化します。ただし、(Select または GetAttributes を用いた)結果的な整合性のある読み込みは、(PutAttributes、BatchPutAttributes、DeleteAttributes を用いて)最近完了した書き込みの結果を反映しない可能性があります。データの全コピー間での整合化は通常 1 秒以内に行われます。このように短時間で読み込みを繰り返すことによって、更新されたデータが返されます。
- 整合性 – 結果的な整合性に加えて、Amazon SimpleDB は、お客様のアプリケーションまたはお客様のアプリケーションの要素が必要とする場合に整合性のある読み込みをリクエストするための、柔軟性とコントロールを提供します。(ConsistentRead=true の状態で Select または GetAttributes を用いた)整合性のある読み込みは、読み込み前に無事に応答を受け取った全書き込みを反映する結果を返します。
デフォルトでは、GetAttributes および Select が、結果的な整合性のある読み込みを実行するようになっています。整合性のある読み込みにはより長い待ち時間と小さな読み込みスループットが生じる可能性があるため、読み込み前に無事に応答を受け取った全書き込みの読み込みを読み込みオペレーションが絶対に必要とするよう、アプリケーションシナリオが要求する場合に限って使用することが最善です。その他のすべてのシナリオの場合、デフォルトの[結果的に整合性のある]読み込みが、最良のパフォーマンスを産生します。また、Amazon SimpleDB を使用すれば、各個別の読み込みリクエストに対して整合性の設定を指定することができるので、異なる整合性設定に従う別々の要素を、同一のアプリケーションが保有する可能性のあることをご承知おきください。
Amazon SimpleDB は、関係データベースではありません。ユニークな機能やパフォーマンス特性を提供するため、複雑なトランザクションや関連性(結合など)は割愛しています。ただし、Amazon SimpleDB は、以下のようなトランザクション上のセマンティックを提供しています。
- Conditional Puts/Deletes – 属性の既存の値が指定された値と一致する場合に、1つ以上の項目属性の値を挿入、置換、削除することができます。値が一致しない、または存在しない場合、更新は拒否されます。Conditional Puts/Deletes は、異なるソースが同一の項目に同時に書き込みを行う場合に、更新の喪失を防ぐために有効です。
Conditional puts および deletes は、オプションの条件に予想値を設定することによって、PutAttributes および DeleteAttributes API 経由で開示されます。例えば、アプリケーションがイベント用の席の予約またはチケットの販売を行っていた場合、指定された座席がまだ販売中の場合のみ購入を許可したい(書き込み更新など)かもしれません(オプションの条件)。これらのセマンティックは、カウンター、すでに存在しない場合のみ項目を挿入する、また楽観的並行性コントロール(OCC)などの機能を実装するために使用することもできます。バージョン番号(またはタイムスタンプ)属性を項目の一部として管理し、このバージョン番号の値に基づいて conditional put/delete を実行することによって、アプリケーションが OCC を実装することができます。
Amazon RDS を利用すると、フル機能のリレーショナルデータベースを、管理作業の負担なしで運用することができます。Amazon DynamoDB は完全マネージド型の NoSQL データベースサービスであり、きわめて高速かつ予測可能なパフォーマンスと、シームレスな拡張性が特長です。Amazon SimpleDB は非リレーショナル型のサービスであり、小規模データセット向けです。Amazon EC2 上で実行できるさまざまな AMI の1つと Amazon EBS を使用すると、データベースのあらゆる制御が可能になる一方で、ハードウェアのプロビジョニングと設置の作業は不要になります。
これらの選択肢の間には大きな違いがあるため、実際のユースケースに応じて最適なものを選ぶときは、この違いを考慮する必要があります。
お客様のアプリケーションのための様々なデータベース代替製品の詳細情報については、AWS でのデータベースの実行ページをご覧ください。
Amazon S3 とは異なり、Amazon SimpleDB は生データを格納しません。むしろ、お客様のデータを入力として扱い、そのデータを拡大して複数のインデックスを作成するので、そのデータを素早くクエリすることができます。さらに、Amazon S3 と Amazon SimpleDB は異なるタイプの物理的ストレージを使用しています。Amazon S3 は、大きなオブジェクトを安価に格納するよう最適化された密度の高いストレージ ドライブを使用しています。Amazon SimpleDB は、少量のデータを格納し、データ アクセス速度に対して最適化された、より密度の低いドライブを使用しています。
AWS サービスに対するコストを最適化するため、大きなオブジェクトまたはファイルは Amazon S3 に格納する必要があります。一方、より小さなデータ エレメントまたはファイル ポインター(たぶん Amazon S3 オブジェクトへのポインター) は Amazon SimpleDB にベストな状態で格納できます。AWS 環境でのサービスと無料データ転送の緊密な統合のため、開発者は両方のサービスを彼らのアプリケーションに統合することにより、Amazon SimpleDB の速度およびクエリ能力、さらには Amazon S3 での低コストのデータ格納を簡単に利用することができます。
Amazon SimpleDB では現在、個別のドメインを最大各 10 GB まで拡大することができます。データセットが 10 GB よりも大きい場合、Amazon SimpleDB のスケールアウト アーキテクチャを利用し、データを複数のドメインに分散するようにしてください。Amazon SimpleDB は並列性を念頭において設計されているため、データをより多くのドメインに分散させることにより、書き込みと読み込みのスループット能力を強化することにもなります。最初に最大250のドメインが配給されますが、さらにドメインを必要とする場合は、このフォームにご記入ください。
Amazon S3 と連動して Amazon SimpleDB を使用することにより、何人の開発者が恩恵を受けるのかについての詳細は、ここをクリックしてください。
Amazon SimpleDB で構築済みデータ ストレージのサイズを予測するベストな方法は以下の通りです。
すべての項目 ID の生バイトサイズ(GB)+ 項目ごとに 45 バイト + すべての属性名の生バイトサイズ(GB)+ 属性名ごとに 45 バイト + すべての属性-値ペアの生バイトサイズ(GB)+ 属性-値ペアごとに 45 バイト。
米国東部(バージニア北部)リージョンまたは米国西部(オレゴン)リージョンにおける推定月間ストレージコストを計算するには、使用サイズを GB にして 0.25 USD を掛けます。欧州(アイルランド)リージョン、アジアパシフィック(シンガポール)リージョン、アジアパシフィック(シドニー)リージョン、または米国西部(北カリフォルニア)リージョンの場合は、使用サイズを GB にして 0.275 USD を掛けます。アジアパシフィック(東京)リージョンの場合は、使用サイズを GB にして 0.276 USD を掛けます。南米(サンパウロ)リージョンの場合は、使用サイズを GB にして 0.34 USD を掛けます。
Amazon SimpleDB は、各リクエストのマシン利用を測定し、特定のリクエスト(QUERY、GET、PUT など)を完了するために使用したマシン容量、つまりほぼ1台の2007 1.7 GHz Xeon プロセッサーの時間当たり容量に正規化されたマシン容量に基づき課金します。 マシン利用は、各リクエストごとに処理されたデータ(属性数、属性の長さ)により判定されます。256個の属性を取り出す GET 演算は、1つの属性しか取り出さない1回の GET よりも多くのリソースを使用します。100,000個の属性を調べる複数述語の SELECT は、250個を調べる単一述語クエリよりもコストがかかります。
各リクエストに対する応答メッセージで、Amazon SimpleDB は「ボックス利用率」というフィールドを返します。「ボックス利用率」は、各リクエストが消費したマシン リソースの尺度です。これには、帯域またはストレージは含まれていません。「ボックス利用率」は、特定のリクエストを完了するために使用される機械工数の一部として報告されます。米国東部(バージニア北部)リージョンおよび米国西部(オレゴン)リージョンの場合は、1つのリクエストのコストは「ボックス利用率」(時間数で表します)x 0.14 USD(Amazon SimpleDB マシン時間当たりの単価)です。お客様のすべてのリクエストのコストは、「ボックス利用率」の合計(時間数で表示)* 0.14 USDです。
例えば、1ヵ月のコースを超過してリクエストの「ボックス利用率」の合計が1台の 1.7 GHz Xeon プロセッサーを9時間使用したのに等しい場合、以下のように課金されます。
9時間 * Amazon SimpleDB マシン時間当たり0.14 USD = 1.26 USD。
お客様のクエリドメインが欧州(アイルランド)リージョン、アジアパシフィック(東京)、アジアパシフィック(シンガポール)リージョン、アジアパシフィック(シドニー)リージョン、または米国西部(北カリフォルニア)リージョンにある場合、Amazon SimpleDB マシン時間は、マシン時間当たり 0.154 USD で料金設定されます。お客様のクエリドメインが南米(サンパウロ)リージョンにある場合は、Amazon SimpleDB マシン時間は、マシン時間当たり0.19 USDで料金設定されます。すべてのコスト計算は関連リージョンに応じて調整される必要があります。
このサービスのご利用には、アマゾン ウェブ サービスカスタマーアグリーメントが適用されます。