【发布时间】:2016-06-09 11:13:39
【问题描述】:
情况:
我有一个网站,用户可以在其中输入信息、保存信息、刷新页面并查看他们刚刚输入的信息。
目前我正在使用 sql 数据库,但计划迁移到一些云存储服务。
- 我将用户信息存储在 json 文档中。这通常是 30 KB 或更少,但最坏的情况可能是 900 KB。
- 我想要强写后读一致性。
- 我希望 json 文档在未来会增长,但不会超过 1 MB。
- 我希望尽可能快地保存/加载(这是最不重要的)。
调查:
- AWS DynamoDB 将字符串的最大大小限制为 400 KB。我可以尝试压缩 json 文档来满足这个要求,但我担心将来文档会增长到无法压缩到 400 KB 的大小。
- AWS S3 可以存储高达 5 TB 的文件。但是,它不支持写后一致性读。
问题:
我不熟悉 Windows Azure 或 Google Cloud。所以我的问题是:
- Windows Azure / Google Cloud 是否具有强读写一致性?
- Windows Azure / Google Cloud 对单个字符串大小有任何限制吗?
- 我目前使用 EC2 主机作为服务器。三者的上传速度有何不同? (我猜 S3 更快,因为我使用的是 EC2?)
- 是否还有其他数据存储服务支持强读写一致性、1 MB 单个字符串大小、1 MB 字符串的保存/加载时间小于 5 秒?
【问题讨论】:
-
Google Cloud 产品有多种,每种产品都有自己的一致性承诺。对于像这样的小对象,您可能需要 Google Cloud Datastore,或者如果您计划将它们变得非常大,您可能需要 Google Cloud Storage。两者都有优点和缺点,但在直接读取特定对象或行时两者都具有很强的一致性。您可能也有兴趣使用 Firebase 等更高级别的服务:firebase.google.com
-
奇怪的是,SimpleDB 具有一致的读取和 1MB 的最大响应大小,任何单个属性的最大大小为 1K...所以也许有一些有用的东西...但不知道你为什么想要远离 RDBMS 的黄金标准。
-
感谢大家的回复。我的最终设计是每次用户单击保存时创建一个新的 S3 文档,更新 DynamoDB 以存储新的 S3 链接,删除旧的 S3 文档以释放空间。在 S3 中创建新文档具有很强的一致性,并且在 DynamoDB 中仅保存一个 S3 链接不会给我任何空间问题。谷歌云存储绝对是一个不错的选择,但由于我使用的是 EC2 主机,我觉得 S3+DynamoDB 是最好的选择
-
@BrandonYarbrough 对于大型项目(除了每个实体的写入速度限制)不使用 Google Cloud Datastore 有什么特别的原因吗?
标签: azure amazon-web-services amazon-s3 google-cloud-storage amazon-dynamodb