将CouchDB的数据备份到关系数据库

日期: 2011-06-13 作者:nosqlfan 来源:TechTarget中国 英文

  很多团队在使用NoSQL的时候,都采用了比较保守的双定策略,将数据在NoSQL和MySQL中进行双写,这个双写可能是直接应用层写两次,可能是先写一个,再利用一些同步机制将数据同步到另一个。本文要讲的是一个利用CouchDB的Change Notifications机制来实现将CouchDB中的数据同步到关系型数据库中的例子。

  

  CouchDB的问题

  首先,作者不是由于我们上面说的原因而要做这件事。而是由于CouchDB无法满足他们的一些需求。我们知道CouchDB需要预先为所需要的查询操作定义View,然后所有的查询操作其实都是在此View上进行。所以如果你要进行的数据查询条件非常不一定,那么使用CouchDB可能就比较麻烦了。

  作者考虑了两个方法:

  1、为所有可能的查询顺序建立不同的View – 排列组合问题,你可以想像这会造成多么大的资源浪费

  2、建立一个View,存储时将不同顺序的字段存多份 – 这个浪费和上面差不多

  而实际上这种需求正是关系型数据库的强项,几乎所有的关系型数据库都支持对数据进行任意顺序的查询,不用预先确定需要进行查询的模式。只要为性能而建立好相应的索引即可。

  解决方案

  最后选择的方案是使用CouchDB的Change Notifications机制,这个机制允许对数据进行监听,当有写操作时,会执行相应的callback函数来完成你想做的操作。

  具体实现流程如下:(主要使用了couchdbkitdjango来实现)

  1、Connect to _changes feed – 连接到_changes接口以获取数据修改操作

  2、For every line in the feed – 对每一条数据执行如下两步操作

  –2.1 Determine if you want to act on it – 通过过滤规则判断数据是否要处理

  –2.2 (If yes) do something about it -如果需要处理,那么就进行相应的处理

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

作者

nosqlfan
nosqlfan

相关推荐