云存储附加和日志记录

Cloud Storage Appending and Logging

哪种云服务组合可以存储包含 N 个部分的日志,这样既便宜又容易:

  1. 将新条目追加到日志中
  2. 请求日志中的 i -> j 部分,或至少 i -> N
  3. 部分
  4. 以上请求是否具有强一致性(即在用户附加条目 N + 1 后读取日志总是导致条目 N + 1 可用)
  5. 日志条目可能非常大(10 到 100 MB)所以想象一下,对于将图片上传到某些服务的用户,我存储的日志条目是 [log and user data | picture content]。虽然我可以愉快地将 log and user datapicture content 分开存储,但当我检索日志时,我需要高效地获取这两个部分。

我已有的一些研究和想法:

答案表明我到目前为止已经接近最佳,但我想知道我是否错过了关于这些存储提供商或我完全错过的其他提供商的策略。此外,如果我仍然坚持使用 DB 进行某些数据存储,那么为了成本和冗余目的,如果微小的调整可以让它在多个云提供商之间高效地工作,那将会很有趣,尽管这可能只是一个白日梦。

您可以考虑将每个日志条目作为单独的 blob 存储在 Azure 存储中。有了这个解决方案;

  1. 创建一个新的 blob
  2. 读取 blob i->j
  3. 一旦通过单个 API 调用 (Put Block List)
  4. 提交,整个块 blob 内容就变得可读了
  5. 单个块 blob 最多可以存储 50K*4MB,因此您可以将整个日志条目存储在一个 blob 中。

此外,each blob has its own partition in Azure Storage。因此,Blob 可以分布在许多服务器上,以扩展对它们的访问。