2009-06-14 32 views
2

我們希望通過我們的應用收集使用統計信息。 因此,我們希望跟蹤服務器端某處的用戶操作。性能:數據存儲寫入與請求日誌寫入

哪種選擇更適合,性能方面:

  1. 在App Engine請求日誌跟蹤用戶操作。即爲每個用戶動作寫入日誌條目。
  2. 跟蹤數據存儲中的表中的用戶操作。爲每個用戶操作編寫一個條目。

我猜請求日誌寫入是遠遠快於數據存儲寫道。它是否正確? 你有什麼經驗和建議?

感謝: 亨寧

回答

4

我可以證實,(通過我自己的經驗觀察,才:我沒有看到這個解決在官方文檔),寫日誌條目比寫一個存儲條目更快。考慮它,這是有道理的:日誌條目總是附加的,沒有索引,沒有特定的事務問題(超出每個日誌條目的原子性)等等;受到如此嚴格的限制,他們可以更加優化是有道理的。

然而,我曾經(在一年前的beta版前幾天很早)觀察到一個案例,我認爲有應該是是我寫的日誌條目,但找不到它;我無法重現觀察結果,這可能是我的代碼中的一個小故障,或者是GAE中的一個固定的錯誤,但它讓我對數據完整性感到驚歎 - 日誌的完整性如何保證?除非我明確地看到文檔中的某些內容,否則我不會覺得我可以依靠100%完整性的日誌 - 如果偶然失去一百萬條記錄中的一條記錄將是一個絕對的悲劇,也許會用於商店的更高保證值得表現影響。

+2

我同意。日誌對於主要簿記來說足夠可靠是不完全確定的。但對於基本統計數據,我會使用它們來避免數據存儲配額和可能的索引。對我來說,主要問題是獲取日誌*關*應用引擎。由於日誌位於環形緩衝區中,因此很有可能會丟失數據。 – JasonSmith 2009-12-02 10:55:12

2

請求日誌是非常快很多 - 有沒有必要對每一個記錄語句往返;日誌可以在用戶請求結束後累積和推送。但是,就我所知,沒有對請求日誌的編程訪問權限 - 所以如果您需要,您需要使用數據存儲。

如果你想兩全其美的,留意的任務隊列API,被很快釋放。 :)

+1

謝謝。實際上有一種訪問請求日誌的方式,您可以使用appcfg.py腳本下載它們。隨着舊日誌被刪除,我將不得不定期下載它們。 – henning77 2009-06-15 19:05:01