我的应用程序使用领域处于脱机状态,第一,因此,境界得到了精彩的坚持和访问数据。我喜欢它。但是,我也希望将用户数据存储在云中(用于备份,但以后我会添加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,我很想听听为什么。
这对我来说是一个重大决定,所以我会很感激所有我能得到的帮助!谢谢
我认为DynamoDB(或任何其他数据库)将为您提供您寻找的灵活性。所以是的,我会使用自定义构建API来管理设备的数据。至于实时同步和通信,特别是聊天或其他内容,同步API方法并不理想。为了专注于实时socket.io将是一个更好的主意。 – Orlando
“对Realm团队没有冒犯,但我被Parse搞砸了”---没有采取任何行动,但请注意ROS是一种自己动手解决方案,所以即使我们要走出渡渡鸟的道路,没有人可以带走你:)。 – teotwaki