【问题标题】:Handling Network connecton issues in amazon simpledb处理 amazon simpledb 中的网络连接问题
【发布时间】:2016-01-31 15:03:16
【问题描述】:

作为我的 android 应用程序的一部分,我计划使用 Amazon 提供的 simpledb NoSQL 服务。

我能够毫无问题地使用 simpledb 的 API。但是,如果出现网络连接问题,我会遇到问题。 例如:如果我在有网络连接的情况下向 simpledb 添加项目或属性[即手机在线],则复制成功。但是,如果我在没有网络连接的情况下执行相同操作 [即手机离线],然后添加一个具有网络连接的附加项目 [即手机恢复在线],则只会复制新项目。 基本上这意味着我需要记账以防万一没有网络连接时在本地存储项目(或属性),然后从本地存储中提取这些并在网络连接恢复时复制。

这里有什么我遗漏的东西吗,或者开发人员必须处理簿记来处理网络问题。

我看到 cognito 应该在这里提供帮助,但我看到它只是一个键值对本地存储。在这种情况下,我必须再次从本地存储中提取键值对,然后将其转换为键属性对并将其发送到我的 simpledb。

请告诉我如何处理此案。感谢您的回复。

【问题讨论】:

    标签: android amazon-web-services


    【解决方案1】:

    SDK 具有高级和低级客户端的概念。低级客户端只是对服务器进行请求/响应。如果设备离线,则请求失败,仅此而已。您使用的 SimpleDB 客户端是低级客户端,因为 SimpleDB 没有高级客户端。

    当前有 4 个高级客户端在设备离线时处理保存数据。移动分析、S3 传输实用程序、Kinesis Recorder、Cognito Sync Manager。在您的情况下,听起来只有 S3 Transfer Utility(您可以序列化某些东西的 blob 数据存储)或 Cognito Sync(键/值)可能有用,这完全取决于数据的结构。我不建议将其中任何一个用作严格的离线存储,然后再放回 SimpleDB。如果您检测到设备离线,我会使用 S3/Cognito 完全存储/检索数据,或者坚持使用 SimpleDB(或 Dynamo)并在本地存储数据。

    捕捉来自 SimpleDB 客户端的网络异常,然后将请求存储在本地 SQLite 数据库中并不难,当您检测到网络已恢复(或在应用启动时可用)时,您可以发送您存储的请求。

    希望对你有帮助

    【讨论】:

    • 感谢 WestonE 的回复,非常感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-15
    • 1970-01-01
    • 1970-01-01
    • 2015-12-10
    相关资源
    最近更新 更多