6

Rails Webサービスで逆ジオコーディングを使用しており、geokitを介してGoogleの逆ジオコーディングを使用するとクォータの問題が発生しました。simple-geoサービスも実装しており、1分/時間あたりのリクエスト数を追跡​​できるようにしたいと考えています。

逆ジオコーディングの呼び出しを追跡するための提案はありますか?

コードは次のようになります。これらのいずれかを行いますか?

  • カスタムロガーを追加し、バックグラウンドで毎日処理します
  • 割り当てと評価を簡単に行う、私が知らない超素晴らしい宝石を使用してください
  • データベースに呼び出しを挿入し、そこでクエリを実行します。

注:リアルタイムのデータは必要ありません。1時間ごとに、通常の1時間あたりのリクエスト数と最大リクエスト数を知りたいだけです。(および毎月のリクエストの合計)

def use_simplegeo(lat, lng)
  SimpleGeo::Client.set_credentials(SIMPLE_GEO_OAUTHTOKEN, SIMPLE_GEO_OAUTHSECRET)
  # maybe do logging/tracking here?
  nearby_address = SimpleGeo::Client.get_nearby_address(lat, lng)

  located_location = LocatedLocation.new
  located_location.city = nearby_address[:place_name]
  located_location.county = nearby_address[:county_name]
  located_location.state = nearby_address[:state_code]
  located_location.country = nearby_address[:country]
  return located_location

end

ありがとう!

4

1 に答える 1

2

ここでの最初の部分は、あなたが尋ねている質問に答えることではありませんが、以前にそれを検討したことがない場合は、私は役に立ちます。

サーバーを使用して(つまり、Geokitを介して)逆ジオコーディングを行わず、代わりにクライアントがこれを行うことを検討しましたか?つまり、一部のJavascriptがユーザーのブラウザに読み込まれ、サービスに代わってGoogleジオコーダーAPI呼び出しを行います。

アプリケーションがこのアプローチをサポートできる場合、これには多くの利点があります。

  • 分散ユーザーはそれぞれ独自の1日の割り当てを持ち、自分の割り当てを消費しないため、割り当ての問題を回避できます。
  • これを行うために独自のサーバーリソースを消費することはありません

それでもジオコーダークエリをログに記録したいが、プライマリアプリケーションデータベースへのパフォーマンスの影響が心配な場合は、次のいずれかのオプションを検討してください。

  1. ロギング用に別のデータベース(または複数のデータベース)を作成し(書き込みが集中的になります)、同期的に実行します。リレーショナルである可能性がありますが、MongoDBまたはRedisのいずれかが機能する可能性があります
  2. (カスタムロガーを使用して)ファイルシステムにログオンし、後でこれらをバッチで構造化されたクエリ可能なストレージにcronします。それがうまく機能する場合、ストレージはAmazonのS3などの外部にある可能性があります。
  3. ジオコードを実行するたびにSimpleGeoにレコードを書き込み、それらのレコードにカスタムメタデータを追加して、それらを独自のモデルに結び付けるだけです。
于 2010-07-26T17:21:25.580 に答える