This chapter introduces a brief overview of PG-Strom and developer community. 本章では、PG-Stromの概要、および開発者コミュニティについて紹介します。
PG-Strom is an extension designed for PostgreSQL v9.5 or later, to off-load a part of CPU intensive workloads to GPU (Graphic Processor Unit) devices, and execute them in parallel asynchronously. This module is designed to reduce response time of complicated queries executed on large data set (like, data analytics or batch processing), on the other hands, it is not preferable to run transactional workloads or heavy concurrent processing. PG-Stromとは、PostgreSQL v9.5および以降のバージョン向けに設計された拡張モジュールで、ユーザやアプリケーションからは透過的に、CPU負荷が中心となるSQLワークロードの一部をGPU(Graphic Processor Unit)デバイス上で非同期・並列実行する事を可能にします。 本モジュールは大規模なデータセット上で実行される複雑なクエリ(典型例としてはデータ解析やバッチ処理が該当します)の応答時間を短縮する事を目的として設計されていますが、更新系や同時多重処理には向いていません。 The core idea of PG-Strom is, the code generator that constructs GPU native binaries according to the supplied SQL queries on the fly and transparently, and execution engine that runs the GPU native binaries to the massive input data stream in parallel and asynchronously. These mechanisms enable to pull out capability of GPU devices that mount multi-hundred to multi-thousand cores per chip, to process the massive amount of records, transparently from the standpoint of users or applications. PG-Stromの中核を成すのは、SQL構文に対応したGPU用バイナリ命令列を動的かつ透過的に生成しコードジェネレータと、これを並列プロセッサで大量の入力データに対して非同期・並列実行する実行エンジンです。 これらの機能により、ユーザやアプリケーションの視点からは透過的に、数百~数千コアが実装されたGPUデバイスの能力を大量のレコードを処理するために利用する事が可能となります。 We define the role of PG-Strom is an intermediation between PostgreSQL and the recent evolution of semiconductor like GPU or SSD (Solid State Drive). 我々自身は、GPUやSSD(Solit State Drive)といった近年の半導体技術の進化と、PostgreSQLの間を橋渡しする事がPG-Stromの役割であると考えています。
PG-Strom support the following SQL workloads. PG-Stromは以下のSQLワークロードに対応したいます。
PG-Strom supports the data types below. See the %%%PGSTROM_MANUAL_XLINK:reference_types%%% for more details. PG-Stromは以下のデータ型に対応しています。詳細は %%%PGSTROM_MANUAL_XLINK:reference_types%%% を参照してください。
smallint
, int
, bigint
,
real
, float
and numeric
date
, time
, timetz
,
timestamp
, timestamptz
and interval
char(n)
, varchar(n)
,
text
and bytea
bool
, money
PG-Strom supports the functions and operators below. See %%%PGSTROM_MANUAL_XLINK:reference_functions%%% for more details. PG-Stromは以下の関数・演算子に対応しています。詳細は %%%PGSTROM_MANUAL_XLINK:reference_functions%%% を参照してください。
+
, -
, *
, /
), logical operations (&
, |
) and so on for each data type.
それぞれ対応するデータ型ごとに、四則演算(+
, -
, *
, /
)や、論理演算(&
, |
)などに対応しています。
=
, <>
, <
, <=
, >
, >=
) for each data type.
Especially, equivalent operators (=
) are internally used by join or aggregation.
それぞれ対応するデータ型ごとに、大小比較演算(=
, <>
, <
, <=
, >
, >=
)に対応しています。
特に等価演算子(=
)は、ジョインや集約演算の内部処理においても使用されます。
float
arguments are supported, like sqrt
, ln
, pow
, sin
.
sqrt
, ln
, pow
, sin
など、float
型を引数に取る数学関数の多くに対応しています。
min
, max
, avg
, sum
, stddev
and etc are supported.
min
, max
, avg
, sum
, stddev
などの集約関数に対応しています。
LIKE
operators is supported for pattern matching.
LIKE
句によるパターンマッチングに対応しています。
PG-Strom is distributed under the GPLv2 (GNU Public License version 2). You can use, modify and redistribute the software freely, according to the license terms. Please reference the LICENSE
file bundled in the software.
Also note that PG-Strom has no warranty, and PG-Strom Development Team is not liable for any damage resulting from the use of this software.
PG-StromはGPLv2(GNU Public License version 2)下で配布されており、ライセンス条項に従い、ソフトウェアを自由に利用、改変、再配布することができます。詳細は、ソフトウェアに同梱のLICENSE
を参照してください。
また、PG-Stromは無保証であり、本ソフトウェアを用いた結果生じたいかなる損害に対してもPG-Strom Development Teamは責任を有しません。
Development of PG-Strom stands on the master Git repository: https://github.com/pg-strom/devel.git. PG-Stromの開発は、Gitリポジトリ https://github.com/pg-strom/devel.git を中心にして行われています。
Please open an issue on the issue tracker (https://github.com/pg-strom/devel/issues) for bug report, new feature request, questions and so on. It is preferable to assign proper tags like "bug", "question" and etc... バグの報告、新機能の要望、質問などは、イシュートラッカー(https://github.com/pg-strom/devel/issues)でイシューをオープンしてください。『bug』、『question』などの適切なタグを付ける事が望ましいです。
PG-Strom is developed by PG-Strom Development Team, and they also hold its copyright. However, it does not mean you have to assign your copyright, because PG-Strom Development Team is not a legal entity, a generic name of all the contributors for PG-Strom development. It is a same way that Linux kernel, PostgreSQL and many other open source project works. PG-StromはPG-Strom Development Teamによって開発され、同時に著作権を保持しています。しかし、これはパッチの投稿に際してあなたに著作権の放棄を要求してはいません。PG-Strom Development Teamは法的主体ではなく、PG-Stromの開発に貢献した全ての開発者の総称であるからです。これは、Linux kernelやPostgreSQLなど他のOSSプロジェクトと同様です。