DataSpider Amazon Web Servicesアダプタ(フェーズ2)のご紹介1

Avatar
dstn


皆様こんにちは。アプレッソの友松です。
少し前になりますが、2011年10月26日にDataSpiderでAmazon Web Servicesに対応したアダプタ「DataSpider Amazon Web Servicesアダプタ」のフェーズ2をリリースしました。
具体的にどのような機能が追加されたのか簡単に新機能のご紹介をしたいと思います。

 

Amazon Web Servicesアダプタ(フェーズ2)概要


元々Amazon Web Servicesアダプタは、Amazon Web Servicesの各サービスに対応したアダプタが集まったパック製品になっています。

今、現在までに提供していアダプタは以下のものになります。
・Amazon S3アダプタ
・Amazon RDSアダプタ

今回新たに追加されたアダプタは以下のものです。
・Amazon SimpleDBアダプタ
・Amazon EC2アダプタ

それでは、それぞれアダプタをご紹介します。

 

Amazon SimpleDBアダプタ


Amazon SimpleDBアダプタは、Amazon Web Servicesが提供している非リレーショナル型データストアサービスである"Amazon SimpleDB"とデータ連携を可能にするアダプタです。

Amazon SimpleDBは所謂NoSQLデータベースであり、事前のスキーマ設定をすることなしにスキーマレスで利用することができます。また、スケーリングと冗長性が自動化されており、まさにクラウド時代のデータストアと言えます。外部APIが用意されておりアダプタもそのAPIを利用しています。

アダプタを利用するには、Amazon Web Services上の以下の情報が必要です。
・アクセスキー
・シークレットアクセスキー
また、接続先設定でエンドポイントを設定することも可能ですので、リージョンを切り替えて利用することも可能です。SimpleDBとの通信はHTTPSです。

まず、SimpleDBは他NoSQLデータベースと同じように用語が独特のものになっていますので、その点ご説明します。一般的なRDBMSとの用語のマッピングを行うと以下のようになるかと思います。

RDBMS SimpleDB
[テーブル]→[ドメイン]
[カラム] →[属性]
[レコード]→[アイテム]

必ずしもイコールというわけではありませんが目安としてお考えください。

アダプタが提供する機能は以下の機能になります。

[アイテム読み取り処理]

ドメインを指定してアイテムを読み取り、アイテム名および属性値を結果データとして出力することが可能です。SimpleDBの一貫性保証オプションである「Consistent Read」に対応していますので、常に最新のデータを取得するということが可能です。

スキーマレスのデータストアをどのような形で連携可能データとして取得を実現しているかというと"取得したい属性を事前に指定してデータを取得する"という方法で実現しています。

具体的な取得の流れは以下になります。
1.取得したいアイテムのドメインを指定
2.取得したい属性を設定
→手動で設定、もしくは特定のアイテムを指定してそのアイテムが持つ属性分設定

属性を事前に指定をすると、アイテムによってはその属性の値を持っていないアイテムも存在することが考えられますが、その場合はそのアイテムを読み込んだ時属性値は"null"として出力されます。

[クエリ実行処理]

クエリを指定してアイテムを読み取り、アイテム名および属性を結果データとして出力することが可能です。こちらも「Consistent Read」に対応しています。

データ取得の手順は"アイテム読み取り処理"と変わりはありません。
DataSpiderの他アダプタのイメージでお伝えするとDB系アダプタの"検索系SQL実行"のようなものです。

[アイテム書き込み処理]

入力データにてアイテム名を指定し、そのアイテム名を元に指定したドメインにアイテムを書き込むことが可能です。
指定したアイテム名が既存データとして存在すれば更新、存在しなければ新規に書きこむ処理となります。
こちらも書き込みの一貫性保証オプションである「Conditional Puts」に対応しています。

データ書き込みの手順はデータ取得系の処理の反対の手順とお考えいただくとわかりやすいと思います。
事前に書きこむ属性を指定して書き込み処理を行います。

「期待値を指定した書き込み」という機能があります。
この機能はRDBMSで言うところのキーを指定したUPDATE処理に近いものです。
まず、期待値を設定する属性を指定します。この設定はプロパティ画面で行います。
次に入力データにて指定した属性に期待する値を設定します。
その状態で更新をし、指定した属性に期待する値が存在した場合は書き込みが行われます。
もし、指定した属性に期待する値が存在しなかった場合はエラーとなります。

この機能の有効性については、以下のブログで説明されている表現がわかりやすいと思います。
--------------------------------------------------------------------
用途として、ある操作対象の値をConsistent Readによって読み込んで保持しておき、PutやDeleteのときにはその値と同値であることを条件に設定することで、ある時点から操作時までそのデータがほかのプロセスによってアップデートもデリートもされていないことを保証できます。
これはOCC(Optimistic Concurrency Control:楽観的並行性制御)によるトランザクションの実現となります。

http://www.publickey1.jp/blog/10/nosqlsimpledbbigtable.html
--------------------------------------------------------------------

また、アイテムの書き込み中にエラーとなったアイテムがあった場合、書き込みを中断せずエラーのアイテムをスキップして書き込みを続行するというオプションがあります。
エラーとなったアイテムは書き込み処理の出力データとして別途取得可能ですのでエラーになったアイテムのみをファイルに出力しておいて後で確認するということも可能です。

[アイテム削除処理]

入力データにてアイテム名を指定し、そのアイテム名をキーとして指定したドメインに含まれるアイテムを削除することが可能です。
こちらも削除の一貫性保証オプションである「Conditional Deletes」に対応しています。

この削除処理も書き込み処理同様の「期待値を指定した削除」の機能があります。
また、エラーとなったアイテムがあってもスキップをして、削除を続行する機能もあります。

[ドメイン作成処理]

ドメイン名を指定してドメインを作成することが可能です。例えば毎日一つ日別のドメインを作成したいといった時にご利用いただける機能です。

[ドメイン削除処理]

ドメイン名を指定してドメインを削除することが可能です。ある一定期間を過ぎたドメインを削除したいといった時にご利用いただける機能です。

なんとSimpleDBアダプタの機能紹介だけでかなりの長文になってしまいました。。。
ということで次回へ続きます。

コメント

ログインしてコメントを残してください。

Powered by Zendesk