云存储附加和日志记录
Cloud Storage Appending and Logging
哪种云服务组合可以存储包含 N 个部分的日志,这样既便宜又容易:
- 将新条目追加到日志中
- 请求日志中的
i -> j
部分,或至少 i -> N
部分
- 以上请求是否具有强一致性(即在用户附加条目
N + 1
后读取日志总是导致条目 N + 1
可用)
- 日志条目可能非常大(10 到 100 MB)所以想象一下,对于将图片上传到某些服务的用户,我存储的日志条目是
[log and user data | picture content]
。虽然我可以愉快地将 log and user data
与 picture content
分开存储,但当我检索日志时,我需要高效地获取这两个部分。
我已有的一些研究和想法:
- S3/Google Cloud Storage 似乎不允许修改对象数据,尽管 Google 允许
compose
可能有用的功能。
- Google Cloud Storage 和 Windows Azure Storage 是高度一致的,S3 不是,尽管在这里可以使用数据库来处理一致性问题。
- Microsoft Azure 可能是最好的选择,因为他们的 Blob 似乎允许操纵个人 pages/blocks。但是,我不确定使用 Blob 是否会真正满足上述要求,即使我对最大 Blob 大小的上限没有问题。例如,如果没有将日志编号与 Blob 编号相关联的单独位置 (Blob/DB),则似乎很难满足要求 2。
答案表明我到目前为止已经接近最佳,但我想知道我是否错过了关于这些存储提供商或我完全错过的其他提供商的策略。此外,如果我仍然坚持使用 DB 进行某些数据存储,那么为了成本和冗余目的,如果微小的调整可以让它在多个云提供商之间高效地工作,那将会很有趣,尽管这可能只是一个白日梦。
您可以考虑将每个日志条目作为单独的 blob 存储在 Azure 存储中。有了这个解决方案;
- 创建一个新的 blob
- 读取 blob
i->j
- 一旦通过单个 API 调用 (Put Block List)
提交,整个块 blob 内容就变得可读了
- 单个块 blob 最多可以存储
50K*4MB
,因此您可以将整个日志条目存储在一个 blob 中。
此外,each blob has its own partition in Azure Storage。因此,Blob 可以分布在许多服务器上,以扩展对它们的访问。
哪种云服务组合可以存储包含 N 个部分的日志,这样既便宜又容易:
- 将新条目追加到日志中
- 请求日志中的
i -> j
部分,或至少i -> N
部分
- 以上请求是否具有强一致性(即在用户附加条目
N + 1
后读取日志总是导致条目N + 1
可用) - 日志条目可能非常大(10 到 100 MB)所以想象一下,对于将图片上传到某些服务的用户,我存储的日志条目是
[log and user data | picture content]
。虽然我可以愉快地将log and user data
与picture content
分开存储,但当我检索日志时,我需要高效地获取这两个部分。
我已有的一些研究和想法:
- S3/Google Cloud Storage 似乎不允许修改对象数据,尽管 Google 允许
compose
可能有用的功能。 - Google Cloud Storage 和 Windows Azure Storage 是高度一致的,S3 不是,尽管在这里可以使用数据库来处理一致性问题。
- Microsoft Azure 可能是最好的选择,因为他们的 Blob 似乎允许操纵个人 pages/blocks。但是,我不确定使用 Blob 是否会真正满足上述要求,即使我对最大 Blob 大小的上限没有问题。例如,如果没有将日志编号与 Blob 编号相关联的单独位置 (Blob/DB),则似乎很难满足要求 2。
答案表明我到目前为止已经接近最佳,但我想知道我是否错过了关于这些存储提供商或我完全错过的其他提供商的策略。此外,如果我仍然坚持使用 DB 进行某些数据存储,那么为了成本和冗余目的,如果微小的调整可以让它在多个云提供商之间高效地工作,那将会很有趣,尽管这可能只是一个白日梦。
您可以考虑将每个日志条目作为单独的 blob 存储在 Azure 存储中。有了这个解决方案;
- 创建一个新的 blob
- 读取 blob
i->j
- 一旦通过单个 API 调用 (Put Block List) 提交,整个块 blob 内容就变得可读了
- 单个块 blob 最多可以存储
50K*4MB
,因此您可以将整个日志条目存储在一个 blob 中。
此外,each blob has its own partition in Azure Storage。因此,Blob 可以分布在许多服务器上,以扩展对它们的访问。