碎片或不碎片? GAE / JAVA / JDO

时间:2011-09-27 03:50:27

标签: java google-app-engine sharding bigtable

我目前正在将一些工作从MySQL移植到Google App Engine / Java。我正在使用JDO,以及需要的低级Java API。

我仔细阅读了有关分片计数器的优化指南:http://code.google.com/appengine/articles/sharding_counters.html

我仍在构建我的应用程序的基础。我知道过早的优化是万恶之源;但这是明确记录的,以避免争用。所以我无法决定我是否应该偏向某种方式。

默认情况下,我应该分割计数器(以及其他可能更高频率的写操作对象),还是应该在没有分片的情况下继续进行并根据需要实现?

2 个答案:

答案 0 :(得分:4)

这里“过早”的显着含义是“在适当的时间之前”。设计以避免限制,当这些限制得到充分理解时,还为时过早。

打碎你的柜台。

答案 1 :(得分:3)

即使使用有效的分片,维护聚合也会给应用程序增加一些实质性负载。如果您需要汇总,并且您无法承担近似值;然后使用分片聚合过早优化;没有下一个最好的选择。如果您实际上并不需要计数器,那么实施它的时间可能会更好地用于其他地方。