2015-12-02 66 views
-1

我打算编写一个windows服务,它包含Twitter流式API,将特定主题的tweets和相关信息(情感评分,推特用户,创建日期)保存到一个天蓝色的存储。我需要一种查询这些信息的方法,比如“”显示了最近24小时内鸣叫的平均情绪得分“,因此SQL或LINQ必须可用。用于保存推文和相关信息的Azure存储

一些数字:

  • 每天大约节省鸣叫的次数。 20.000
  • 保存3个月的数据(20.000鸣叫* 90天)
  • 数据保存:推文文字(140个字),景气指数,Twitter用户名,日期(也许有更多的属性)
  • 变频节能:由于我正在使用流式API,我实时得到推文,这些推文必须保存到存储中。
  • 查询频率:大约每30分钟一次。

我想知道哪种Azure存储适用于此目的。我想我必须在Azure表存储和SQL数据库之间做出决定。

+0

真的没有正确的答案,卡尔,只是意见。另外这是一个非常广泛的问题。您只列出了一个示例查询。在决定之前,你真的需要考虑所有的查询场景。此外,它可能有助于扩大您的数据库选择到各种其他数据库引擎,而不仅仅是表存储(键/值)和SQL Azure(关系)。 –

+0

脱离主题评论,但前段时间我检查了Twitter的服务条款并在云端数据库中存储推文(例如Azure Table Storage)在当时被禁止。在开始项目之前,您可能需要再次检查他们的TOS。 –

回答

-1

有考虑到这些2

1.价格之间选择两件事情:

SQL Azure的:检查计算器:https://azure.microsoft.com/en-us/pricing/calculator/

存储表:检查计算器:https://azure.microsoft.com/en-us/pricing/calculator/?service=storage

你应该考虑容量和交易和服务层来看哪一个更便宜...

2.性能:

如果设计是正确的,在很多情况下,表存储要快于SQL Azure的,因为它没有SQL /非规范化的性质,但它可能取决于你要查询为它写。

在SQL Azure中,您将使用T-SQL,但表存储,您会使用C#和LINQ查询数据...

如果你看看@大卫的评论下面,根据你的查询将有限制如果你使用表存储感兴趣,所以你必须意识到表存储的这些限制,以及...

+0

不幸的是,这不是一个真正有效的答案。表存储根本无法提供OP请求的查询结果,因为它无法进行聚合/计算(例如平均值)。这需要扫描24小时的内容和应用内计算。或者它需要预先计算,但这会限制您可以执行的查询。 –

+0

@DavidMakogon你没看完我答案的最后一行吗? ... – Aram

+0

当然,我做到了。我不认为你完全理解表格存储。表存储只支持Linq的一个子集。它绝对不提供任何类型的计算,例如24小时以上的平均值。当涉及查询和服务器端处理时,表存储不是数据库引擎。这是一个关键/价值商店。如果有任何查询需要通过另一个键(除日期之外)查找,那么您又回到了分区/表扫描。如果你仔细观察这个问题,这个例子就是“向我展示最近24小时内推文的平均情绪分数。”不是30分钟。 –