在windows/linux平台配置ODBC数据源教程__ODBC开发指南(上)

友情链接:


前言

作为应用开发人员,您只需完成驱动安装,即可基于 ODBC 开发相关应用程序,连接并操作星环Inceptor或ArgoDB数据库中的数据。

为了帮助读者及用户更快熟悉开发流程,接下来将为您介绍如何在Windows、Linux平台配置ODBC 以及 如何基于ODBC 做应用开发


应用程序开发规范

连接管理

  • 使用连接池:由于建立连接属于相对昂贵的操作,推荐使用连接池来复用连接并设置连接池上限(maximumPoolSize 参数),避免消耗大量系统资源,提升执行效率。
  • 及时释放连接:应用程序完成作业后,应及时断开连接以释放资源,例如通过超时时间参数进行控制。

类/方法使用

  • 禁用自动提交:通过应用程序来保证事务的提交,即在指定的业务SQL执行完之后显式提交事务,在退出客户端之前请保证所有事务已提交;
  • 批量更新数据:对于批量插入更新,推荐通过 addBatch 将多条 SQL 的插入更新记录先缓存在客户端,然后在 executeBatch 时一起发送到数据库服务器,减少数据传输的往返次数,提升性能;
  • 正确使用 get():尽管 JDBC 允许程序通过 getString() 或 getObject() 来获取任何数据类型,而使用正确的 get 方法可避免数据类型转换;
  • 使用预编译:通过 prepareStatement 预编译 SQL,减少语法校验次数,提升处理效率,同时避免拼接 SQL 时造成 SQL 注入;


ODBC 概览

ODBC(开放数据库连接)是一种广泛接受的应用程序编程接口,使用结构化查询语言(SQL)作为数据库访问语言,不仅可以避免应用程序直接操作数据库,同时增强了应用的移植性和维护性,提升开发效率,典型组件及架构如下图所示:

image.png

  • ODBC 客户端:使用 ODBC API 与数据库服务器交互的应用程序;
  • ODBC Driver:一个或一组包含针对特定数据库服务器的 ODBC API 实现的库;
  • ODBC Driver Manager:一个或一组可供 ODBC 客户端用来与 ODBC Driver 交互的库;

环境准备

在正式开发应用程序前,您需要跟随下述步骤完成环境准备工作:

1)下载 ODBC 驱动

2)配置数据源

  • Windows 平台
  • Linux 平台

下载驱动

ODBC 驱动程序用于连接 Transwarp Inceptor或ArgoDB 数据库,在开发应用程序前,您需要登录 Transwarp Manager 平台下载相关驱动程序,或者访问社区驱动下载页面下载对应驱动。

Manager下载驱动步骤:

  1. 登录 Transwarp Manager 平台。
  2. 在集群页面的 Transwarp ArgoDB 或 Inceptor 区域框中,找到并单击运行中的 Quark 组件。
  3. 单击页面右上角的 … 图标,然后选择下载 ODBC 驱动。
  4. 在弹出的面板中,选择您的开发平台(如 Windows 64 位),然后单击下载。

image.png

ODBC 驱动支持的平台如下:

image.png


Windows 平台配置数据源

下载 ODBC 驱动后,您还需要参考本文流程,安装驱动并添加数据源配置,完成操作后即可开始程序的开发工作。

操作步骤

  1. 下载完成ODBC驱动。
  2. 双击下载的 ODBC 驱动程序,跟随提示完成安装。
  3. Win 键,在弹出的页面中输入 odbc,单击结果中的 ODBC 数据源(64 位)。
  4. 在弹出的界面中,单击用户 DSN 页签中的添加

image.png

5. 在弹出的对话框中,双击 Transwarp Inceptor ODBC Driver 进行编辑。

6. 根据下述说明,完成数据源配置。

