Mongodb - 数据库命中

时间:2012-08-17 13:40:02

标签: mongodb mongohq database

我希望有一个带有视图计数器的指南部分。目前我担心性能。我想实时拥有它,所以如果有人查看我希望增加计数器的页面。

我担心因为,如果我每天有1000000次观看怎么办?因此,我必须达到我的数据库1000000次,以增加计数器。 (仅限一位导游!)

我有计算性能影响的问题。更新整数会对性能造成重大影响还是小小的性能影响?

我的解决方法是缓存视图并仅在每个x视图中提交它们。这会将数据库命中率降低x倍。 (例如x = 100)

我目前正在使用mongohq.com,看起来他们的定价模式不变,所以我只支付存储费用而不是读/写费用。

我在问,因为我不想滥用他们的定价模式。

编辑:

这是我增加视图计数的代码。

public static void increaseViews(String title) throws UnknownHostException,
            MongoException, DbAuthException {
        Datastore ds = DatabaseConnect.getInstance().getDatastore();
        Query<UserGuides> q = ds.createQuery(UserGuides.class).field("title")
                .equal(title);
        UpdateOperations<UserGuides> ops = ds.createUpdateOperations(
                UserGuides.class).inc("views");
        ds.update(q, ops);
    }

1 个答案:

答案 0 :(得分:4)

免责声明:我是MongoHQ的创始人

使用$ inc运算符执行此操作是一个很小的性能影响。 MongoDB有一个很好的方法来做到这一点。

例如,您的查询可能如下所示:

db.pages.update({page: "index"}, {$inc: {hits: 1}})

Mongo可以非常快速地处理这些问题,并且可以很好地处理您正在做的事情。如果你到达了滥用计划的地方,我们会礼貌地告诉你;)