【发布时间】:2011-05-31 23:26:10
【问题描述】:
我正在开发一个使用 SimpleDB 存储其数据的 Facebook 应用程序,但我意识到 Amazon 并没有提供备份数据的方法(至少我知道)
而且 SimpleDB 很慢。您每秒可以获得大约 4 个列表,每个列表包含 100 条记录。不是备份大量记录的好方法。
我在网络上找到了一些可以为您提供备份的服务,但我不愿意将我的 AWS 凭证提供给他们。
所以我想使用线程。问题是,如果您对域中的所有键进行选择,则需要等待第一页的 next_token 值才能处理第二页,依此类推。
我为此考虑的一个解决方案是根据 Facebook id 的最后 2 位数字创建一个新属性。所以我会启动一个线程,选择“00”,另一个选择“01”,依此类推,可能有可能运行 100 个线程并更快地进行备份(至少在理论上)。一个相关的解决方案是将该域拆分为 100 个域(这样我可以单独备份每个域),但这会破坏我需要做的一些选择。另一个可能对 PHP 更友好的解决方案是使用 cron 作业来备份假设 10,000 条记录并保存“next_token”,然后下一个作业从 next_token 开始,等等。
有人对此有更好的解决方案吗?如果它是一个 PHP 解决方案,那就太好了,但如果它涉及到其他东西,无论如何都欢迎。
PS:在你提到之前,据我所知,PHP 仍然不是线程安全的。而且我知道除非我在备份期间停止写入,否则会出现一些一致性问题,但在这种特殊情况下我并不太担心。
【问题讨论】:
-
aws.amazon.com/running_databases/#storage_practices AWS 文档说“此外,Amazon SimpleDB 生态系统还开发了许多备份工具,为 Amazon S3 提供简单的域数据备份。”。那是你最好的选择。使用备份工具备份到 S3。然后,您可以将数据从 S3 传输到您喜欢的任何地方。
-
感谢您的回复,弗兰克!但我似乎在任何亚马逊页面中都找不到这些工具。我发现的唯一工具是第三方工具,它们与亚马逊没有任何关系,所以不确定哪些是安全的,哪些不安全。
标签: php backup amazon-simpledb