Azure Drive vs Block Blob vs Table

时间:2013-03-11 16:25:19

标签: c# .net azure

我无法决定通过Azure存储处理以下方案的最佳方法。

  • ~1500 +整体~1MB到~500MB之间的CSV文件~20GB数据
  • 每个文件使用完全相同的模型,每个 model.toString()是~50个字符~400byte
  • 每个工作日,在6小时内,每分钟新增8000行+
  • 根据属性值,每行都会转到正确的文件
  • 只要支持多次读取,即使快照周期的延迟时间很短,也不需要多次写入。

我想使用 Block Blob 但是将~400MB单个文件下载到计算机中,只是为了添加一行并将其上传回来没有意义我找不到其他方法周围。

有一个使用 Page Blob 的云端硬盘选项,但SDKv2不支持它,让我对可能停止支持感到紧张

最后一个是看起来不错,除了继续阅读几十万行可能会成为一个问题

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

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

1 个答案:

答案 0 :(得分:3)

根据您的上述要求,Azure表格是最佳选择。使用单个Azure存储帐户,您将获得以下信息:

存储交易 - 每秒最多20,000个实体/消息/ blob

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

  • 每秒最多20,000个实体
  • 注意,这适用于单个分区,而不是单个表。因此,具有良好分区的表可以每秒处理多达几千个请求(最多可达到存储帐户目标20,000)。

表格 - 为表格使用更细粒度的PartitionKey,以便我们能够自动将表格分区分布到更多服务器上。

关于连续读取“几十万行”,您的主要障碍是存储级别20,000个事务/秒,但是如果您将分区设计得如此精细以便在数百台服务器上进行分割,那么您可以阅读“数十万”在几分钟内。

来源:

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