国产数据库VastBase与C/C++程序适配

背景

2022年底的项目,记录一下。
某项目后台使用C++程序开发,使用的是OCI连接Oracle数据库。现需要做去O国产化适配改造。
本文聊聊C/C++应用程序如何使用VastBase替换Oracle。

编译适配

开发包获取

从VastBase官方或接口人处获取OCI开发包,包含头文件(include)和库(.so或.a)。
注意:不是ODBC!
ODBC是数据库的客户端工具访问时需要引入的,我们C程序需要引用OCI相关包。
获取到的OCI开发包内容如下:
Include包含文件:
Lib包含文件:

修改makefile

正常情况下,目标应用程序的makefile中需要有2处修改:对应到前文所说的include和lib。

include头文件包含

在vb的OCI开发包中对oracle的OCI做了重新定义和封装(见vb开发包中的oci.h),因此我们的C程序不需要进行修改,只需要修改makefile中头文件引入即可。
如,
INCLUDE=-I.. -I$(VAST_HOME)/include
这里我们可以在环境变量中定义好 VAST_HOME,然后将OCI开发包中的include和lib目录拷贝到里面。如:
环境变量:
$VAST_HOME下的内容:
2、lib修改
需要将原先引入Oracle库的地方修改为引用vb的lib,并显式添加lib库(除Oracle相关的lib外都保留),例如:
LDFLAGS=-L$LIBHOME -L$(VAST_HOME)/lib -L/usr/local/pa64/lib -L$(HOME)/src/lib -lpthread -lmmdb -lpublic -lodbcoci
做完上述2个步骤后,就可以直接编译程序即可,完成数据库的替换。

结语

编译时我们可以通过替换makefile中的头文件和库路径,实现数据库的替换,大多数情况下编译都会通过。
但是!编译通过并不意味着存储引擎替换完成。实践中你会发现这仅仅是个开始:VB中有好多写法并不完全兼容OCI,如错误码、OCIStmtFetch返回值不兼容、OCIAttrGet数据类型范围等等。这些问题都是跟VB的研发人员一起定位并修改的。在这里必须给VB的支撑力度点赞(与某梦相比...)!
后续文章中我会把程序适配过程中遇到的问题以及改造方案进行分享。
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员柒叔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值