我们已经通过PHP构建了一个灯栈API 应用程序。这目前使用本地mySQL实例。我们主要是在AngularJS中实现视图。
为了使用Firebase,我们需要在mySQL中的权威存储之间同步数据,并尽可能接近于实时。这意味着应用程序的其他部分,如果不是实时的,不使用Firebase,也可以提供新的内容,这些内容是最近输入到系统中的。
我知道Firebase本质上是云中的noSQL数据库。我的问题是-如何编写包装器或将我的Firebase的规范版本同步到记录数据库的方法- mySQL?
更新回答-我们的最终决定-放弃将Firebase作为选项
我们已经决定不这么做了,因为我们可以很容易地在同一台服务器上拥有一个socket.io实例,该实例与mySQL具有极低的延迟连接,这样两者就可以保持同步。当资源和端点可以存在于本地主机上时,不需要穿越web。它还让我们可以选择在没有任何互联网连接的情况下运行我们的应用程序,这对于我们向大公司出售一款内置设备是很重要的。
像Firebase这样的noSQL同步平台实际上只是一个临时存储,它使读/写在半实时中更快。如果他们试图进入“我们也坚持一切为你”的业务-这是一个完全不同的要求,需要更多的承诺。
保证mySQL和Firebase之间的最终一致性更重要的是,首先要正确处理--以防止出现问题。此外,RDMS对于我们的应用程序来说是必不可少的--这是解决大量数据问题的唯一方法--我们的分析/数据映射中存在大量问题--世界上大多数人仍然使用像mySQL这样的RDMS,这是很有道理的。通过Amazon和Google,你也可以让这些问题变得非常可靠。
除了扩展Firebase实际上为我们解决的实时同步之外,没有其他开源框架已经解决的具体问题。如果他们的JS库能够很好地处理离线场景(当您开始脱机时),我可能已经考虑过了,但它还没有做到这一点。
所以,YMMV -但在我们的具体情况下,我们没有考虑Firebase,因为上面给出的原因。
发布于 2014-10-29 15:18:08
整个话题非常广泛,肯定过于宽泛,无法给出一个简单的答案。
我将坚持您在评论中提供的用例:
假设您在mySQL中存储了一个检查表,其中包含一些属性和一组步骤。这些步骤存储在另一个表中。当有人在Firebase上更新这个检查清单时--我将如何同步mySQL?
如果您坚持将Firebase和mySQL结合到这个用例中,我会:
var ref = new Firebase('https://my.firebaseio.com/workqueue')ref.push({ task: 'id-of-state', newState: 'newstate'})1. monitors the work queue (`ref.on('child_added'`)
2. updates the item in the mySQL database
3. removes the task from the queue
有关Firebase之上工作队列的示例,请参阅此github项目:https://github.com/firebase/firebase-work-queue
https://stackoverflow.com/questions/26611107
复制相似问题