ECS-ぱんくずリストを表示する為のデータ取得元について(その1)

まずはNodeの情報を取得する必要があるので、BrowseNodeLookupRequest、BrowseNodeLookupResponseで取得すればよいと単純に思っていた。

NodeIdを引数に呼出したら、親Nodeが取得できるんだろ?
だったら親Nodeを取得するメソッドを作って、それを再帰的に呼出せばいい。そう思ってました。
しかし実際にプログラムを組んで実行してみると、BrowseNodeLookupでは、親ノードが取得できないような怪しい雲行きである。
パラメーターを色々変えてみて実行してみるも、Ancestorsプロパティに何らかの値が返ってくる気配は無い。
子ノードはちゃんと取れてるのに、、、

Googleで調べてみたらやはり、同じような事で試行錯誤している人がいる模様。
やはり、BrowseNodeLookupでは親Nodeは取得できないみたいだ。

解決策として、全Nodeデータをダウンロードし、DBなりに格納しておいて、ECSに問い合わせする事無くノード情報を参照できるようにすればいいのかなと安直にそう考えた。
子Nodeはちゃんと取れてる訳だから、子Nodeを取得するメソッドを作成し、そのメソッドを再帰的に呼出す形で、指定したノード配下の関連ノードを全て取得することは技術的に簡単そうに思えた。
実際簡単だった。

しかし、この方法にはかなりの問題がある。
・AmazonのNode情報(カテゴリ)は、日々追加、削除などが行われていると考えるべきであり、上記のような手法でキャッシュしたデータはECSの利用規約に定められている、期間内に更新を行わなければならない。
・Amazonに登録されている全てのNodeは膨大な数である。規約に書かれている1秒以内に2つ以上のリクエストを送信してはいけないというルールも尊守しなければならず、メンテナンスでの利用とはいえ、これも例外ではないであろう。つまり時間が掛かりすぎる。
・ECS利用規約では1日当たりの最大リクエスト数は10,000件と制限されており、このようなメンテナンスで限りある貴重なリクエスト数を消費するのはもったいと考える。
・そもそもシステムのメンテナンスがめんどくさくなる。

実際、自分の作った指定したノード配下全てを取得するプログラムを実行してみたが、ものすごい数のデータ量だ。
1秒おきにリクエストするとはいえ、これって殆どサーバーアタックですな。

続く
Published 2006年5月25日 18:07 by aroooy

Comments

# お願い

2006年5月27日 21:08 by Blogstation
ブログ紹介サイトが出来ました。
もし、あなた様がよろしければ・・・
当サイト「BlogStation69」にてあなた様のブログをご紹介させていただけないでしょうか?

ご登録はサイトよりお願い致します。
http://www.blog-station69.com

Leave a Comment

(required) 
(required) 
(optional)
(required) 
Powered by Community Server (Non-Commercial Edition), by Telligent Systems