将领域与Amazon DynamoDB一起使用



我的应用程序首先是离线的,因此领域对于持续和访问数据非常出色。我喜欢它。但是,我还想将用户数据存储在云中(用于备份,但如果我稍后添加Web支持)。我知道这正是Realm Object Server的目的,但是我想我希望出于以下原因使用DynamoDB:

1)我已经投资于DynamoDB和Amazon的身份验证(Cognito)。

2)我喜欢该领域有效地是一个关系数据库,因为我确实需要运行复杂的查询。但是,在后端,我主要想以一种可以轻松访问并通过lambda函数来操作的方式备份所有数据)。我对NOSQL解决方案完全很好,我的理解是DynamoDB是一个具有水平缩放的具有成本效益的数据库,对我很有吸引力。如果我想通过Realm Object Server以这种方式访问数据,我的理解是每月至少要花费1,500个。

3)对领域的团队没有冒犯,但是我被解析关闭而被搞砸了,所以我想使用我可以相信的东西将成为我的后端5年以上。

无论如何,以此为止,这就是我目前正在制作这项工作的方式:

1)每当我创建或编辑一个领域对象时,我都会有逻辑将其映射到我的dynamodb架构中(由少于领域的表少)。

2)我调用这些更新UpdateTasks,然后将它们排队并根据需要合并(例如,如果您多一次更改相同的属性)。

3)我经过队列并将UpdateTasks的块传递给我写的lambda函数,该功能将通过更新进行迭代,并执行必要的put或更新命令。

4)如果您离线或请求失败,我已经有重试逻辑

5)假设如果您有一台新手机并登录了所有内容,我都有一个单独的lambda功能,可以获取所有用户的数据并像以前一样填充领域文件。

就像我说的那样,所有这些都在起作用,但是感觉很脆弱,我不禁会以错误的方式觉得自己要解决这个问题。另外,如果我想添加一些社交功能,它不支持双向同步或实时通信

所以我的问题是,这是否是与DynamoDB同步领域的合理方法,或者是否有更好/更健壮的方法?另外,如果我应该使用Realm Object Server或其他内容而不是DynamoDB进行重新考虑,我很想听听为什么。

对我来说,这是一个重大决定,所以我感谢我能获得的所有帮助!谢谢

免责声明:我是ROS的主角,所以我显然很有偏见。我将其发布不是作为答案,而是作为不适合评论格式的一般评论。

我喜欢这个领域有效的数据库,因为我确实需要运行复杂的查询。

您将通过称领域为关系数据库来激怒众神。我们支持查询和链接以及所有这些,但是我们与关系数据库完全不同;)

另外,如果我应该使用Realm Object Server或其他内容而不是DynamoDB重新考虑,我很想听听为什么。

您错过了通过重新实现同步的领域移动平台提供的许多非常重要的功能。

主要是,如果您有多个客户将数据写入同一领域,而全部脱机时,我们有数千行代码来处理无冲突的合并解决方案。另外:

  • 我们为您处理网络。您不必担心或关心建立连接,客户端和服务器之间的协议,也不需要正确地序列化。
  • 我们的协议也非常轻巧,因为我们只能从领域数据库中传输事务日志;不是序列化对象或类似的物体。
  • 我们的同步非常快。当我们启动RMP时,您可能已经看过Draw Demo视频。由于我们的同步直接集成到领域,因此我们能够通过额外的性能进行挤压。我们已经构建了许多聊天应用程序,而不是内部的聊天应用程序,人们对传输消息的速度不断感到惊讶。
  • 您在服务器和客户端上使用相同的SDK和API(尽管另一种语言)。
  • 我们不断添加您不必手动构建的功能(例如经常要求的部分复制和对象级权限)。

另一方面:

您构建的系统非常类似于我们将订单/请求发送到服务器后端的技术。通常,我们在客户端上创建FooRequest对象,这些对象被同步,然后事件处理程序挑选这些对象,处理它们并创建一个FooResponse对象,该对象被同步到客户端。

总的来说,您印象深刻的是,您已经在Vanilla-Realm之上建造了所有这些。如果有一天我们有机会,我很想看看您的整个堆栈。

最后,我们正在努力定价,因为您对价格的反馈不是唯一的(但这很有帮助!)。

相关内容

  • 没有找到相关文章

最新更新