我有点困惑,因为我对CouchDB的了解较少。让我用简单的话来解释。我正在开发一个iphone应用程序,我的客户可能会要求android版本。我使用CouchDB作为这个应用程序的数据存储。
我们设计了一个后端,管理员可以从那里设置/更新信息。所有更新的信息应复制到所有iphone设备。当我说从服务器复制到设备时,我并不是指从一个iphone设备复制到另一个设备。表示更新的源始终为服务器。
我的客户还希望,如果可能的话,大多数功能应该离线工作。为了让一些功能离线,客户要求我使用CouchDB和TouchDB(在iphone上),这将是自动同步的。
根据我的说法,CouchDB不是为此目的而设计的,而是为复制而设计的,这是分布式计算所需的,其中数据源不是一台服务器,而是多台服务器。
使用CouchDB/TouchDB时,我遇到了很多问题。其中一个大问题是我的逻辑和UI实现一起构建在我的xcode上。如果明天我要开发Android应用程序,那么我必须在android语法中实现相同的逻辑。逻辑上的更改需要同时更新两个版本。更令人沮丧的是,如果客户明天想要开发windows和BB版本。
为了避免这种情况,我建议我的客户我们应该使用3层架构,我们将构建一个中间件,并将我们的逻辑保留在那里。我们唯一需要在应用程序层面开发的工作是通过WebService和当前UI从中间件获取数据。
但在向我的客户建议之前,我想从专家那里确认我的想法。我可能错了,因为我不太了解CouchDB,也许CouchDb只为离线/在线设置而设计。
请在这里等待来自专家的意见。
发布于 2013-03-09 09:29:10
我现在正在做类似的事情,所以我可以分享我的发现。
我们使用BigCouch (由Cloudant管理的CouchDB分支,提供了一个Couch机器集群)来存储数据,然后使用iOS的TouchDB将数据复制到移动设备上。
我们已经能够让TouchDB与BigCouch协同工作,但它在前进的道路上并不是没有一些颠簸。TouchDB利用了CouchDB中内置的现有复制功能,并很好地处理了它。
根据我的经验,TouchDB在离线模式下也能很好地工作。复制将从设备脱机时停止的位置继续。你也可以配置Touch来做推,拉--或者两者都做,所以这很好。
真正的问题是你什么时候想要迁移到Android。TouchDB Java端口现在处于一种糟糕的状态。它是存在的,但还没有准备好投入生产。事实上,就在这周,我在Twitter上看到,他们正试图雇佣某人来接管这个项目。
即使TouchDB的Java port已经准备好投入生产,你也是对的,你必须重写Android的代码。无论您使用哪种技术,情况都是如此。
https://stackoverflow.com/questions/15292608
复制相似问题