2017-02-21 232 views
2

我的应用程序使用领域处于脱机状态,第一,因此,境界得到了精彩的坚持和访问数据。我喜欢它。但是,我也希望将用户数据存储在云中(用于备份,但以后我会添加Web支持)。我知道这正是Realm Object Server的用途,但我认为我更愿意使用DynamoDB的原因如下:与亚马逊DynamoDB

1)我已经投资了DynamoDB和亚马逊的认证(Cognito)。

2)我喜欢那个境界实际上是一个关系型数据库,因为来自客户端我需要运行复杂的查询。然而,在后端我大多只想备份,我可以很容易地访问它,如果需要通过lambda函数处理)的方式中的所有数据。我与这一个的NoSQL解决方案完全好,我的理解是,DynamoDB是一种经济高效的数据库与水平扩展,这是吸引我。如果我想用Realm Object Server以这种方式访问​​数据,我的理解是每月至少需要1500美元。 3)没有进入Realm团队的进攻,但我被Parse关闭了,所以我想用一些我可以信任的东西作为我的后端将会有5年左右的时间。

无论如何,有了这样的方式,这里就是我目前如何使这项工作:

1)每当我创建或编辑一个域对象,我有逻辑,这将是改变映射到我的DynamoDB模式(这是由远远少于Realm的表组成的)。

2)我把这些更新称为UpdateTasks,我将它们排队并根据需要合并它们(例如,如果你多次更改同一个属性)。

3)我通过队列并将UpdateTasks块传递给我写的Lambda函数,该函数将遍历更新并执行必要的放入或更新命令到DynamoDB。

4)我的情况下,你是离线或请求失败

5)假设一切正常同步,如果你有一个新的手机,并签署了重试逻辑的地方,我有一个单独的拉姆达函数将获取所有用户的数据并像以前一样填充Realm文件。

就像我说的,这一切工作的权利,但感觉脆弱,我不禁觉得我要对这个错误的方式。此外,它不支持双向同步或实时通信,如果我想添加一些社交功能

所以我的问题是,如果这是一个合理的方法使Realm与DynamoDB同步或者如果有更好/更多健壮的方式?另外,如果我应该重新考虑使用领域对象服务器或别的东西来代替DynamoDB,我很想听听为什么。

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

+0

我认为DynamoDB(或任何其他数据库)将为您提供您寻找的灵活性。所以是的,我会使用自定义构建API来管理设备的数据。至于实时同步和通信,特别是聊天或其他内容,同步API方法并不理想。为了专注于实时socket.io将是一个更好的主意。 – Orlando

+0

“对Realm团队没有冒犯,但我被Parse搞砸了”---没有采取任何行动,但请注意ROS是一种自己动手解决方案,所以即使我们要走出渡渡鸟的道路,没有人可以带走你:)。 – teotwaki

回答

1

声明:我是ROS的领导者,所以我显然有偏见。我发布这不是一个答案,但作为一般意见,不适合评论格式。

我喜欢Realm实际上是一个关系数据库,因为从客户端我需要运行复杂的查询。

你会通过调用Realm关系数据库来激怒众神。我们支持查询,链接和所有这些,但我们与关系数据库非常不同)。

此外,如果我应该重新考虑使用Realm对象服务器或其他的东西而不是DynamoDB,我有兴趣听听为什么。

您错过了Realm Mobile Platform提供的许多非常重要的功能,您可以自己重新实现同步。

主要是,我们有几千行代码来处理无冲突合并解决方案,在这种情况下,您有多个客户端将数据写入同一个领域,而所有脱机。另外:

  • 我们为您处理网络。您不必担心或关心设置连接,客户端和服务器之间的协议,以及事物是否正确序列化。
  • 我们的协议也非常轻便,因为我们只能从Realm数据库传输事务日志;没有序列化的对象或类似的东西。
  • 我们的同步速度非常快。当我们启动RMP时,您可能已经看过了绘制演示视频。因为我们的同步是直接集成到Realm中的,所以我们可以通过挤压额外的性能。我们已经建立了许多聊天应用程序,而不是内部的,而且人们对邮件传输的速度一直感到惊讶。
  • 您在服务器和客户端上使用相同的SDK和API(尽管是不同的语言)。
  • 我们不断添加不需要手动构建的功能(例如经常请求的部分复制和对象级权限)。

在另一方面:

你有非常密切的内置系统类似于我们采用订单/请求发送到服务器后台的技术。通常,我们在客户端上创建FooRequest对象,这些对象被同步,然后事件处理程序选择这些对象,处理它们,并创建一个将同步回客户端的对象。

总的来说,我很印象深刻,你已经建立了所有这些在香草领域之上。如果有一天我们有机会,我很乐意看看你的整个筹码。

最后,我们正在研究我们的定价,因为您对价格点的反馈不是唯一的(但它非常有帮助!)。