[FGL] 可连结资料库的种类与连线方法

既然是从 INFORMIX 剥离出来的工具,应该连结资料库的能力是强大的。本段落我们检视一下Genero连结资料库的能力。

市面上常用的资料库,都有自己努力的强项,个别的指令也稍微有些不同。为了最大化能共通於这些资料库,以做到『Write Once, Use Everywhere』,Genero FGL具有自开发的『共通性资料库介面 ODI, Open Database Interface』,以 INFORMIX 指令为基准 (因为来自於 INFOMIX ),将其他资料库具有的些微差异,利用 ODI 进行转译,概略流程如下:
https://ithelp.ithome.com.tw/upload/images/20210903/20051169moOCaveFDG.png
透过 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连线成功。


<<:  [Day04] Tableau 轻松学 - Tableau 三大软件

>>:  C# 入门之逻辑判断(下)

Day2 用python写UI-聊聊tkinter的基本操作~

今天要介绍视窗设定,会分成三个部份来讲,建立视窗、设定视窗大小跟视窗的其他基本设定,那我们不多说就直...

【Day23】[演算法]-插入排序法Insertion Sort

插入排序法(Insertion Sort),原理是逐一将原始资料加入已排序好资料中,并逐一与已排序好...

Day2 安装<Cocoapods>,以及第三方套件<RealmSwift>

首先打开终端机输入此行 接下来系统会要求输入你电脑的密码 输入完之後按enter,之後就会自己跑,跑...

Day06 - [丰收款] 安全签章签下去,API呼叫没在怕

在昨天讲完了Message的密文产生细节流程後,回过头来我再来谈Sign安全签章,我认为这顺序比较容...

Docker

1. 使用浏览器 DSM 套件中心安装需要的开发相关套件,这边我安装 Docker 跟 Node.j...