1

我们正在通过完全从 Microsoft 和 .NET 家族转向开源来彻底改革我们的产品(原因之一是成本削减和数据呈指数级增长)。

我们计划将我们的数据模型完全从 SQL Server(关系数据)迁移到 Hadoop(著名的键值对生态系统)。

一开始,我们希望同时支持这两个版本(比如 1.0 和新的 v2.0)。为了保持数据的一致性,我们计划在两个系统之间同步数据,这是一项相当具有挑战性的任务并且容易出错,但我们没有其他选择。

有点困惑从哪里开始,我正在寻找专家社区。在这个方向上的任何策略/现有文献或任何其他类型的指导都将非常有帮助。

4

2 回答 2

1

我不完全确定您的代码是如何构造的,但如果您当前有一个数据或持久层,或者至少有一个执行所有 SQL 的数据库访问类,您可以覆盖保存函数以将更改写入两个数据库。如果您没有数据层,您可能需要考虑在开始转换之前编写一个。

否则,您可以在 MSSQL 中添加触发器来更新 Hadoop,但不确定您可以在 Hadoop 中做什么来保持 MSSQL 同步。

或者,您可以有一个每 x 分钟运行一次的进程,手动同步两个数据库。

就个人而言,我会尽量避免尝试维护两个记录数据库。将更改从新的实验性数据库迁移到稳定的数据库似乎是有风险的。您有可能破坏稳定的系统。相反,我会编写一个转换器来将数据从关系数据库移动到 Hadoop。然后每天晚上左右,将您的数据复制到 Hadoop 中,并使用它来开发和测试您的新系统。如果您说您的 beta 版本只是一个测试游乐场,并且不会影响您的实际产品,我认为测试用户会理解。如果您计划对您的 UI 进行重大更改,并且担心有些人不想过渡到 2.0,那么您可能会尝试一次性解决太多问题。

这些是我想出的解决方案......祝你好运!

于 2011-06-15T14:06:52.110 回答
0

考虑使用 Flume (http://www.cloudera.com/blog/2010/07/whats-new-in-cdh3b2-flume/) 之类的排队工具在两个系统之间拆分输入。

于 2011-06-15T14:06:41.860 回答