安装集算器后,产品里自带一全套基于组表(.ctx)的元数据文件和与之关联的DQL Server服务,用户可以参考本章节内容在产品里部署自己的DQL Server服务,或独立部署DQL Server。DQL Server目录结构如下:
DQL_Server_Root/ # DQL Server 服务根目录(在产品中为[集算器安装根目录]/esProc)
├── esproc-services/ # 多服务实例总目录
│ ├── server.xml # 服务配置(服务器地址、端口、名称等配置)
│ ├── serverName 1/ # 服务实例 1 目录
│ │ ├── service.xml # 实例1配置(用户信息/元数据文件路径等)
│ │ └── conf/ # 实例1专属子目录
│ │ ├── *.glmd # 元数据文件(.glmd 后缀)
│ │ ├── *. gdct # 字典文件(.gdct 后缀,非必需)
│ │ └── *.gvsb # 可视文件(.gvsb 后缀,非必需)
│ ├── serverName 2/ # 服务实例 2 目录(结构同服务1)
│ └──… … # 可配置多个服务实例
│ └── serverName n/ # 服务实例 n 目录(结构同服务1)
├── log/ # 日志文件目录
接下来我们详细了解下关于DQL Server的部署以及相关配置说明。部署DQL Server操作如下步骤:
(一) 加载所需jar文件
集算器产品中使用DQL Server服务无需手动配置jar文件,可跳过该小节。
将以下jar文件放入启动DQL Server时可加载到的目录下,获取路径为[集算器安装根目录]/esProc/lib:
esproc-bin-***.jar DQL Server计算引擎及JDBC驱动包
esproc-ext-***.jar DQL Server计算引擎及JDBC驱动包
esproc-ent-***.jar DQL Server计算引擎及JDBC驱动包
json-20240303.jar 解析json格式串
lz4-1.3.0.jar 压缩ctx文件
(二) 部署esproc-services目录

该目录为DQL Server的实例总目录,目录下可包含多个逻辑数据库,每个逻辑数据库都是一个独立的目录,如上图中的datalogic目录。 server.xml用于添加所使用的DQL Server逻辑数据库。逻辑数据库目录介绍如下:

1) service.xml位于[集算器安装目录]\esProc\esproc-services\服务目录下,用于配置逻辑数据库的元数据文件(*.glmd)、用户连接等信息。
2) 元数据文件由元数据编辑设计器生成,存放于服务目录\conf目录下。字典文件(*.gdct)、可视文件(*.gvsb)也放置于conf目录下。元数据文件demo.glmd中使用的数据文件位于[集算器安装目录]\esProc\documents\en路径下的pseudo.zip中,使用时需将解压后的pseudo文件夹放文件主目录下。
注意:单进程支持多个DQL Server服务实例,server.xml和service.xml配置文件名称不能更改。
(三) server.xml
将server.xml文件部署在[服务根目录]/esproc-services下,其内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<SERVER host="127.0.0.1" port="3368" timeout="3000" log="true" raqsoftConfig="config\raqsoftConfig.xml" autoStart="false">
<SERVICE name="datalogic"/>
</SERVER>
<SERVER/>标签属性如下:
host:DQL Server的主机IP地址。
port: DQL Server的侦听端口号,缺省为3368。
timeout: DQL Server的最长等待客户端时间,超时后重新等待,缺省为3000,单位为毫秒。该参数影响关闭DQL Server的响应时间,时间越长,CPU性能浪费越少,关闭服务器等待时间越长。
log:是否记录运行日志,缺省为true,日志存放于[安装目录]/esProc/log/下dql.txt_********.log。
raqsoftConfig:xml配置文件,用于配置文件主目录、系列号等信息,xml文件名称支持自定义,文件路径可配置为绝对路径或相对路径,相对路径时相对于[服务根目录]。
autoStart:是否自动启动DQL服务,缺省为false。
<SERVICE/>:要启动的DQL Server列表,可以配置多个,多个时则需要添加多条<service/>,每个<service/>的name属性所指定的服务都必须位于[服务根目录]\esproc-services下,esproc-services目录下可以有多个DQL Server服务实例目录,但只有这里列出的服务才会被启动
name: DQL Server的名称,且名称必须与服务实例目录的文件夹名称一致。
注:蓝色文字部分为必须配置的节点或属性。
(四) service.xml
将service.xml文件部署在[服务根目录]\esproc-services\服务实例\,其内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<SERVICE logicmetadata="demo.glmd" dictionary="demo.gdct">
<USERS>
<USER name="sa" password="sa" visibility="s1.gvsb" />
<USER name="ww" password="ww"/>
<USER name="ee" password="ee"/>
</USERS>
</SERVICE>
<SERVICE/>标签属性如下:
logicmetadata :元数据文件(.glmd),存于[服务根目录]\ esproc-services\服务实例\conf 下。
dictionary:字典文件(.gdct),可选。
<USERS/> :DQL Server的用户权限配置,可配置多个用户,多用户时则添加多个<USER/>节点。
<USER/> :DQL Server的用户连接信息及可视文件配置。
name:用户名称,可选。
password:用户密码,可选。
visibility:可视文件(.gvsb),可选。
注:1)蓝色文字部分为必须配置的节点或属性。
2)若xml文件中包含特殊字符,需先将特殊字符进行转义,再写入文件中,如将"&"写成"&"。
(五) 启动DQL Server
在产品中可直接使用[集算器安装根目录]\esProc\bin下的启动文件来启动DQL Server:
windows版中,双击dqlserver.exe/startDQLSERVER.bat文件启动;
linux/mac版中,可以通过startDQLSERVER.sh文件启动,还可以使用非图形化方式启动,操作步骤如下:进入到[集算器安装根目录]\esProc\bin下,执行命令:./startDQLSERVER.sh -d,即可启动DQL Server服务;执行命令:./startDQLSERVER.sh -x,即可关闭DQL Server服务。
独立部署时启动DQL Server,运行命令必须包含以下参数:
javaw -cp <JAR加载路径> -Dstart.home=<主路径> com.esproc.dql.server.ServerConsole
Ø -cp:指定Java扩展JAR包的加载路径(替换<JAR加载路径>为实际目录)
Ø -Dstart.home:指定DQL Server的服务根目录(替换<主路径>为实际路径)
Ø 启动类:com.esproc.dql.server.ServerConsole
注意:在start.home指定的目录下必须存在services子目录。
示例命令如下:
javaw -cp "D:\raqsoft\esProc\lib\*" -Dstart.home="D:\raqsoft\esProc" com.esproc.dql.server.ServerConsole
![]()
执行命令后弹出DQL Server窗口,点击【Start】启动DQL服务:

为方便使用可将运行命令做成启动文件,脚本内容可参考[集算器安装根目录]/esProc/bin下的startDQLSERVER.bat(/sh)文件。
(六) 连接DQL Server
DQL Server启动成功后可通过JDBC的方式进行连接。
具体连接方式使用如下:
JDBC:
使用JDBC连接时需在程序中引用DQL Server JDBC的驱动包esproc-bin-***.jar、esproc-ext-***.jar、esproc-ent-***.jar。
驱动—com.esproc.dql.jdbc.DQLDriver
URL—jdbc:esproc:dql://[host]:[port],[host]:[port],.../[serviceName]?[&user={userName}]&[password={password}]
//参数说明:
[host]:[port] -> DQL Server的IP和端口号,可指定多个,但多个时除ip和端口号外,其他内容须保持一致。连接时如果第一个连接不通,会依次连接下一个,直到连接成功为止
[serviceName] -> 需要连接的DQL Server名称
[userName]/[password] -> DQL Server服务的用户名/密码