2011-09-27 52 views
3

我目前正在將一些工作從MySQL移植到Google App Engine/Java。我在需要時使用JDO以及較低級別的Java API。 http://code.google.com/appengine/articles/sharding_counters.html要碎片還是不碎片? GAE/java/jdo

我還在建設我的應用程序的基礎:

我通過優化指南,瞭解有關分片計數器讀。我知道不成熟的優化是萬惡之源;但爲了避免爭用,這已清楚記錄在案。所以我很難決定是否應該以某種方式偏見。

所以我應該在默認情況下分片計數器(和其他可能更高頻率的寫操作對象),還是應該按照需要進行分片和實施?

+0

你打算怎麼處理這些櫃檯?我希望你不要將它們用於你的實體的自動增量ID。 – cherouvim

+0

感謝您的關注,但無需擔心。我將計算諸如頁面瀏覽量和用戶操作之類的東西。 – Dave

+0

聽起來不錯。也許使用memcache並每隔5分鐘使用cron清除數據庫? – cherouvim

回答

4

這裏「過早」的突出含義是「在適當時間之前」。設計避免限制,當這些限制得到充分理解時,不是不成熟的。

碎片你的櫃檯。

3

即使使用有效的分片,維護聚合可以爲您的應用程序增加一些實質負載。如果你需要需要這個聚合,你不能接近;那麼使用分片聚合是而不是一個不成熟的優化;沒有下一個最好的選擇。如果你實際上不需要櫃檯,那麼執行它的時間可能會更好地花在其他地方。