我们正在大修我们的产品,完全从微软和.NET家族转向开源(其中一个原因是成本削减和数据的指数级增长)。
我们计划将我们的数据模型完全从SQL Server (关系数据)迁移到Hadoop (著名的键值对生态系统)。
一开始,我们希望同时支持两个版本(比如1.0和新的v2.0)。为了保持数据的一致性,我们计划在两个系统之间同步数据,这是一项相当具有挑战性的任务,而且容易出错,但我们没有其他选择。
我有点困惑于从哪里开始,我仰望着专家社区。在这个方向上,任何策略/现有文献或任何其他类型的指导都将非常有帮助。
发布于 2011-06-15 22:06:52
我不完全确定您的代码是如何构造的,但是如果您当前有一个data or persistence layer,或者至少有一个数据库访问类,您可以覆盖save函数以将更改写入这两个数据库。如果您没有数据层,则可能需要考虑在开始转换之前编写一个数据层。
否则,您可以在MSSQL中添加triggers来更新Hadoop,但不确定您可以在Hadoop中做些什么来保持MSSQL同步。
或者,您可以有一个每x分钟运行一次的进程,该进程手动同步两个数据库。
就我个人而言,我会尽量避免维护两个记录数据库。将更改从新的实验性数据库转移到您的稳定数据库似乎是有风险的。你有机会破坏你的稳定系统。相反,我会编写一个转换器来将数据从关系数据库移动到Hadoop。然后,每天晚上左右,将您的数据复制到Hadoop中,并将其用于新系统的开发和测试。如果你说你的测试版只是一个测试场地,不会影响你的在线产品,我想测试用户会理解的。如果您计划对您的UI进行重大更改,并且担心某些人不想过渡到2.0,那么您可能试图一次处理太多问题。
这些都是我想出来的解决方案。祝好运!
发布于 2011-06-15 22:06:42
考虑使用像Flume (http://www.cloudera.com/blog/2010/07/whats-new-in-cdh3b2-flume/)这样的排队工具在两个系统之间拆分您的输入。
https://stackoverflow.com/questions/6358291
复制相似问题