2010-07-26 25 views
6

Chúng tôi đang sử dụng mã hóa địa lý đảo ngược trong dịch vụ web đường ray và đã gặp sự cố hạn ngạch khi sử dụng trình mã hóa địa lý đảo ngược của Google thông qua geokit. Chúng tôi cũng đang triển khai dịch vụ địa lý đơn giản và tôi muốn có thể theo dõi số lượng yêu cầu mỗi phút/giờ mà chúng tôi đang thực hiện.Cách tốt nhất để ghi lại các cuộc gọi API, mỗi phút/giờ

Bất kỳ đề xuất nào để theo dõi các cuộc gọi mã hóa địa lý đảo ngược của chúng tôi?

Mã của chúng tôi sẽ trông giống như sau. Bạn có làm bất cứ điều gì trong số này không?

  • Thêm một logger tùy chỉnh và xử lý trong nền hàng ngày
  • Sử dụng một viên ngọc siêu tuyệt vời mà tôi không biết về điều đó không hạn ngạch và giá dễ dàng
  • Chèn vào cơ sở dữ liệu cuộc gọi và làm các truy vấn có .

Lưu ý: Tôi không cần dữ liệu trong thời gian thực, chỉ muốn có thể biết trong một khoảng thời gian theo giờ, yêu cầu thông thường và tối đa của chúng tôi mỗi giờ là bao nhiêu. (và tổng số yêu cầu hàng tháng)

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 

Cảm ơn!

Trả lời

2

Phần đầu tiên ở đây không trả lời câu hỏi bạn đang hỏi nhưng tôi hữu ích nếu bạn chưa xem xét câu hỏi đó trước đây.

Bạn đã xem xét không thực hiện mã hóa địa lý đảo ngược bằng cách sử dụng máy chủ của mình (tức là thông qua Geokit) nhưng thay vì thực hiện điều này bởi ứng dụng khách? Nói cách khác, một số Javascript được tải vào trình duyệt của người dùng làm cho các cuộc gọi API mã hóa địa lý của Google thay mặt cho dịch vụ của bạn.

Nếu ứng dụng của bạn có thể hỗ trợ phương pháp này hơn này có một số ưu điểm:

  • Bạn nhận được xung quanh vấn đề hạn ngạch bởi vì người dùng phân phối của bạn đều có hạn ngạch hàng ngày của riêng mình và không tiêu thụ của bạn
  • Bạn không tự mình sử dụng tài nguyên máy chủ của mình để thực hiện điều này

Nếu bạn vẫn muốn ghi lại các truy vấn bộ mã hóa địa lý của mình và bạn quan tâm đến tác động hiệu suất đến cơ sở dữ liệu ứng dụng chính của mình, bạn có thể xem xét một o f các tùy chọn sau:

  1. Chỉ cần tạo cơ sở dữ liệu (hoặc cơ sở dữ liệu) riêng biệt để ghi nhật ký (viết sâu) và thực hiện đồng bộ. Có thể có quan hệ nhưng có lẽ MongoDB hoặc Redis có thể hoạt động hoặc
  2. Đăng nhập vào hệ thống tệp (với trình ghi nhật ký tùy chỉnh) và sau đó định kỳ các lô này thành bộ nhớ có cấu trúc, có khả năng truy vấn sau này. Các lưu trữ có thể được bên ngoài như trên S3 của Amazon nếu điều đó hoạt động tốt hơn.
  3. Chỉ cần viết một bản ghi vào SimpleGeo mỗi khi bạn làm một Mã hóa địa lý và thêm tùy chỉnh meta-data để các hồ sơ đó để buộc chúng lại với mô hình của riêng bạn (s)
+0

Về javascript - Tôi rất muốn , nhưng đây là một API, do đó, các iphones đang gửi dọc theo lat/lng của chúng và không thể thực hiện mã hóa ngược. Kể từ khi chúng tôi đang ở trên Heroku, tôi không nghĩ rằng tôi có thể làm các bản ghi hệ thống tập tin; vì vậy có lẽ MongoDB có thể là con đường để đi. –

+0

Vì vậy, nó là một ứng dụng iPhone và không phải là một trình duyệt đang chạy ở đó và tôi đoán rằng bạn không kiểm soát cách thức thu thập hoặc gửi các công cụ lat/lng? Và bạn nói đúng về hệ thống tập tin trên Heroku.Nhưng bạn có thể sử dụng S3 và chỉ trả tiền cho việc lưu trữ (không phải băng thông) hoặc sử dụng gần đây của họ khởi động MongoHQ add-on – bjg

+0

Ngay trên tất cả các tài khoản! Dựa vào việc thực hiện MongoHQ ... Bất kỳ suy nghĩ nào về nhóm theo khoảng thời gian? (nhận được yêu cầu mỗi giây)? bạn sẽ chỉ Request.all.group_by thứ hai/giờ/bất cứ điều gì? –

Các vấn đề liên quan