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