Azure驱动器vs块Blob vs表

本文关键字:vs Blob Azure 驱动器 | 更新日期: 2023-09-27 18:03:25

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

  • ~1500+ CSV文件在~1MB到~500MB之间总的~20GB数据
  • 每个文件使用完全相同的模型和每个模型。tostring ()是~50个字符~400字节
  • 每个工作日,在6小时内,每分钟约有8000+新行
  • 根据属性值,每行转到正确的文件
  • 只要支持多次读取,即使快照周期有几秒钟的延迟也是可以的,也不需要多实例写入。

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

有一个驱动器选项使用Page Blob不幸的是,它不被SDKv2支持,让我对可能的支持中断感到紧张

最后一个是Table看起来还行,但是连续读取几十万行可能会出现问题

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

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

Azure驱动器vs块Blob vs表

根据您的上述需求,Azure Tables是最佳选择。使用单个Azure存储帐户,您可以获得以下内容:

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

Single Table Partition—表分区是表中具有相同分区键值的所有实体,大多数表有多个分区。单个分区的吞吐量目标是:

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

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

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

源:

  1. Windows Azure存储抽象及其可伸缩性目标
  2. Windows Azure的平面网络存储和2012可伸缩性目标