image.png

  • Data Source Name:填写有业务意义的数据源名称。
  • Description:填写描述信息。
  • Host:数据库的连接地址,即 Quark 组件的服务地址,您可以登录 Transwarp Manager 平台,找到 Quark 组件并获取其服务地址。
  • Port:数据库服务端口,默认为 10000。
  • Database:要链接的数据库,默认为 default。
  • Inceptor Server Type:根据 Hive Server 版本选择,选择为 Inceptor Server 1 时,Mechanism 仅可设置为 NONE。
  • Mechanism:数据库认证方式,本案例选择为 Kerberos,此时需要填写 Realm 和 FQDN 信息,如选择为 LDAP,则需要填写 User Name 和 Password 信息。 关于Inceptor以及ArgoDB 的认证方式配置,见 Guardian 手册

7. 单击 Test,通过连接测试后单击 OK,然后单击确定

8. (可选)当使用 ODBC 出错时,您可以在跟踪页签跟踪相关日志。

image.png

a. 跟踪完成后将 ODBC 的相关日志发送给 Transwarp 技术支持人员。

该日志为 ODBC Driver Manager 日志,由 Windows 系统本身提供,描述了应用层调用驱动的 API 记录及其返回值。

b. ODBC Driver 日志:由 ODBC 研发人员自己定义。


由于该操作将会较大程度影响 ODBC 性能,推荐仅在排查故障时使用。

常见问题

1)问:如何获取 ODBC Driver 日志?

答:日志文件存放路径为 /tmp/odbc.log,如需调整路径,您可以打开 ODBC 驱动的安装目录中的 log4cplus.properties 文件,修改 log4cplus.appender.R.File 参数的值来调整日志存储路径。

image.png

2)问:如何调整 ODBC Driver 的日志等级?

答:默认级别为 ERROR,您可以打开 ODBC 驱动的安装目录中的 log4cplus.properties 文件,修改 log4cplus.properties 文件中 log4cplus.rootLogger 和 log4cplus.logger.ODBC.HANDLER 参数的值,例如改成 INFO 或 DEBUG。


Linux 平台配置数据源

下载 ODBC 驱动后,您还需要参考本文流程,安装驱动并添加数据源配置,完成操作后即可开始程序的开发工作。

操作步骤

1. 下述步骤以 CentOS 7(64位)操作系统为例演示操作流程,其他 Linux 平台操作流程类似。

登录 Linux 设备,执行下述命令安装 unixODBC,用于管理 ODBC 驱动。

yum install unixODBC unixODBC-devel

2. 执行 odbcinst -j 命令,确认 unixODBC 是否安装成功,正常输出示例如下。

[root@local]# odbcinst -j
unixODBC 2.3.4
DRIVERS............: /etc/odbcinst.ini
SYSTEM DATA SOURCES: /etc/odbc.ini
FILE DATA SOURCES..: /etc/ODBCDataSources
USER DATA SOURCES..: /root/.odbc.ini
SQLULEN Size.......: 8
SQLLEN Size........: 8
SQLSETPOSIROW Size.: 8

3. 安装 ODBC 驱动。

a. 下载 ODBC 驱动,然后将下载好的驱动文件放至 Linux 设备中。

b. 以 CentOS 为例,执行下述命令安装驱动。

# 需根据下载的文件名称,替换下述命令中要安装的 rpm 包名称
rpm -ivh inceptor-connector-odbc-8.31.0-1.el7.x86_64.rpm

4. 通过 vim 命令完成 ODBC 的 DSN(数据源名称)信息的修改。

关于 Inceptor/ArgoDB 的认证方式配置,见 Guardian 手册

/usr/local/inceptor 下的 odbcinst.ini 和 odbc.ini 是配置模板,下面介绍两个文件的具体内容。

odbc.ini 是 DSN(数据源名称)配置文件,已基于认证方式分类并提供了配置示例,以 LDAP 认证连接至 Inceptor / ArgoDB 数据库为例,我们仅需配置 [transwarp-hs2-ldap] 中包含的参数,具体如下:

