解决上述问题有几个思路:
1.产品层面
有些分布式数据库产品,提供“自动分布式”能力,即可以实现数据自主分片,不再需要人为干预。这样在结构设计无需做太多修改。针对语句方面,也可以免改造或低改造完成迁移。当然这种方式还是要看业务复杂度,很难做到完全规避因引入分布式带来的改造成本。且针对复杂查询情况下,目标数据库是否能很好处理且保证性能也是需关注的。
2.设计层面
在设计方面,提前做好响应的改造评估工作。如对现有结构、语句通过工具扫描方式,获得当前的工作负载,针对分布式情况下做改造评估等。这种方式不会减少改造工作量,但会提前规划避免被动。这种也是我比较推荐的方式。
3.架构层面
针对复杂的Oracle查询,有些场景可考虑下移到大数据技术栈解决。后者针对复杂关联查询,会更为适合。但两者需解决数据同步问题且业务是否接受一定延迟,也需关注。