环境部署

DeepSQL环境包括编译数据库和安装算法库两个部分。

前提条件

  • 环境中安装python2.7.12以上版本Python。
  • 数据库需要开启对PL/Python存储过程的支持。
  • 安装算法库需要拥有管理员权限的用户。

操作步骤

  1. 检查部署Python环境。

    安装前,请查看系统安装的python版本,当前DeepSQL需要python2.7.12以上版本的环境。

    • 如果当前系统python2版本高于2.7.12,可以直接安装python-devel包。
    • 如果版本过低,或者无法安装python-devel包,可以下载最新python2源码,手动配置编译python2,并配置环境变量;

    算法库中,部分算法调用了python包,如numpy,pandas等。用户可以安装以下python库:

    1. pip install numpy
    2. pip install pandas
    3. pip install scipy

    环境部署 - 图1 须知: - 如果自行编译python,需要在configure脚本执行时加入–enable-shared参数; - 如果系统中的python2使用的UCS4编码,自行编译python2时,还需要加入–enable-unicode=ucs4参数。 可以在系统中自带的python2下执行:“import sys;print sys.maxunicode”并查看结果,如果结果是65535,说明系统默认的是ucs2;如果结果是1114111,说明用的ucs4编码。 - 如果系统中内置的python2使用的ucs4,说明系统中的gdb,gstack等也会依赖ucs4。因此自行编译的python2在configure时,需要添加–enable-unicode=ucs4,否则后续使用gdb,gstack时,会遇到报错。

  2. 编译部署数据库。

    数据库需要开启对PL/Python存储过程的支持。默认编译数据库,不包含此模块。因此需要编译数据库时,在configure阶段,加入—with-python参数;

    其他编译保持步骤不变;

    编译完成后,需要重新gs_initdb;

    默认PL/Python存储过程模块不被加载,请执行“CREATE EXTENSION plpythonu”来加载模块。

  3. 算法库编译和安装。

    算法库使用开源的MADlib机器学习框架。源码包和相应patch可以从第三方库的代码仓库里获取。安装命令如下:

    1. tar -zxf apache-madlib-1.17.0-src.tar.gz
    2. cp madlib.patch apache-madlib-1.17.0-src
    3. cd apache-madlib-1.17.0-src/
    4. patch -p1 < madlib.patch

    编译命令如下:

    1. ./configure -DCMAKE_INSTALL_PREFIX={YOUR_MADLIB_INSTALL_FOLDER}
    2. -DPOSTGRESQL_EXECUTABLE=$GAUSSHOME/bin/
    3. -DPOSTGRESQL_9_2_EXECUTABLE=$GAUSSHOME/bin/
    4. -DPOSTGRESQL_9_2_CLIENT_INCLUDE_DIR=$GAUSSHOME/bin/
    5. -DPOSTGRESQL_9_2_SERVER_INCLUDE_DIR=$GAUSSHOME/bin/
    6. # 以上均为configure命令。
    7. make
    8. make install

    其中, {YOUR_MADLIB_INSTALL_FOLDER}需要改为用户的实际安装路径。

    环境部署 - 图2 须知: 编译MADlib时,会联网下载依赖软件。无法联网时,需要手动下载依赖包“PyXB-1.2.6.tar.gz”,“eigen-branches-3.2.tar.gz”和“boost_1_61_0.tar.gz”放在本地。使用的configure命令如下:

    1. ./configure -DCMAKE_INSTALL_PREFIX={YOUR_MADLIB_INSTALL_FOLDER} # your install folder
    2. -DPYXB_TAR_SOURCE={YOUR_DEPENDENCY_FOLDER}/PyXB-1.2.6.tar.gz # change to your local folder
    3. -DEIGEN_TAR_SOURCE={YOUR_DEPENDENCY_FOLDER}/eigen-branches-3.2.tar.gz # change to your local folder
    4. -DBOOST_TAR_SOURCE={YOUR_DEPENDENCY_FOLDER}/boost_1_61_0.tar.gz # change to your local folder
    5. -DPOSTGRESQL_EXECUTABLE=$GAUSSHOME/bin/
    6. -DPOSTGRESQL_9_2_EXECUTABLE=$GAUSSHOME/bin/
    7. -DPOSTGRESQL_9_2_CLIENT_INCLUDE_DIR=$GAUSSHOME/bin/
    8. -DPOSTGRESQL_9_2_SERVER_INCLUDE_DIR=$GAUSSHOME/bin/
  4. 将算法库安装到数据库中。

    1. 进入{YOUR_MADLIB_INSTALL_FOLDER}”路径。
    2. 进入 bin文件夹。
    3. 执行如下命令。

      1. ./madpack -s <SCHEMA_NAME> -p opengauss -c <USER_NAME>@127.0.0.1:<PORT>/<DATABASE_NAME> install

      命令中参数说明如下:

      • -s:schema的名称。
      • -p:数据库平台,使用opengauss即可。
      • -c:连接数据库的参数。包括用户名、‘@’、IP地址、端口号和目标数据库名称。

      install为安装的命令,除此之外,还有reinstall(重新安装),uninstall(卸载)等命令可用。

      环境部署 - 图3 说明: - 目标数据库必须存在。 - IP请使用127.0.0.1,不要使用localhost。 - 涉及到大量PL/Python存储过程的安装、卸载等操作,需要数据库管理员权限用户来进行,普通用户没有权限创建和修改PL/Python存储过程,只能调用。 - 数据库兼容性,推荐兼容性为B。不同的数据库兼容性下,对空值,NULL等处理有较大差异。建议使用B兼容性。例如,CREATE DATABASE dbcompatibility=’B’