# 数据源名称
[transwarp-hs2-ldap]
# 连接的描述信息
Description = LDAP test
# 驱动名称,无需修改
Driver = Transwarp Inceptor ODBC Driver
# 数据库所属设备的 host 名称
Server = idc1
# Hive 版本,无需修改
Hive = Hive Server 2
# 数据库的连接地址,即 Quark 组件的服务地址,您可以登录 Transwarp Manager 平台,找到 Quark 组件并获取其服务地址。
Host = 172.16.1.212
# 数据库服务端口,默认为 10000
Port = 10000
# 要连接的数据库
Database = default
# 访问 Inceptor / ArgoDB 数据库的用户名和密码
User = hive
Password = ArgoDB@123 或者是 Password = Inceptor@123 
# 认证方式为 LDAP,无需修改
Mech = LDAP

odbcinst.ini是驱动配置文件(无需修改):

# 驱动名称,和 odbc.ini 中的 Driver 对应
[Transwarp Inceptor ODBC Driver]
# 驱动的描述信息
Description=Transwarp Inceptor ODBC Driver
# 驱动的具体位置
Driver=/usr/local/lib64/libODBC4HiveServer2.so

5. 设置完成后按下 Esc 键退出编辑模式,输入 :wq 并按回车键,保存配置并退出编辑界面。

6. 执行下述命令,以覆盖当前系统配置,如需再次调整配置,可直接修改 /etc/odbc.ini 文件。

sudo cp /usr/local/inceptor/odbc.ini /etc/odbc.ini
sudo cp /usr/local/inceptor/odbcinst.ini /etc/odbcinst.ini

7. 执行 isql -v {数据源名称} {用户名} {密码} 格式的命令测试 ODBC 连通性,正常连接的输出示例如下。

root@local]# isql -v transwarp-hs2-ldap hive ArgoDB@123
+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| quit                                  |
|                                       |
+---------------------------------------+

常见问题

1) 问:通过 isql -v 命令测试 ODBC 连接时,遇到了一些报错信息,如何解决?

答:可能遇到的错误信息及相关解决方案如下:

错误提示 解决方案
“Data source name not found, and no default driver specified” 环境变量设置不正确或未设置,请参考本文的步骤 2 设置环境变量。
“Connection refused” 连接请求被拒绝,请检查服务端的防火墙设置,确保端口可正常通信。
“No route to host” 服务器连接地址配置错误或防火墙引起的网络通信,需检查地址配置正确性和网络连通性。
“Can’t open lib '/usr/local/lib64/libODBC4HiveServer2.so' : file not found]” 执行 ldd /usr/local/lib64/libODBC4HiveServer2.so,查看输出结果中提示 libsasl2.so.2=⇒not found,此时执行 ln -sv /usr/lib64/libsasl2.so.3.0.0 /usr/lib64/libsasl2.so.2 添加软链接即可解决
“SASL Other:No worthy mechd found , Segmentation faild” 执行命令 yum install cyrus-sasl-gssapi cyrus-sasl-plain -y 安装相关工具

2)问:如何获取 ODBC Driver 日志?

答:日志文件存放路径为 /tmp/odbc.log,如需调整路径,您可以修改 /usr/local/inceptor/log4cplus.properties 文件中 log4cplus.appender.R.File 参数的值。

image.png

3)问:如何调整 ODBC Driver?

答:默认级别为 ERROR,修改 /usr/local/inceptor/log4cplus.properties 文件,调整 log4cplus.rootLogger 和 log4cplus.logger.ODBC.HANDLER 参数的值,例如改成 INFO 或 DEBUG。


开发流程

详见:ODBC开发流程、示例代码以及ODBC API支持__ODBC开发指南(下)

下一篇将提供以下示例代码:

  • C 示例代码
  • C# 示例代码
  • Python 示例代码
  • Perl 示例代码
  • Ruby 示例代码
  • PHP 示例代码



如果上述内容对您有提供帮助,欢迎多多点赞支持~😎

点赞.png下箭头,指向下箭头.png

评论
登录后可评论
发布者
星小环分享号
文章
180
问答
205
关注者
27
banner
关注星环科技
获取最新活动资讯

加入TDH社区版技术交流群

获取更多技术支持 ->

扫描二维码,立即加入