我正在开发一个使用SimpleDB存储其数据的Facebook应用程序,但我意识到亚马逊并没有提供备份该数据的方法(至少我知道)如何做SimpleDB备份?
而且SimpleDB很慢。每秒可以获得约4个列表,每个列表包含100条记录。不是备份大量记录的好方法。
我在网络上发现了一些服务,可以为您提供备份服务,但我不愿意为他们提供我的AWS凭据。
所以我虽然关于使用线程。问题是,如果您为域中的所有键进行选择,则需要等待第一页的next_token值才能处理第二页等等。
我在想这个问题的解决方案是基于Facebook ID的最后两位数字创建一个新属性。因此,我将开始一个选择“00”,另一个为“01”等的线程,可能有可能运行100个线程并且备份速度要快得多(至少在理论上)。一个相关的解决方案是将该域分成100个域(这样我就可以单独备份每个域),但这会破坏我需要做的一些选择。另一个可能更友好的PHP解决方案是使用cron作业来备份可以说10,000条记录并保存“next_token”,然后下一个作业开始于next_token等。
有没有人有更好的解决方案呢?如果它是一个PHP解决方案,它会很棒,但是如果它涉及其他方面的话,无论如何它都会受到欢迎PS:在你提到它之前,据我所知,PHP仍然不是线程安全的。我知道,除非在备份过程中我停止写入,否则会出现一些一致性问题,但在这种情况下我并不担心它。
http://aws.amazon.com/running_databases/#storage_practices的AWS文档说“此外,一些备份工具已经由Amazon SimpleDB生态系统开发,提供域数据到Amazon S3的简单备份。“这是你最好的选择。使用备份工具备份到S3。然后,您可以将数据从S3传输到任何地方。 – 2011-06-01 01:05:43
感谢您的回复Frank!但我似乎没有在任何亚马逊网页上找到这些工具。我发现的唯一的第三方工具,与亚马逊没有任何关系,因此不确定哪些是安全的,哪些不是。 – Cristian 2011-06-01 15:48:01