ob数据库6亿数据快速比较有哪些高效的技术方案

1.需求真实场景:新老系统的并行测试,其中新系统是ob数据库,老系统是db2 数据库,新老系统相同数据源初始化后,进行业务逻辑运作,运作结束后,新老结果集t_old[3亿],t_new[3亿]的快速比对,一致正确,不一致则写入差异表t_dif[最多6亿],而后找原因修复bug, 目前数据量大,就想着要做一个快速比对的工具。
2.ob数据库6亿数据快速比较有哪些高效的技术方案?如果大数据框架spark处理,那就最好把数据先导入到Hive分区表中,然后使用sparkSQL进行处理。在数据库方面,除了表分区+聚合查询外,外还有哪些框架或者技术方案?

OB不是提供了OMS吗,直接用OMS全量校验功能啊,因为你2边数据已经都存在了,所以只只需要勾选全量校验就可以了

4核32G 机器,oms全量校验6亿数据预计多久完成

1. 使用OceanBase数据库内部特性

1.1 表分区

  • 分区表:可以利用OceanBase数据库的分区表特性,将数据按照一定的规则(例如范围分区、列表分区等)进行分区,这样可以有效地减少每次比较时需要扫描的数据量。
  • 分区索引:确保在分区键上建立索引,以便更快地定位到需要比较的数据。

1.2 列式存储与向量化执行

  • 列式存储:OceanBase V4.3.x版本中引入了列式存储,这有助于加速数据分析和比较的速度。
  • 向量化执行:利用OceanBase的向量化执行引擎,可以进一步提升查询性能。

1.3 二级索引

  • 二级索引:创建适当的二级索引可以帮助快速定位到需要比较的数据。

2. 利用大数据框架Spark

2.1 数据导出

  • 导出数据到HDFS:可以先将OceanBase中的数据导出到Hadoop的HDFS文件系统中。
  • 使用Sqoop工具:可以使用Sqoop工具将OceanBase中的数据导入到Hive表中。

2.2 使用SparkSQL进行处理

  • SparkSQL:利用SparkSQL的强大处理能力来进行数据比较。可以编写SparkSQL脚本来实现数据的快速比较。
  • 并行处理:Spark天然支持并行处理,可以充分利用集群资源进行数据比较。

3. 其他技术方案

3.1 MapReduce

  • MapReduce框架:也可以考虑使用MapReduce框架来实现数据比较。MapReduce非常适合处理大规模数据集,可以通过自定义Mapper和Reducer来实现数据比较逻辑。

3.2 Kafka

  • Kafka流处理:如果数据是实时产生的,可以考虑使用Kafka作为消息中间件,通过Kafka Streams API来实现实时数据比较。

3.3 Delta Lake

  • Delta Lake:可以考虑使用Delta Lake来管理数据湖中的数据,利用其提供的ACID事务特性来保证数据的一致性和完整性。

总结

综上所述,您可以考虑使用OceanBase数据库本身的特性(如分区表、列式存储等),或者借助于大数据处理框架(如Spark、MapReduce等)来实现高效的数据比较。具体选择哪种方案取决于您的实际需求和现有技术栈。

请注意,以上建议是基于OceanBase数据库特性和大数据处理框架的一般性建议。具体实施时还需要根据实际情况进行调整和优化。

具体信息可参考以下文档:

oms 不知道能否做成自动化比对

4核可能有点低了,还要看你源端和目标端数据库的性能,3亿的话估计5-6个小时能搞定


oms配置可以按照性能来选择速度,您可以自己先安装个测试下。选定表后可以进行自动化比对的