最新消息:本站持续更新中,请注意添加收藏夹。搜索关键词时,多换一个同义词。比如要搜索界面,可以尝试页面,画面,PER档等词汇。善于搜索,将大大提高你的查找效率。

[day4]FGL可链接数据库的种类与联机方法

前端操作 bron1984 2341浏览

文章来自:iT 邦幫忙::一起幫忙解決難題,拯救 IT 人的一天 (ithome.com.tw)

[FGL] 可链接数据库的种类与联机方法

既然是从 INFORMIX 剥离出来的工具,应该链接数据库的能力是强大的。本段落我们检视一下Genero链接数据库的能力。

市面上常用的数据库,都有自己努力的强项,个别的指令也稍微有些不同。为了最大化能共通于这些数据库,以做到『Write Once, Use Everywhere』,Genero FGL具有自开发的『共通性数据库接口 ODI, Open Database Interface』,以 INFORMIX 指令为基准 (因为来自于 INFOMIX ),将其他数据库具有的些微差异,利用 ODI 进行转译,概略流程如下:

透过 ODI 的转换,数据库内包含数据型态、SQL语法、指令等,能在最大限度下求同,但仍旧保持了使用 PREPARE 方法,使得特殊指令仍在 Genero内能被使用,满足『优化』的需求,此为存异。

FGLPROFILE

FGL套件的配置文件案是 FGLPROFILE,在这里可以指定许多必要的设定,今天专门针对『数据库的联机』进行说明。

FGLPORIFLE采用 entry 的方式设定 (非INI模式),行首 # 字号时代表为批注

  • dbi.default.driver = “” #预设连结的 db 种类驱动程序,安装时有询问就会补上
    此设定可以参考 $FGLDIR/dbdrivers 路径下设定,若为 ORACLE 则通常为 dbmora (注意部分Genero须带版号)
  • dbi.database..X #指定数据库联机字符串, 可随产品需求自行定义,X 则是设定账号密码等讯息,不同数据库列出差异于下方

Genero各版本可对接的数据库

Genero可对接 IBM DB2 / INFORMIX / MS SQL Server / ORACLE / MySQL / PostgreSQL / SAP Hana / SQLite / Sybase ASE (以上按照名称排序),但是支持版本各有不同,以下挑选部分数据库作为简介对象

数据库厂牌 Genero 2.40 Genero 2.50 Genero 3.20
ORACLE 8.x / 9.x / 10.x / 11.x 9.2 / 10.x / 11.x / 12x 11.x 以上全版本
INFORMIX 5.x / 7.x / 8.x / 9.x / 10.x / 11.x 5.x / 7.x / 8.x / 9.x / 10.x / 11.x 5.x以上全版本
MS SQL Server 2005 / 2008 / 2012 2005 / 2008 / 2012 2012以上全版本,Azure SQDBL V12
PostgreSQL 8.x.y / 9.x.y 8.x.y / 9.x.y 9.6 / 10 / 11 / 12
SQLite 3.5.x / 3.6.x 3.5.x / 3.6.x 3.x

Genero端联机方法

联机到数据库时,最重要的就是联机字符串的设定。包含链接的数据库主机位置 (port) 、登入数据库的账号密码,以及对应需使用的字符组等环境变量。
^ 例如 ORACLE 数据库会将相关讯息以 ORACLE_SID 含括成为一组设定时,则须依照该数据库要求进行设定。

使用静态的 FGLPROFILE 设定

Genero支持静态的配置文件,即透过 FGLPROFILE 进行联机字符串的设定。FGLPROFILE的存放有两组路径:$FGLDIR/etc/fglprofile 与 $FGLPROFILE 指定档案,遇有同样的设定时,后者可压过前者;同档案内冲突时,下方设定压过上方设定

使用动态的 CONNECT 指令设定

若需要链接的数据库众多,或是需要动态设定,则可以在程序内部使用 CONNECT 指令
语法
『CONNECT TO联机对象+ODI驱动程序名称 USER 联机账号 USING 联机密码』
注:联机对象依照不同数据库有不同需求。部分数据库如SQLite无账号密码则可省略

以下将以 Genero 3.20 为例说明个别数据库联机注意事项

本文摘录需特别关注要点进行说明与介绍,需大量采用或作为生产环境时,仍应详读FGL的ODI文件,该文件内均会详列联机时,DB的特殊之处、须采用的特殊语法、如何将原有程序或查询语句进行转换为 ODI 通用语句。

ORACLE

联机前

需在 Genero 所在主机安装完成对应的 ORACLE Client 软件,并配置 tnsname.ora,确认ORACLE_SID / ORACLE_HOME 等必须存在的环境变量时,可进行 Genero 端设定

FGLPROFILE设定

dbi.database.dbname.driver = “dbmora”

dbi.database.dbname.source = “stock”

dbi.database.dbname.username= “登入账号”

dbi.database.dbname.password= “登入密码”

dbi.database.dbname.schema= “登入SCHEMA”

INFORMIX

联机前

驱动程序配置完成后,需确认 INFORMIXSERVER 环境变量是否已完成配置

因为源自于 INFORMIX,所以在 FGLPROFILE 中指定驱动程序即可

PostgreSQL

联机前

需安装好client,且必须完成下列环境变量的设定

  • PGHOST PostgerSQL数据库所在IP/Domain
  • PGPORT PostgreSQL数据库需要通信端口 (预设为5431可在db端新增额外区或调整)
  • PGDATABASE 预期要使用的database
  • PGHOME 若DB与Genero装在同一台时,指向PostgreSQL安装路径用的
  • PGLOCALDIR 若DB与Genero装在同一台时,指向语系档用的
  • PGDATA 若DB与Genero装在同一台时,指向data file存放路径
FGLPROFILE设定

dbi.database.dbname.driver = “dbmpgs”

dbi.database.dbname.source = “test1” #或用dbname[@host[:port]]

dbi.database.dbname.username= “登入账号”

dbi.database.dbname.password= “登入密码”

MS SQL Server

联机前

SQL Server在2.40与更早前的版本,有支持 open source的FREETDS与Easysoft 的联机,此两种联机需透过 OPEN ODBC的协助。设定上较为繁杂且软件为社群维护,可能会有维护窗口的顾虑。可考虑直接使用微软推出的 Linux 版本SQL Server驱动 SNC (SQLserver Native Client) 。
依据 Genero 官网要求,SQL Server联机前应先确定 Linux 上是否已完成对应驱动程序安装的最低版本要求如下

FGLPROFILE设定

dbi.database.dbname.driver = “dbmsnc”

dbi.database.dbname.source = “test1”

dbi.database.dbname.username= “登入账号”

dbi.database.dbname.password= “登入密码”

SQLite

联机前

单机文件型数据库,只需确认套件已安装即可

FGLPROFILE设定

dbi.database.dbname.driver = “dbmsqt”

dbi.database.dbname.source = “/opt/myapp/stock.dbs”

若完成FGLPROFILE的设定后,即可令程序进行联机

要验证联机时,可先利用 DATABASE 指令进行联机,依据上方的FGLPROFILE设定,以『dbname』为范例,测试联机如下

MAIN

DEFINE cnt INTEGER

DATABASE dbname

SELECT COUNT(1) INTO cnt FROM hello_table

IF cnt > 0 THEN

DISPLAY “CONNECT OK!”

END IF

END MAIN

即可确认 DB联机成功。

转载请注明:赫非域 » [day4]FGL可链接数据库的种类与联机方法