1 概述
Erlang是一种通用的面向并发的编程语言,它由瑞典电信设备制造商爱立信所辖的CS-Lab开发,目的是创造一种可以应对大规模并发活动的编程语言和运行环境。Erlang问世于1987年,经过十年的发展,于1998年发布开源版本。Erlang是运行于虚拟机的解释性语言,但是现在也包含有乌普萨拉大学高性能Erlang计划(HiPE)开发的本地代码编译器,自R11B-4版本开始,Erlang也开始支持脚本式解释器。在编程范型上,Erlang属于多重范型编程语言,涵盖函数式、并发式及分布式。顺序执行的Erlang是一个及早求值,单次赋值和动态类型的函数式编程语言等。
区别于传统的面向对象语言,它有着自己的优点:首先它是基于进程并发的,这些进程是轻量级的并且互相协作有条理的处理着事务,用户不用担心具体的PV操作,这些进程对于操作系统而言是透明的,对操作系统来说只有一个进程在运行。其次,每个进程拥有自己的独立内存,在进程间通信中完全依赖于消息传递,每个进程都拥有自己独立的邮箱并通过模式匹配的方式来查找要处理的消息,然后分别进行异步处理。这减轻了进程之间的耦合度,提高了独立性。Erlang还具有可靠的容错机制,由于进程之间相对独立,于是Erlang里可以用一些进程去链接或监视另外一些进程,当这些被监视的进程因为错误而产生异常退出的时候,负责监视的程序就会收到这些进程退出的消息并对这些进程进行相应的处理。在OTP中Erlang可以利用监控树执行一对一或者一对多的监控。最重要的是,对多核CPU的支持,在Erlang中对于多核的操作不需要开发人员来管理,对开发人员来说是完全透明的,我们只需要和往常一样编写程序就可以。最后Erlang是支持热代码升级的,在Erlang中可以实现不停机就进行代码的升级,来实现软件运行中的热升级。Erlang的版本管理中,可以保留一个模块的2种不同的版本,支持对版本的回滚。
Erlang能够连接到传统的数据库,如SQL Server和Oracle。 Erlang有一个inbuilt odbc library ,可用于处理数据库。目前越来越多的Erlang项目开始使用达梦数据库,本文档将介绍Erlang与达梦数据库之间的适配方法,为相关技术人员进行兼容适配时,提供参考。
1.1 适用版本
本文档中的适配方法适用于所有DM数据库版本。
2 Linux下兼容适配具体步骤
2.1 软件下载安装
Erlang官方网站为:https://www.erlang.org/downloads
unixODBC官方网址为:unixODBC
本文档将以一实例出发,介绍Erlang兼容适配DM数据库的方法。适配测试环境如下:
操作系统 | CentOS-8-x86_64 |
---|---|
Erlang版本 | otp_src_25.0.1 |
unixODBC版本 | unixODBC-2.3.1 |
jdk版本 | V1.8 |
DM数据库版本 | DM8 |
2.2 安装配置Erlang
(1)解压Erlang安装包。
tar -zxvf otp_src_25.0.1.tar.gz
(2)编译erlang的依赖环境
yum install make gcc gcc-c++ build-essential openssl openssl-devel unixODBC unixODBC-devel kernel-devel m4 ncurses-devel
(3)创建存放erlang环境的文件夹
mkdir usr/local/erlang
(4)进入解压后的目录otp_src_25.0.1,
(5)配置安装环境路径
./configure --prefix=/usr/local/erlang --without-javac
如果遇到这种问题,可暂时忽略
(6)编译和安装
make && make install
(7)配置Erlang环境变量
export ERLANG_HOME=/usr/local/erlangexport PATH=$JAVA_HOME/bin:$JRE_HOME/bin:${ERLANG_HOME}/bin:$PATH
(8)使环境生效
source /etc/profile
(9)测试Erlang是否安装成功
2.3 安装配置UnixODBC
(1) 解压unixODBC安装包
tar -zxvf unixODBC-2.3.11.tar.gz
(2) 运行解释器配置安装路径
./configure --prefix=/usr/local/unixODBC
(3) 编译和安装
make&make install
(4) 配置环境变量
vim /etc/profile
export UNIXODBC_DIR=/usr/local/unixODBCexport
ODBCINI=$UNIXODBC_DIR/etc/odbc.iniexport
ODBCSYSINI=$UNIXODBC_DIR/etc
(5) 使环境生效
source /etc/profile
(6) 查看UnixODBC安装位置信息
odbcinst -j
2.4 配置UnixODBC连接达梦数据库
(1)配置文件
cd /usr/local/unixODBC/etc
ODBC的系统文件是odbcinst.ini和odbc.ini。用户文件是~/.odbc.ini(注意开头.号),并包含在各自用户的home目录下。系统文件odbcinst.ini包含对所有用户可访问的ODBC驱动信息;odbc.ini文件包含所有用户可访问的DSN信息。
(2)配置odbc.ini文件vim odbc.ini
[DM8]
DSNDescription = DM ODBC DSN
Driver = DM8 ODBC DRIVER #驱动
SERVER = localhost #数据库服务器地址
UID = SYSDBA #数据库用户ID
PWD = SYSDBA #数据库用户密码
TCP_PORT = 5237 #数据库实例端口
(3)配置odbcinst.ini文件
vim odbcinst.ini
[DM8 ODBC DRIVER]
Description = ODBC DRIVER FOR DM8
Driver= /dm8/bin/libdodbc.so #Driver路径最为关键。当DSN调用SQLConnect或SQLDriverConnect时,driver manager会动态载入这些库。若这里指定到了错误的Driver,则DSN无法工作。
(4)切换dmdba用户测试UnixODBC连接达梦数据库
#测试连接
isql -v dm8
2.5 Erlang通过UnixODBC连接DM8
切换dmdba用户测试
#启动Erlang
Erl
#启动
ODBCodbc:start().
#测试连接
odbc:connect("DSN=DM8;UID=SYSDBA;PWD=SYSDBA",[{scrollable_cursors, off}]).
操作数据库测试
#创建表
odbc:sql_query(<0.88.0>, "CREATE TABLE EMPLOYEE (FIRSTNAME char varying(20), LASTNAME char varying(20), AGE integer, SEX char(1), INCOME integer)").
#插入数据
odbc:sql_query(<0.88.0>, "INSERT INTO EMPLOYEE VALUES('Mac', 'Mohan', 20, 'M', 2000)").
#查询数据
odbc:sql_query(<0.88.0>, "SELECT * FROM EMPLOYEE").
#条件查询
odbc:param_query(<0.88.0>, "SELECT * FROM EMPLOYEE WHERE SEX=?",[{{sql_char, 1}, ["M"]}]).
#更新数据
odbc:sql_query(<0.88.0>, "UPDATE EMPLOYEE SET AGE = 5 WHERE INCOME= 2000").
#删除数据
odbc:sql_query(<0.88.0>, "DELETE EMPLOYEE WHERE INCOME= 2000").
查看表结构
odbc:describe_table(<0.88.0>, "EMPLOYEE").
2.6 其他
(1)在执行./configure时报错:configure: error: no acceptable C compiler found in $PATH。主要是因为没有C编译器,安装后再执行。
安装C编译器
[root@localhost sipp-3.5.1] yum -y install gcc
(2)如果连接过程中出现
请检查配置的环境路径是否正确,odbc.ini和odbcinst.ini配置是否正确。
如果还有任何问题,欢迎到达梦在线服务平台提问!
社区 | 达梦在线服务平台https://eco.dameng.com