这个问题是关于数据库的,但我更喜欢在这里发布,而不是在dba.stackexchange中发布。原因是我关心应用程序和数据库设计。程序员可以在这方面提供更好的帮助。
我已有四年历史的.NET应用程序正在使用MySQL 5.1数据库服务器作为后端。数据库运行良好。没有什么性能问题让我们担心。但是我想尝试一些高级的数据库特性,比如分区、复制和集群。我以前从未使用过这些概念,我肯定可以在现有的数据库上尝试这些特性,但是我有一些其他的计划。
我想使用作为一个实验数据库。来自MySQL的记录需要同步到DB2数据库,我希望在我的应用程序中使用DB2数据库来处理报表。
有什么免费的工具来同步这两个数据库吗?我是否需要使用两个连接字符串,第一个涉及MySQL用于插入/更新/删除,第二个涉及DB2用于报告?
这种愚蠢的方法在现实世界中会在某些情况下使用吗?
发布于 2011-07-26 17:09:27
这是数据库世界中常见的场景。很高兴看到有人想学它。公司总是向不同的系统来回发送数据(包括它们的系统、客户系统和供应商系统)。我不能用免费的工具来做这件事,因为我生活在Server世界,而SSIS是我们使用的工具,它与Server一起使用。但是你想要搜索的是ETL工具。这方面的工具是存在的,我只是不知道哪些是最好的。ETL代表提取、转换和加载,这是将数据从一个数据库转移到另一个数据库的过程中的步骤。
让我描述一下在两个系统之间来回发送数据时需要考虑的一些问题。第一个也是最重要的一点是,这两个数据库在结构上很不可能是简单的。其中一个区域可能不存在。数据类型将有所不同。商业规则将是不同的。查找值将有所不同。
您必须处理一个db中将存在的state表,并且所有地址都必须在所需的state字段中使用有效的2位美国州代码,但是数据来自一个表,该表允许将任何值(甚至没有值)放入address表中的州字段,因此它具有像Virginia、Ohoi (而不是俄亥俄州)、CA、ON (加拿大的fo安大略省)、以及未知的值以及空值。你必须弄清楚,那些记录的数据不适合接收数据库。
您需要考虑如何将现有记录与数据库中的记录匹配。
您必须考虑的另一件事是如何处理由于查找和修复重复项而被一个数据库合并的数据。您需要有办法确保它被合并到另一个数据库中吗?
你得考虑到表演。这可能是一个紧张的过程,需要两个数据库的大量资源。您需要考虑如何将对数据库其他用户的影响降到最低。
大多数ETL工具将允许您直接发送到其他数据库(通常是在同一个网络中),而其他时候,您需要创建一个或多个文件以发送到另一个位置的clinet。然后您需要考虑发送的数据的结构应该是什么。如果您有一个非规范化文件或多个文件,可以重新选择您自己的数据库的规范化方式。发送方是否应该将数据清理到接收方规范,或者相反,或者两者都应该进行一些清理。是否有法律要求(例如将病人数据从docotprs办公室发送到医院)。
还有很多,ETL是一个复杂的专业,但我认为这足以让你开始思考一旦你找到你的工具你必须做的计划。
发布于 2011-07-26 16:24:52
那么,您不仅需要两个不同的连接字符串,还需要完全不同的数据库连接器。然后真正的乐趣开始了。
很可能DB2使用不同的SQL语法,因此您需要检查所有选择查询是否实际生成相同的输出。加号:每个数据库制造商都有一些自定义特性,这些特性内置于SQL的方言中。在MySQL下工作的东西不能自动保证与DB2一起工作。这意味着仅仅将数据传输或复制到DB2数据库本身就可能是一项主要工作。
在任何真实世界的场景中,我都没有遇到过这种方法,但是,我并不知道存在的每一个真实世界场景。
从经验来看,我建议你最好避开这类事情,除非你有足够的理由走这条路。你最有可能在一个痛苦的世界中获得很少的好处。
https://softwareengineering.stackexchange.com/questions/96128
复制相似问题