2013-03-11 97 views
2

我无法决定通过Azure存储处理以下情况的最佳方法。Azure Drive vs Block Blob vs表

  • 〜1500〜1MB之间+ CSV文件〜500MB整体〜20GB的数据
  • 每个文件使用完全相同的模型,每个model.toString()是〜50个字符〜400byte
  • 每个企业一天,在6小时的时间内,每分钟约有8000行新增行数
  • 基于属性值,每行都会显示正确的文件
  • 只要支持多读即使很少快照期延迟数秒没问题。

我想用阻止斑点但下载〜400MB的单个文件到计算机,只需添加一行,并将它上传没有任何意义,我无法找到周围的其他方式。

存在使用页斑点遗憾的是它不通过的SDKv2支持,使我感到紧张的支撑

和最后一个可能的中止驱动器的选择是看起来比读几行等成千上万的行继续可能成为一个问题

基本上,我更喜欢在立即检索数据时编写文件。但是,如果它确实值得放弃,我可以在一天结束时接受单个更新,这意味着每个文件约300-1000行

什么是处理这种情况的最佳方法?

+1

仅供参考:您可以修改现有块BLOB和添加新的模块,以它没有重新上传完整的BLOB。或者至少REST API支持:http://msdn.microsoft.com/en-us/library/windowsazure/dd179467.aspx。 – MikeWo 2013-03-11 16:50:23

+0

我无法回答,如果这种方法是合理的,因为我不知道什么是读这些文件。你提到连续阅读。什么在读他们?消费者是否缓存任何数据? – MikeWo 2013-03-11 16:52:11

+0

谢谢@MikeWo我会定义一下。工作人员角色通过SDK读取它们。缓存超出了这个问题的范围。 – cilerler 2013-03-11 17:52:14

回答

3

根据您的上述要求,Azure表是最佳选择。随着单Azure存储帐户,您得到如下:

存储事务 - 多达20,000个实体/消息/斑点每秒

单表分区 - 表分区是所有实体在一个表具有相同的分区键值,并且大多数表具有多个分区。单个分区的吞吐量目标是:每秒

    • 多达20,000个实体,这是单个分区,而不是一个单一的表。因此,具有良好分区的表格可以每秒处理多达数千个请求(直至存储帐户目标20,000)。

    - 使用表中更细粒度PartitionKey为了让我们能够在更多的服务器会自动传播表分区。如果您将分区设计得如此精细以便在数百台服务器上对其进行细分,则您可以读取“数以万计的数千行” “在几分钟内。

    来源:

    1. Windows Azure Storage Abstractions and their Scalability Targets
    2. Windows Azure’s Flat Network Storage and 2012 Scalability Targets
  • +1

    使用2012年scability目标所链接的文章,每个存储帐户的吞吐量现在每秒最多可达20,000个实体/消息/ blob,并且作为单个表分区,吞吐量现在每秒最多可达2,000个实体。这些是在2012年6月7日之后创建的存储帐户。达成这些规模目标的好处是基于对分区,多线程等进行微调。 – MikeWo 2013-03-11 16:57:18

    +0

    感谢@MikeWo。我已经更新了内容。 – AvkashChauhan 2013-03-11 17:07:25

    +0

    谢谢@AvkashChauhan – cilerler 2013-03-11 17:46:02