我已经完全部署了长沙发(服务器,同步网关和lite),并有一个API,移动应用程序和Web应用程序都在使用它。
它工作得很好,但是我想知道使用Sync Gateway API相对于Couchbase SDK是否有任何优势?具体来说,我想知道Sync Gateway是否可以比SDK(可能是内部队列/缓存系统)更好地处理大量操作,但似乎无法找到确定的文档。
目前,API使用C#Couchbase SDK,而我们很少使用SyncGateway(仅用于同步移动应用程序)。
首先,一些相关的背景信息 :
每个需要同步到Couchbase Lite(CBL)客户端的文档都需要由同步网关(SGW)处理。无论是通过SGW API编写文档还是通过服务器写入(N1QL或SDK)引入文档,都是如此。后一种情况称为“导入处理”,其中SGW通过DCP feed读取(通过N1QL)写入存储桶的文档,然后由SGW处理该文档,并使用相关的同步元数据写回到存储桶。
先决条件:
为了使SGW通过N1QL / SDK直接写入进口单证,您必须启用讨论“共享分区的访问权限”和进料加工这里
非流动文件:
如果您有永远不会同步到CBL客户端的文档,那么选择是显而易见的。使用服务器SDK或N1QL
移动文档(同步到CBL客户端的文档):
假设您正在与CBL 2.x客户端同步的SGW 2.x
如果您在服务器端编写了需要同步到CBL客户端的文档,请考虑以下内容
服务器端写入率:
如果您正在查看服务器端的写入数据,其持续速率大大超过1.5K / sec(比如说5K / sec),那么您应该采用SGW API路由。通过服务器N1QL查询进行批量更新很容易,但请记住SGW仍需要跟上并进行导入处理(在后台进行了讨论)。
这意味着,如果您正在通过SDK / N1QL进行大量更新,则必须对其进行速率限制,以便SGW能够保持(通过SDK进行批量更新)
就是说,重要的是要考虑以下事实:如果SGW跟不上DCP提要上的写入吞吐量,那么无论写入如何发生(SGW API或N1QL),都会导致延迟。
如果您不希望服务器上的持续写入率很高,那么请使用N1QL。
删除处理:
没关系。在共享存储桶访问下,通过SDK或SGW API进行的删除将导致逻辑删除。在这里了解更多
SGW特定配置:
自然,如果您要处理SGW特定的配置,创建SGW用户,角色,那么您将为此使用SGW API。
冲突处理:
在2.x中,这无关紧要。在CBL方面处理冲突。
SGW API面临的挑战
在现实世界中,最大的挑战可能是使用SG API路径意味着要么在外部系统中存储有关SG版本ID的信息,要么以读写方式执行每个变异(因为我们没有办法在不提供修订ID的情况下放置文档)