swift – 将Realm与Amazon DynamoDB一起使用
我的应用程序是离线优先的,因此Realm非常适合持久化和访问数据.我喜欢它.但是,我还想将用户数据存储在云中(用于备份,以防我稍后添加Web支持).我知道这正是Realm Object Server的用途,但我认为我更喜欢使用DynamoDB,原因如下:
1)我已经投资了DynamoDB和亚马逊的身份验证(Cognito). 2)我喜欢Realm实际上是一个关系数据库,因为从客户端我需要运行复杂的查询.但是,在后端我主要只想以一种我可以轻松访问它的方式备份所有数据,并在需要时通过Lambda函数进行操作.我完全没有这方面的NoSQL解决方案,我的理解是DynamoDB是一个具有水平扩展的经济高效的数据库,这对我很有吸引力.如果我想用Realm Object Server以这种方式访问??数据,我的理解是它每月至少要花费1,500美元. 3)对Realm团队没有任何冒犯,但我被Parse关闭所搞砸了,所以我想使用一些我可以信赖的东西作为我的后端5年左右. 无论如何,有了这个,这就是我目前正在做的工作: 1)每当我创建或编辑Realm对象时,我都有逻辑将该更改映射到我的DynamoDB模式(由比Realm少得多的表组成). 2)我将这些更新称为UpdateTasks并将其排队并根据需要合并它们(例如,如果您多次更改同一属性). 3)我浏览队列并将UpdateTasks块传递给我编写的Lambda函数,该函数将迭代更新并对DynamoDB执行必要的put或update命令. 4)我有重试逻辑,以防你离线或请求失败 5)如果你有一部新手机并且已登录,假设所有内容都已正确同步,我有一个单独的Lambda函数,可以获取所有用户的数据并像以前一样填充Realm文件. 就像我说的那样,所有这一切现在都在发挥作用,但它感觉很脆弱,我不禁觉得我这样做是错误的.此外,如果我想添加一些社交功能,它不支持双向同步或实时通信 所以我的问题是,如果这是使Realm与DynamoDB同步的合理方法,或者是否有更好/更强大的方法?此外,如果我应该重新考虑使用Realm Object Server或其他东西而不是DynamoDB,我会有兴趣听到原因. 对我来说这是一个重大的决定,所以我很感激能得到的所有帮助!谢谢 解决方法
免责声明:我是ROS的领头羊,所以我显然有偏见.我发布这不是一个答案,而是作为一般评论,不适合评论格式.
你会通过将Realm称为关系数据库来激怒众神.我们支持查询和链接,以及所有这些,但我们与关系数据库非常非常不同;).
您通过自己重新实现同步,错过了Realm Mobile Platform提供的许多非常重要的功能. 主要是,我们有几千行代码来处理无冲突的合并解决方案,在这种情况下,您有多个客户端将数据写入同一个Realm,而所有客户端都处于脱机状态.此外: >我们为您处理网络.您不必担心或不关心设置连接,客户端和服务器之间的协议,以及是否正确地序列化. 另一方面: 您构建的系统非常类似于我们用于向服务器后端发送订单/请求的技术.通常,我们在客户端上创建FooRequest对象,进行同步,然后事件处理程序选择它们,处理它们,并创建一个FooResponse对象,该对象将同步回客户端. 总的来说,我对你在vanilla-Realm之上构建了所??有这些东西印象非常深刻.如果有一天我们有机会,我很乐意看看你的整个筹码. 最后,我们正在制定定价,因为您对价格点的反馈并不是唯一的(但它非常有用!). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |