首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Windows Azure Node.js软件开发工具包-如何高效查询表存储

Windows Azure Node.js软件开发工具包-如何高效查询表存储
EN

Stack Overflow用户
提问于 2012-10-30 08:37:41
回答 1查看 628关注 0票数 0

我已经写了一个FB应用程序,并想添加一些更多的功能,使其更具社会性。我正在尝试做的一件事是根据用户的朋友查询表存储,并发现用户的朋友是否在我的应用程序中“观看”了视频。我可以很好地从FB获取好友is,但我不确定如何构造对表存储的查询,因为一个FB用户可以拥有的最大好友数量是5000,所以我可能会以这样的查询结束:

代码语言:javascript
复制
var ts1 = azure.createTableService(config.storageAccount, config.storageAccessKey, config.tableHost);
var query = azure.TableQuery
    .select()
    .from('hits')
    .where('PartitionKey eq ?', '0')

for (f in friends){
    query.or('UserID eq ?', friends[f].UserID);
}

ts1.queryEntities(query, function (err, result){
    etc ...
}

导致了一个大的fat查询!

我的问题是,当对Windows Azure表存储执行这种性质的查询时,这是最有效和最具成本效益的(最小表存储事务)还是更好的方法?

EN

回答 1

Stack Overflow用户

发布于 2012-10-30 14:54:01

请注意,表存储不是关系数据库,这意味着您不能利用存储过程的强大功能,内置函数如SUM等。这意味着你不能进行服务器端的计算,比如计算单个用户的总点击量并返回结果。

取而代之的是,使用表存储,您将需要引入所有这些数据,并在消费者端完成工作。另一种解决方案是复制您的数据。这是很好的记录,每一次点击与信息,如视频,时间,...但另一方面,您将需要一个不同的表,其中包含每个用户的总点击量(就像一个共享计数器)。

这样,当您想要单个用户的总点击量时,您只需查询该值,而不必一遍又一遍地重新计算它。您将写入2条记录而不是1条,但读取速度会快得多。

Steve Marx为此写了一篇很好的介绍性文章:Architecting Scalable Counters with Windows Azure

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13131671

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档