PG-Storm是PostgreSQL数据库FDW(foreign data wrapper)的一个模块。它被设计成利用GPU设备加速顺序扫描大规模有复杂qualifier的记录。它的基本概念是CPU和GPU利用自身优势专注于工作量,并同时执行。 CPU有很多的灵活性,因此,它的优势是操作复杂的东西,如Disk I / O,另一方面,GPU在并行数值计算方面有优势,因此,它擅长做大规模但简单的事情,比如检查的每行的qualifiers。

下面的图是PG-Strom的基本概念的。现在,对于顺序扫描工作,vanilla PostgreSQL做一个迭代获取一个元组,并检查每个元组的qualifiers。如果我们能委托GPU承担起工作量,它可以降低CPU的工作负载,因此,它应能够提前加载更多的元组。最终,它对于大数据量的复杂查询,可以提供更短的响应时间。

 

安装

GPU设备必须支持CUDA, 因此目前只有NVIDIA的产品适合。有些云计算供应商提供支持CUDA的GPU设备。

  1. 安装CUDA Toolkit v4.0 (或者更新版本)
    • 您可以获得CUDA Toolkit v4.0 here. 在您的系统上安装SDK和kernel 驱动. 默认安装路径为 /ust/local/cuda. 如果没有特殊原因,请安装在默认路径下.
    • 确认nvcc已经安装好.
  2. 检查最新的PostgreSQL tree.
    • 你可以获得最新的PostgreSQL tree在git.postgresql.org. 尽管SQL/MED v9.1已经支持, 但PG-Strom 会用到一些内部的API, 这些在v9.2devel 已经修改过. 因此不兼容v9.1.
    • 像平常一样建立PostgreSQL. pg_config必须安装在a directory listed on $PATH.
  3. 检查最新PG-Strom tree.
    • 您可以获得最新的PG-Strom tree 在github.com.
    • Build the module with make. pg_configshould be appeared in the $PATH. If CUDA was installed somewhere except for /usr/local/cuda, you should give the alternate installation path using CUDA_DIR
    • make install安装模块.
  4. 编辑$PGDATA/postgresql.conf
    • PG-Strom must be loaded at shared_preload_librarystage. 因此, '$libdir/pg_strom'应该加到shared_preload_library参数里.
  5. 重启PostgreSQL server.
    • pg_ctl restart重启server
  6. 生成一个PG-Strom 扩展
    • 运行CREATE EXTENSION pg_strom去建立相关foreign-data-wrapper, foreign-server, 和functions.

 更多该软件说明,请参考:http://wiki.postgresql.org/wiki/PGStrom?utm_source=feedly