我需要将我的关系数据库(Oracle或Mysql)同步到CouchDb。有没有人知道怎么可能。如果它拥有比我们如何通知CouchDb发生的任何变化的关系数据库。
提前谢谢。
发布于 2011-06-29 09:39:50
首先,您需要改变对数据库建模的看法。同步到CouchDB不仅仅是创建所有表的文档,并将它们推送到Couch。
我正在使用CouchDB制作一个站点,我将描述我所做的事情,也许它会对您有所帮助:
从一开始,我们就使用MySQL作为我们的主数据库。我安排了一些实体,包括他们的关系。为了加快前端的速度,我决定使用CouchDB作为内容存储库。这样做的好处是充分准备了包含所有关系数据的文档,这样就可以以更少的开销获取数据。因为文档可以包含相关实体--比如包含所有答案的问题文档--我首先决定了我想要推送给Couch的顶级实体。在我的例子中,只有问题会被推送到Couch,而这些文档将包含答案,并且可能包含一些元数据,例如标记、用户信息等。当我在前端请求一个问题时,我只需要获取一个文档就可以得到我当时需要的所有信息。
下面是第二个问题:如何将更改通知CouchDB。在我们的示例中,数据中的所有更改都是使用CMS完成的。我的代码中有一个点,所有编辑操作都会调用这个点。这就是我连接到一个将对象保存到CouchDB的函数的地方。该函数确定该对象是否需要持久化(即:它是否是顶级实体),然后创建该对象的文档(考虑某种类型的toArray函数),并递归地获取其所有关系。然后将完整的文档推送到CouchDB。
现在,在您的例子中,这里的变量可能是完全不同的,但是基本思想是相同的:找出您想要保存的文档以及它们的样子。然后编写一个函数,该函数构成这些文档,并确保在对关系数据库进行更改时调用该函数。
通知CouchDB更改
CouchDB非常简单。可能最简单的事情就是直接更新现有的文档。实现这一目标的方法有两种:
views值递增了”),那么编写_update函数似乎是谨慎的。更新功能非常简单:它们接收HTTP查询和文档;修改文档;然后CouchDB存储新版本。在Javascript中编写更新函数,它们在服务器上运行。这是将公共操作“压缩”为更简单(更少) HTTP查询的一种很好的方法。https://stackoverflow.com/questions/6517975
复制相似问题