SlideShare a Scribd company logo
1 of 77
Download to read offline
Kansai Open Forum 2018Kansai Open Forum 2018
(2018-11-10)(2018-11-10)
PostgreSQLPostgreSQL を拡張してを拡張して
もっと楽しもう!もっと楽しもう!
ぬこ@横浜ぬこ@横浜 (@nuko_yokohama)(@nuko_yokohama)
2
自己紹介
「 PostgreSQL ラーメン」
今年の 9 月に
こんな本だしました。
特製金色貝そば@燃えよ麺助
3
目次
Part.1 PostgreSQL 拡張開発概要
Part.2 独自データ型開発例
4
Part.1
PostgreSQL
拡張開発概要
5
PostgreSQL
知ってる?
使ったことある?
開発したことある?
6
PostgreSQL に
かかわる開発にも
いろいろある
7
PostgreSQL
本体
PostgreSQL アプリケーション
PostgreSQL
クライアントライブラリ
拡張機能
PostgreSQL
本体の開発
クライアント
ライブラリの開発
拡張機能の開発
PostgreSQL を使った
アプリケーション開発
8
PostgreSQL
本体
PostgreSQL アプリケーション
PostgreSQL
クライアントライブラリ
拡張機能
PostgreSQL
本体の開発
クライアント
ライブラリの開発
拡張機能の開発
今日のお題は
「拡張機能」の開発
PostgreSQL を使った
アプリケーション開発
9
PostgreSQL では
どんな拡張が
できるのか
10
PostgreSQL 拡張の主な種類
ユーザ定義関数
データ型
Foreign Data Wrapper
手続き言語組み込み
HOOK インタフェース
ロジカルデコーディング
独自のインデックス
独自のスキャン
11
拡張機能の組み方
SQL で組む
pl/pgsql で組む
C 言語等で組む
12
ユーザ定義関数
13
SQL から呼び出す関数
( SQL 関数)を自作できる。
14
CREATE OR REPLACE FUNCTION add3(i integer )
RETURNS integer
LANGUAGE sql
AS $function$
SELECT i + 3;
$function$
;
CREATE FUNCTION
postgres=# SELECT add3(5);
add3
------
8
(1 row)
関数定義
関数実行
SQL で作成する例
15
pl/pgsql で作成する例
postgres=# CREATE OR REPLACE FUNCTION sigma(i integer )
RETURNS integer
LANGUAGE plpgsql
AS $function$
DECLARE
sigma integer := 0;
c integer := 1;
BEGIN
FOR c IN 1 .. i LOOP
sigma := sigma + c;
END LOOP;
RETURN sigma;
END;
$function$
;
CREATE FUNCTION
postgres=#
postgres=# SELECT sigma(10);
sigma
-------
55
(1 row)
関数定義
関数実行
16
こんな遊びもできる
pg_banner
pg_lifegame
作成
17
巨大文字を作ったり
postgres=# SELECT * FROM pg_banner('kof2018');
data
--------------------------------------------------
# # ####### ####### ### #### # ###
# # # # # # # # ## ## # #
# # # # # # # # # # # # # #
### # # ##### # # # # # ###
# # # # # # ## # # # #
# # # # # # # # # # #
# # ####### # ##### #### ##### ###
(7 rows)
life game (gen=1, lifes=23)
* *
* *
* ***
* * *
* * **
* ***
* **
*
life game (gen=2, lifes=23)
** **
* * **
* * **
* * **
* ***
*
**
lifegame を動かしたり
18
データ型
19
関数だけでなく、
独自のデータ型や
その型に対する
演算子も拡張できる
20
データ型の例
pg_fraction
作成
21
‘ 分子 / 分母’の
文字列表現で
様々な演算を
可能にするデータ型
22
SELECT id, data, data + '2/3' AS add, data - '2/3' AS sub FROM test;
id | data | add | sub
----+------+-------+-------
1 | 2/3 | 4/3 | 0/1
2 | 3/7 | 23/21 | -5/21
3 | 1/5 | 13/15 | -7/15
(3 rows)
SELECT id, data, data * '2/3' AS mul, data / '2/3' AS div FROM test;
id | data | mul | div
----+------+------+------
1 | 2/3 | 4/9 | 1/1
2 | 3/7 | 2/7 | 9/14
3 | 1/5 | 2/15 | 3/10
(3 rows)
test=# SELECT * FROM test ORDER BY data;
id | data
----+------
3 | 1/5
2 | 3/7
1 | 2/3
(3 rows)
test=# SELECT max(data), min(data) FROM test ;
max | min
-----+-----
2/3 | 1/5
(1 row)
四則演算
並び替え=比較演算
集約演算
23
実装については後で
説明します。
24
Foreign Data
Wrapper
25
外部の情報源
(DBMS, ファイル ,
Web 等 ) を
SQL で検索できる
26
FDW の例
contrib/postgres_fdw
contrib/file_fdw
oracle_fdw
FDW は色々あります!
https://wiki.postgresql.org/wiki/Foreign_data_wrappers
今日数えたら
100 種類超えてました
27
FDW の例
neo4j_fdw
作成
28
Neo4j Server
PostgreSQL
olumn1 column2 column3
・・・ ・・・ ・・・
・・・・ ・・・・ ・・・
Neo4j Foriegn Data Wrapper
Defined Cypher Query
Execute Cypher Query on REST
Generate PostgreSQL Record
PostgreSQL
Record
JSON
Result
Provide Cypher Result View
SQL
Cypher
Query
FDW 定義に記述した
グラフデータベース Neo4j の
クエリを使って Neo4j を検索し、
結果を PostgreSQL のレコードにして
PostgreSQL に返却する。
29
手続き言語
30
SQL 関数を記述する
言語を組み込める
その言語で関数を開
発できる
31
手続き言語の例
pl/sh
pl/v8
pl/python
32
plsh=# CREATE OR REPLACE FUNCTION df() RETURNS jsonb AS $$
#!/bin/sh
df . | tail -1 | awk '{printf("{"filesystem":"%s", "total":%d, "used":
%d, "available":%d}n", $1, $2, $3, $4)}'
$$ LANGUAGE plsh;
CREATE FUNCTION
plsh=#
plsh=# SELECT df();
--------------------------------------------------------------------------------
{"used": 16867508, "total": 18348032, "available": 1480524, "filesystem":
"/dev/mapper/centos-root"}
(1 row)
pl/sh による関数定義
定義した関数を実行
df コマンドの実行結果を取得して JSONB 型で返却
33
HOOK
インタフェース
34
PostgreSQL には
サーバ挙動に介入可能な
I/F (関数)が用意されている
PostgreSQL 11 では 38 種類の HOOK があると思う。
35
HOOK の利用例
pgaudit
https://github.com/pgaudit/pgaudit
pg_hint_plan
https://github.com/ossc-db/pg_hint_plan
36
HOOK 利用例
pg_sulog
作成
37
スーパーユーザ属性をもつ
ユーザ操作のみを強制ロギング
$ psql sampledb -U postgres -t -c "SELECT 1";
WARNING: pg_sulog: 2015-11-22 10:32:19 JST [logging] user=postgres SELECT 1
1
$ psql sampledb -U nuko -t -c "SELECT 2"
2
$ psql sampledb -U admin -t -c "SELECT 3"
WARNING: pg_sulog: 2015-11-22 10:32:27 JST [logging] user=admin SELECT 3
3
$
WARNING: pg_sulog: 2015-11-22 10:32:19 JST [logging] user=postgres SELECT 1
WARNING: pg_sulog: 2015-11-22 10:32:27 JST [logging] user=admin SELECT 3
スーパーユーザ
一般ユーザ
スーパーユーザ
サーバログにもスーパユーザ操作のみ書き込まれる
38
HOOK 組み込みの問題点
PostgreSQL 文書には
HOOK に関する情報がない!
PostgreSQL バージョンによって、頻繁
にインタフェースが変わってしまう!
39
ロジカル
デコーディング
40
PostgreSQL の更新ログを
任意の形式に変換できる
プラグインを組み込める
( PostgreSQL 9.4 ~)
41
ロジカルデコーディングの例
ロジカルレプリケーション
( PostgreSQL 10 ~)
BDR( 双方向レプリケータ )
https://www.2ndquadrant.com/en/resources/postgres-bdr-2ndquadrant/
wal2json
https://github.com/eulerto/wal2json
42
ロジカルデコーディングの例
wal2json + Logideco4neo4j
43
neo4j_fdw と組み合わせて、
グラフデータベース Neo4j を
PostgreSQL 経由で操作できる
44
Neo4j Server
Logideco4neo4j
PostgreSQL
Relational Model
Cypher Query
WAL
(wal_level=logical) Logical
Replication
Slot
Execute Cypher Query on REST
Convert Cypher Query
PostgreSQL
WAL to Neo4j
Graph Model
olumn1 column2 column3
・・・ ・・・ ・・・
・・・・ ・・・・ ・・・
Get Replication Slot Data
Decoding Function
wal2json
45
独自のインデックス
46
PostgreSQL ではもともと
多くのインデックスが利用できる。
btree 二分探索木を使ったインデックス。
通常はこのインデックスを用いることが多い。
hash 等比較に特化したインデックス。
btree のような汎用性はないが、等比較のみ使う場合
は、インデックスサイズや検索速度の優位がある。
gin 汎用転置インデックス。
全文検索や配列への検索などに利用される。
gist 独自インデックス構築の基盤。
sp-gist 空間インデックスに特化したインデックス構築基盤
brin ブロックレンジインデックス。物理的に整列されたデー
タに対して用いると、インデックスサイズを非常に小さ
くできる。( PostgreSQL 9.5 ~)
47
さらに独自のインデックス機構
を組み込むことができる。
gist 基盤を用いた実装
自分ですべて実装
48
独自インデックス例
contrib/btree-gist
contrib/bloom
49
カスタムスキャン
50
表をスキャンする独自の方法を
作成することができる。
例えば、特定の H/W に最速な
アクセス方法を組み込むなど。
51
カスタムスキャン例
PG-Strom
http://heterodb.github.io/pg-strom/ja/
PG-Strom の検証例 (GpuScan/GpuJoin などの例)
https://www.ntt-tx.co.jp/column/postgresql_blog/20180529/
52
Part.2
独自データ型開発例
53
PostgreSQL は
組込みデータ型が
とても多い
54
PostgreSQL 組込データ型 ( 一部 )
カテゴリ データ型
整数データ型 SMALLINT, INTEGER, BIGINT
任意精度数値型 NUMERIC, DECIMAL
浮動小数点数値型 REAL, DOUBLE PRECISION
連番型 SMALLSERIAL, SERIAL, BIGSERIAL
通過型 MONEY
文字型 CHAR, VARCHAR, TEXT
バイナリデータ型 BYTEA
日付 / 時刻データ型 TIMESTAMP, DATE, TIME, INTERVAL
論理値データ型 BOOLEAN
列挙型 ENUM
幾何データ型 POINT, LINE, LSEG, BOX, PATH, POLYGON, CIRCLE
ネットワークアドレス型 CIDR, INET, MACADDR, MACADDR8
ビット列データ型 BIT
テキスト検索用データ型 TSVECTOR, TSQUERY
UUID 型 UUID
XML 型 XML
JSON データ型 JSON, JSONB
55
たいていは組込のデータ型で
なんとかなるが、
自分で型を作成するほうが
便利なケースもある。
56
そこになければ
ないですね
作ればいいですね
57
独自のデータ型
(pg_fraction) を
PostgreSQL に
組み込む例
https://github.com/nuko-yokohama/pg_fraction
58
(余談)
この型を作ったのは業務都合じゃなく、
某グループ企業内 Slack で
「 PostgreSQL って分数扱えるの?w」
と煽られたので「できらぁ!」と言って
週末に作成して「どやぁ!」と
公開した、というしょーもない理由です
59
SELECT id, data, data + '2/3' AS add, data - '2/3' AS sub FROM test;
id | data | add | sub
----+------+-------+-------
1 | 2/3 | 4/3 | 0/1
2 | 3/7 | 23/21 | -5/21
3 | 1/5 | 13/15 | -7/15
(3 rows)
SELECT id, data, data * '2/3' AS mul, data / '2/3' AS div FROM test;
id | data | mul | div
----+------+------+------
1 | 2/3 | 4/9 | 1/1
2 | 3/7 | 2/7 | 9/14
3 | 1/5 | 2/15 | 3/10
(3 rows)
test=# SELECT * FROM test ORDER BY data;
id | data
----+------
3 | 1/5
2 | 3/7
1 | 2/3
(3 rows)
test=# SELECT max(data), min(data) FROM test ;
max | min
-----+-----
2/3 | 1/5
(1 row)
四則演算
並び替え=比較演算
集約演算
(再掲)
60
ユーザ定義型の構築順序 (1)
型定義
入出力定義
算術演算の定義
比較演算の定義
集約の定義
インデックス
パラレルスキャン対応
61
ユーザ定義型の構築順序 (2)
CREATE
FUNCTION
C 言語関数
CREATE TYPE 型の雛形
入出力関数
CREATE TYPE
ユーザ
定義型
C 言語関数
CREATE
FUNCTION
CREATE
FUNCTION
入出力関数
演算関数
比較関数
CREATE
OPERATOR
演算子
To be continued...
62
ユーザ定義型の構築順序 (3)
ユーザ
定義型
C 言語関数
CREATE
FUNCTION
演算関数
CREATE
AGGREGATE
集約関数
C 言語関数
CREATE
FUNCTION
比較関数
CREATE
OPERATOR
CLASS
インデックス
アクセス定義
63
型定義
SQL 定義
CREATE TYPE fraction;
CREATE FUNCTION fraction_in(cstring)
RETURNS fraction
AS 'MODULE_PATHNAME'
LANGUAGE C STRICT IMMUTABLE;
CREATE FUNCTION fraction_out(fraction)
RETURNS cstring
AS 'MODULE_PATHNAME'
LANGUAGE C STRICT IMMUTABLE;
CREATE TYPE fraction (
INTERNALLENGTH = 16,
INPUT = fraction_in,
OUTPUT = fraction_out,
STORAGE = plain
);
型定義の流れ
①ダミーの型を定義
②入出力関数を定義
③入出力関数を設定し
て、型を再定義
64
入出力定義
型の「外部表現」と「内部表現」
入出力関数で外部表現と内部表現を変換
TEXT 型 int 型 int 型 doible 型
入力関数
出力関数
外部表現 内部表現
‘3/5’ 3 5 0.6
fraction_in
fraction_out
外部表現 内部表現
65
入出力定義(入力定義)
C 言語関数
PG_FUNCTION_INFO_V1(fraction_in);
Datum
fraction_in(PG_FUNCTION_ARGS)
{
char *str = PG_GETARG_CSTRING(0);
int n, d;
Fraction *result;
/* TODO: more smart parse */
if (sscanf(str, "%d/%d", &n, &d) != 2)
ereport(ERROR,
(errcode(ERRCODE_INVALID_TEXT_REPRESENTATION),
errmsg("pg_fraction:invalid input syntax: "%s"",
str)));
/* range check */
if (d == 0) {
ereport(ERROR,
(errcode(ERRCODE_DIVISION_BY_ZERO),
errmsg("pg_fraction:division by zero: "%s"",
str)));
}
result = (Fraction* ) palloc(sizeof(Fraction));
reduce_fraction(&n, &d);
if ( abs(n) > 99999 || abs(d) > 99999 ) {
ereport(ERROR,
(errcode(ERRCODE_INVALID_TEXT_REPRESENTATION),
errmsg("pg_fraction:: overflow error (max=99999) "%s"",
str)));
}
result->numerator = n;
result->denominator = d;
result->value = (double) n / (double) d;
PG_RETURN_POINTER(result);
}
SQL 定義
CREATE TYPE fraction;
CREATE FUNCTION fraction_in(cstring)
RETURNS fraction
AS 'MODULE_PATHNAME'
LANGUAGE C STRICT IMMUTABLE;
CREATE FUNCTION fraction_out(fraction)
RETURNS cstring
AS 'MODULE_PATHNAME'
LANGUAGE C STRICT IMMUTABLE;
CREATE TYPE fraction (
INTERNALLENGTH = 16,
INPUT = fraction_in,
OUTPUT = fraction_out,
STORAGE = plain
);
typedef struct st_fraction {
int numerator;
int denominator;
double value;
} fraction;
C 言語ヘッダ
66
入出力定義(出力定義)
C 言語関数
PG_FUNCTION_INFO_V1(fraction_out);
Datum
fraction_out(PG_FUNCTION_ARGS)
{
Fraction *fraction= (Fraction*) PG_GETARG_POINTER(0);
char *result;
result = psprintf("%d/%d", fraction->numerator, fraction->denominator);
PG_RETURN_CSTRING(result);
}
SQL 定義
CREATE TYPE fraction;
CREATE FUNCTION fraction_in(cstring)
RETURNS fraction
AS 'MODULE_PATHNAME'
LANGUAGE C STRICT IMMUTABLE;
CREATE FUNCTION fraction_out(fraction)
RETURNS cstring
AS 'MODULE_PATHNAME'
LANGUAGE C STRICT IMMUTABLE;
CREATE TYPE fraction (
INTERNALLENGTH = 16,
INPUT = fraction_in,
OUTPUT = fraction_out,
STORAGE = plain
);
67
算術演算の定義( + 演算子)
CREATE FUNCTION
CREATE OPERATOR
PG_FUNCTION_INFO_V1(fraction_add);
Datum fraction_add(PG_FUNCTION_ARGS);
Datum fraction_add(PG_FUNCTION_ARGS) {
Fraction *f1;
Fraction *f2;
Fraction *result;
int n, d;
f1 = (Fraction*) PG_GETARG_POINTER(0);
f2 = (Fraction*) PG_GETARG_POINTER(1);
add_fraction_internal(
f1->numerator,
f1->denominator,
f2->numerator,
f2->denominator,
&n,
&d);
result = (Fraction*) palloc(sizeof(Fraction));
result->numerator = n;
result->denominator = d;
result->value = (double) n / (double) d;
PG_RETURN_POINTER(result);
}
SQL 定義
--
-- 加算関数を定義する
--
CREATE FUNCTION fraction_add(fraction, fraction)
RETURNS fraction
AS 'MODULE_PATHNAME'
PARALLEL SAFE
LANGUAGE C IMMUTABLE STRICT;
--
-- + 演算子を定義する
--
CREATE OPERATOR + (
leftarg = fraction,
rightarg = fraction,
procedure = fraction_add,
commutator = +
);
C 言語関数
68
比較演算の定義( = 演算子の例)
C 言語関数
PG_FUNCTION_INFO_V1(fraction_eq);
Datum fraction_eq(PG_FUNCTION_ARGS);
Datum
fraction_eq(PG_FUNCTION_ARGS)
{
Fraction* f1 = (Fraction*) PG_GETARG_POINTER(0);
Fraction* f2 = (Fraction*) PG_GETARG_POINTER(1);
double f1_v = f1->value;
double f2_v = f2->value;
PG_RETURN_BOOL(fraction_cmp_internal( f1_v, f2_v) == 0);
}
SQL 定義
--
-- eq 比較関数を定義する
--
CREATE FUNCTION fraction_eq(fraction, fraction)
RETURNS bool
AS 'MODULE_PATHNAME'
LANGUAGE C IMMUTABLE STRICT;
--
-- = 演算子を定義する
--
CREATE OPERATOR = (
leftarg = fraction,
rightarg = fraction,
procedure = fraction_eq,
commutator = =,
RESTRICT = eqsel
);
CREATE FUNCTION
CREATE OPERATOR
69
集約の定義( MAX 関数の定義例)
C 言語関数
PG_FUNCTION_INFO_V1(fraction_max);
Datum fraction_max(PG_FUNCTION_ARGS);
Datum fraction_max(PG_FUNCTION_ARGS) {
Fraction* f_l = (Fraction*) PG_GETARG_POINTER(0);
Fraction* f_r = (Fraction*) PG_GETARG_POINTER(1);
if (f_l->value > f_r->value ) {
PG_RETURN_POINTER(f_l);
} else {
PG_RETURN_POINTER(f_r);
}
}
SQL 定義
ーー
-- fraction_max 関数を定義する
--
CREATE FUNCTION fraction_max(fraction, fraction)
RETURNS fraction
AS 'MODULE_PATHNAME'
PARALLEL SAFE
IMMUTABLE
LANGUAGE C STRICT
;
--
-- fraction_max を集約関数 MAX として定義する
--
CREATE AGGREGATE max (fraction)
(
sfunc = fraction_max,
combinefunc = fraction_max,
stype = fraction,
initcond = '-99999/1',
parallel = safe
);
CREATE FUNCTION
CREATE AGGREGATE
70
インデックスを有効にする定義
C 言語関数/*
* 2 値ではなく 3 値を返すのがポイント
*/
static int
fraction_cmp_internal(double a, double b)
{
if (a < b)
return -1;
if (a > b)
return 1;
return 0;
}
/*
* B-tree インデックス比較用の関数
*/
Datum
fraction_cmp(PG_FUNCTION_ARGS)
{
Fraction* f1 = (Fraction*) PG_GETARG_POINTER(0);
Fraction* f2 = (Fraction*) PG_GETARG_POINTER(1);
double f1_v = f1->value;
double f2_v = f2->value;
PG_RETURN_INT32(fraction_cmp_internal( f1_v, f2_v));
}
SQL 定義
--
-- B-tree index support
--
CREATE FUNCTION fraction_cmp(fraction, fraction)
RETURNS integer
AS 'MODULE_PATHNAME'
LANGUAGE C IMMUTABLE STRICT;
-- freaction operator class
CREATE OPERATOR CLASS fraction_ops
DEFAULT FOR TYPE fraction USING btree AS
OPERATOR 1 < ,
OPERATOR 2 <= ,
OPERATOR 3 = ,
OPERATOR 4 >= ,
OPERATOR 5 > ,
FUNCTION 1 fraction_cmp(fraction,
fraction);
CREATE FUNCTION
CREATE OPERATOR CLASS
71
ビルド環境 (Linux)
pg_fraction の例
ファイル / フォルダ名 説明
Makefile ビルド、インストール用。
Readme.md 説明用のファイル。 Markdown 形式で書いておく。
calc.c 分数演算用の関数群
calc.h 分数演算用のヘッダファイル
pg_fraction--1.0.sql 分数型用の型定義、 SQL 関数、演算子定義等を行う
SQL ファイル
pg_fraction.c 分数型用の SQL 関数用 C ソース・ファイル
pg_fraction.control 分数型を拡張機能として登録するための制御ファイル
pg_fraction.h 分数型用の SQL 関数用ヘッダファイル
sql/ リグレッションテスト用の SQL ファイル
expected/ 期待結果ファイル。リグレッションテストの比較用
72
ビルド / インストール
Makefile の例
# contrib/ksj/Makefile
MODULE_big = pg_fraction
OBJS = pg_fraction.o calc.o
EXTENSION = pg_fraction
DATA = pg_fraction--1.0.sql
REGRESS = pg_fraction
ifdef USE_PGXS
PG_CONFIG = pg_config
PGXS := $(shell $(PG_CONFIG) --pgxs)
include $(PGXS)
else
subdir = contrib/ksj
top_builddir = ../..
include $(top_builddir)/src/Makefile.global
include $(top_srcdir)/contrib/contrib-global.mk
endif
73
ビルド / インストール
ビルド手順の例
$ make USE_PGXS=1 clean
rm -f pg_fraction.so libpg_fraction.a libpg_fraction.pc
rm -f pg_fraction.o calc.o pg_fraction.bc calc.bc
rm -rf results/ regression.diffs regression.out tmp_check/ tmp_check_iso/ log/ output_iso/
$ make USE_PGXS=1
gcc -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Wendif-labels -
Wmissing-format-attribute -Wformat-security -fno-strict-aliasing -fwrapv -fexcess-
precision=standard -O2 -fPIC -I. -I./ -I/home/nuko/pgsql/pgsql-11/include/server
-I/home/nuko/pgsql/pgsql-11/include/internal -D_GNU_SOURCE -c -o pg_fraction.o pg_fraction.c
gcc -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Wendif-labels -
Wmissing-format-attribute -Wformat-security -fno-strict-aliasing -fwrapv -fexcess-
precision=standard -O2 -fPIC -I. -I./ -I/home/nuko/pgsql/pgsql-11/include/server
-I/home/nuko/pgsql/pgsql-11/include/internal -D_GNU_SOURCE -c -o calc.o calc.c
gcc -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Wendif-labels -
Wmissing-format-attribute -Wformat-security -fno-strict-aliasing -fwrapv -fexcess-
precision=standard -O2 -fPIC -shared -o pg_fraction.so pg_fraction.o calc.o -L/home/nuko/pgsql/
pgsql-11/lib -Wl,--as-needed -Wl,-rpath,'/home/nuko/pgsql/pgsql-11/lib',--enable-new-dtags
$ make USE_PGXS=1 install
/usr/bin/mkdir -p '/home/nuko/pgsql/pgsql-11/lib'
/usr/bin/mkdir -p '/home/nuko/pgsql/pgsql-11/share/extension'
/usr/bin/mkdir -p '/home/nuko/pgsql/pgsql-11/share/extension'
/usr/bin/install -c -m 755 pg_fraction.so '/home/nuko/pgsql/pgsql-11/lib/pg_fraction.so'
/usr/bin/install -c -m 644 .//pg_fraction.control '/home/nuko/pgsql/pgsql-11/share/extension/'
/usr/bin/install -c -m 644 .//pg_fraction--1.0.sql
'/home/nuko/pgsql/pgsql-11/share/extension/'
$
74
拡張機能のパッケージ化と登録
CREATE EXTENSION 用の設定ファイル
(pg_fraction.control) を作成しておく
# pg_fraction extension
comment = 'fraction data type'
default_version = '1.0'
module_pathname = '$libdir/pg_fraction'
relocatable = true
作成した拡張機能を CREATE EXTENSION コマンドで
データベースに登録する。
test=# CREATE EXTENSION pg_fraction ;
CREATE EXTENSION
test=# dx
List of installed extensions
Name | Version | Schema | Description
-------------+---------+------------+------------------------------
pg_fraction | 1.0 | public | fraction data type
plpgsql | 1.0 | pg_catalog | PL/pgSQL procedural language
(2 rows)
75
おわりに
76
PostgreSQL は
いろんな拡張機能が
気軽に開発できるので
楽しいよ!
という話でした
77
おしまい

More Related Content

What's hot

PostgreSQLとPythonとSQL
PostgreSQLとPythonとSQLPostgreSQLとPythonとSQL
PostgreSQLとPythonとSQLSatoshi Yamada
 
SQLチューニング入門 入門編
SQLチューニング入門 入門編SQLチューニング入門 入門編
SQLチューニング入門 入門編Miki Shimogai
 
Postgre sql9.3 newlockmode_and_etc
Postgre sql9.3 newlockmode_and_etcPostgre sql9.3 newlockmode_and_etc
Postgre sql9.3 newlockmode_and_etckasaharatt
 
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~Miki Shimogai
 
PythonでテキストをJSONにした話(PyCon mini sapporo 2015)
PythonでテキストをJSONにした話(PyCon mini sapporo 2015)PythonでテキストをJSONにした話(PyCon mini sapporo 2015)
PythonでテキストをJSONにした話(PyCon mini sapporo 2015)Satoshi Yamada
 
Chugokudb study-20150131
Chugokudb study-20150131Chugokudb study-20150131
Chugokudb study-20150131Toshi Harada
 
[data analytics showcase] B12: サーバー1,000台を監視するということ by 株式会社インサイトテクノロジー 小幡 一郎
[data analytics showcase] B12: サーバー1,000台を監視するということ by 株式会社インサイトテクノロジー 小幡 一郎[data analytics showcase] B12: サーバー1,000台を監視するということ by 株式会社インサイトテクノロジー 小幡 一郎
[data analytics showcase] B12: サーバー1,000台を監視するということ by 株式会社インサイトテクノロジー 小幡 一郎Insight Technology, Inc.
 
Hackers Champloo 2016 postgresql-9.6
Hackers Champloo 2016 postgresql-9.6Hackers Champloo 2016 postgresql-9.6
Hackers Champloo 2016 postgresql-9.6Toshi Harada
 
OSC沖縄2014_JPUG資料
OSC沖縄2014_JPUG資料OSC沖縄2014_JPUG資料
OSC沖縄2014_JPUG資料kasaharatt
 
Maatkit で MySQL チューニング
Maatkit で MySQL チューニングMaatkit で MySQL チューニング
Maatkit で MySQL チューニングKensuke Nagae
 
PostgreSQL SQLチューニング入門 実践編(pgcon14j)
PostgreSQL SQLチューニング入門 実践編(pgcon14j)PostgreSQL SQLチューニング入門 実践編(pgcon14j)
PostgreSQL SQLチューニング入門 実践編(pgcon14j)Satoshi Yamada
 
Kof2016 postgresql-9.6
Kof2016 postgresql-9.6Kof2016 postgresql-9.6
Kof2016 postgresql-9.6Toshi Harada
 
Handlerさんコンニチワ
HandlerさんコンニチワHandlerさんコンニチワ
Handlerさんコンニチワyoku0825
 
Groovyで楽にSQLを実行してみよう
Groovyで楽にSQLを実行してみようGroovyで楽にSQLを実行してみよう
Groovyで楽にSQLを実行してみようAkira Shimosako
 
PostgreSQL運用管理入門
PostgreSQL運用管理入門PostgreSQL運用管理入門
PostgreSQL運用管理入門Yoshiyuki Asaba
 
9.3で進化した外部テーブル
9.3で進化した外部テーブル9.3で進化した外部テーブル
9.3で進化した外部テーブルShigeru Hanada
 
MySQLを割と一人で300台管理する技術
MySQLを割と一人で300台管理する技術MySQLを割と一人で300台管理する技術
MySQLを割と一人で300台管理する技術yoku0825
 

What's hot (20)

PostgreSQLとPythonとSQL
PostgreSQLとPythonとSQLPostgreSQLとPythonとSQL
PostgreSQLとPythonとSQL
 
SQLチューニング入門 入門編
SQLチューニング入門 入門編SQLチューニング入門 入門編
SQLチューニング入門 入門編
 
Postgre sql9.3 newlockmode_and_etc
Postgre sql9.3 newlockmode_and_etcPostgre sql9.3 newlockmode_and_etc
Postgre sql9.3 newlockmode_and_etc
 
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
 
PythonでテキストをJSONにした話(PyCon mini sapporo 2015)
PythonでテキストをJSONにした話(PyCon mini sapporo 2015)PythonでテキストをJSONにした話(PyCon mini sapporo 2015)
PythonでテキストをJSONにした話(PyCon mini sapporo 2015)
 
Chugokudb study-20150131
Chugokudb study-20150131Chugokudb study-20150131
Chugokudb study-20150131
 
[data analytics showcase] B12: サーバー1,000台を監視するということ by 株式会社インサイトテクノロジー 小幡 一郎
[data analytics showcase] B12: サーバー1,000台を監視するということ by 株式会社インサイトテクノロジー 小幡 一郎[data analytics showcase] B12: サーバー1,000台を監視するということ by 株式会社インサイトテクノロジー 小幡 一郎
[data analytics showcase] B12: サーバー1,000台を監視するということ by 株式会社インサイトテクノロジー 小幡 一郎
 
Hackers Champloo 2016 postgresql-9.6
Hackers Champloo 2016 postgresql-9.6Hackers Champloo 2016 postgresql-9.6
Hackers Champloo 2016 postgresql-9.6
 
OSC沖縄2014_JPUG資料
OSC沖縄2014_JPUG資料OSC沖縄2014_JPUG資料
OSC沖縄2014_JPUG資料
 
OSC2015nagoya
OSC2015nagoyaOSC2015nagoya
OSC2015nagoya
 
Maatkit で MySQL チューニング
Maatkit で MySQL チューニングMaatkit で MySQL チューニング
Maatkit で MySQL チューニング
 
PostgreSQL SQLチューニング入門 実践編(pgcon14j)
PostgreSQL SQLチューニング入門 実践編(pgcon14j)PostgreSQL SQLチューニング入門 実践編(pgcon14j)
PostgreSQL SQLチューニング入門 実践編(pgcon14j)
 
Kof2016 postgresql-9.6
Kof2016 postgresql-9.6Kof2016 postgresql-9.6
Kof2016 postgresql-9.6
 
Handlerさんコンニチワ
HandlerさんコンニチワHandlerさんコンニチワ
Handlerさんコンニチワ
 
Groovyで楽にSQLを実行してみよう
Groovyで楽にSQLを実行してみようGroovyで楽にSQLを実行してみよう
Groovyで楽にSQLを実行してみよう
 
dm-thin-internal-ja
dm-thin-internal-jadm-thin-internal-ja
dm-thin-internal-ja
 
PostgreSQL運用管理入門
PostgreSQL運用管理入門PostgreSQL運用管理入門
PostgreSQL運用管理入門
 
ヤフー社内でやってるMySQLチューニングセミナー大公開
ヤフー社内でやってるMySQLチューニングセミナー大公開ヤフー社内でやってるMySQLチューニングセミナー大公開
ヤフー社内でやってるMySQLチューニングセミナー大公開
 
9.3で進化した外部テーブル
9.3で進化した外部テーブル9.3で進化した外部テーブル
9.3で進化した外部テーブル
 
MySQLを割と一人で300台管理する技術
MySQLを割と一人で300台管理する技術MySQLを割と一人で300台管理する技術
MySQLを割と一人で300台管理する技術
 

Similar to 20181110 fok2018-pg-extension

Jpug study-pq 20170121
Jpug study-pq 20170121Jpug study-pq 20170121
Jpug study-pq 20170121Kosuke Kida
 
外部データラッパによる PostgreSQL の拡張
外部データラッパによる PostgreSQL の拡張外部データラッパによる PostgreSQL の拡張
外部データラッパによる PostgreSQL の拡張Shigeru Hanada
 
PostgreSQLレプリケーション(pgcon17j_t4)
PostgreSQLレプリケーション(pgcon17j_t4)PostgreSQLレプリケーション(pgcon17j_t4)
PostgreSQLレプリケーション(pgcon17j_t4)Kosuke Kida
 
20170127 JAWS HPC-UG#8
20170127 JAWS HPC-UG#820170127 JAWS HPC-UG#8
20170127 JAWS HPC-UG#8Kohei KaiGai
 
位置情報を使ったサービス「スマポ」をPostgreSQLで作ってみた db tech showcase 2013 Tokyo
位置情報を使ったサービス「スマポ」をPostgreSQLで作ってみた db tech showcase 2013 Tokyo位置情報を使ったサービス「スマポ」をPostgreSQLで作ってみた db tech showcase 2013 Tokyo
位置情報を使ったサービス「スマポ」をPostgreSQLで作ってみた db tech showcase 2013 TokyoYoshiyuki Asaba
 
MySQLとPostgreSQLの基本的な実行プラン比較
MySQLとPostgreSQLの基本的な実行プラン比較MySQLとPostgreSQLの基本的な実行プラン比較
MySQLとPostgreSQLの基本的な実行プラン比較Shinya Sugiyama
 
DBスキーマもバージョン管理したい!
DBスキーマもバージョン管理したい!DBスキーマもバージョン管理したい!
DBスキーマもバージョン管理したい!kwatch
 
あなたの知らないPostgreSQL監視の世界
あなたの知らないPostgreSQL監視の世界あなたの知らないPostgreSQL監視の世界
あなたの知らないPostgreSQL監視の世界Yoshinori Nakanishi
 
20160929_InnoDBの全文検索を使ってみた by 株式会社インサイトテクノロジー 中村範夫
20160929_InnoDBの全文検索を使ってみた by 株式会社インサイトテクノロジー 中村範夫20160929_InnoDBの全文検索を使ってみた by 株式会社インサイトテクノロジー 中村範夫
20160929_InnoDBの全文検索を使ってみた by 株式会社インサイトテクノロジー 中村範夫Insight Technology, Inc.
 
Oracle Cloud Developers Meetup@東京
Oracle Cloud Developers Meetup@東京Oracle Cloud Developers Meetup@東京
Oracle Cloud Developers Meetup@東京tuchimur
 
PL/CUDA - Fusion of HPC Grade Power with In-Database Analytics
PL/CUDA - Fusion of HPC Grade Power with In-Database AnalyticsPL/CUDA - Fusion of HPC Grade Power with In-Database Analytics
PL/CUDA - Fusion of HPC Grade Power with In-Database AnalyticsKohei KaiGai
 
PostgreSQL v9.5の新機能~CustomScan/Join Interface
PostgreSQL v9.5の新機能~CustomScan/Join InterfacePostgreSQL v9.5の新機能~CustomScan/Join Interface
PostgreSQL v9.5の新機能~CustomScan/Join InterfaceKohei KaiGai
 
世の中のPostgreSQLエンジニアのpsql設定(第34回PostgreSQLアンカンファレンス@オンライン 発表資料)
世の中のPostgreSQLエンジニアのpsql設定(第34回PostgreSQLアンカンファレンス@オンライン 発表資料)世の中のPostgreSQLエンジニアのpsql設定(第34回PostgreSQLアンカンファレンス@オンライン 発表資料)
世の中のPostgreSQLエンジニアのpsql設定(第34回PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
generate_series関数使い込み
generate_series関数使い込みgenerate_series関数使い込み
generate_series関数使い込みkawarasho
 
PostgreSQLアーキテクチャ入門(PostgreSQL Conference 2012)
PostgreSQLアーキテクチャ入門(PostgreSQL Conference 2012)PostgreSQLアーキテクチャ入門(PostgreSQL Conference 2012)
PostgreSQLアーキテクチャ入門(PostgreSQL Conference 2012)Uptime Technologies LLC (JP)
 
KOF2015 PostgreSQL 9.5
KOF2015 PostgreSQL 9.5KOF2015 PostgreSQL 9.5
KOF2015 PostgreSQL 9.5Toshi Harada
 
Rユーザのためのspark入門
Rユーザのためのspark入門Rユーザのためのspark入門
Rユーザのためのspark入門Shintaro Fukushima
 
Bind Peek をもっと使おうぜ!(柴田 歩) - JPOUG Advent Calendar 2014(Day 5) -
Bind Peek をもっと使おうぜ!(柴田 歩) - JPOUG Advent Calendar 2014(Day 5) -Bind Peek をもっと使おうぜ!(柴田 歩) - JPOUG Advent Calendar 2014(Day 5) -
Bind Peek をもっと使おうぜ!(柴田 歩) - JPOUG Advent Calendar 2014(Day 5) -歩 柴田
 
IEICE technical report (RECONF), January 2015.
IEICE technical report (RECONF), January 2015.IEICE technical report (RECONF), January 2015.
IEICE technical report (RECONF), January 2015.Takuma Usui
 

Similar to 20181110 fok2018-pg-extension (20)

Jpug study-pq 20170121
Jpug study-pq 20170121Jpug study-pq 20170121
Jpug study-pq 20170121
 
外部データラッパによる PostgreSQL の拡張
外部データラッパによる PostgreSQL の拡張外部データラッパによる PostgreSQL の拡張
外部データラッパによる PostgreSQL の拡張
 
Chugokudb18_2
Chugokudb18_2Chugokudb18_2
Chugokudb18_2
 
PostgreSQLレプリケーション(pgcon17j_t4)
PostgreSQLレプリケーション(pgcon17j_t4)PostgreSQLレプリケーション(pgcon17j_t4)
PostgreSQLレプリケーション(pgcon17j_t4)
 
20170127 JAWS HPC-UG#8
20170127 JAWS HPC-UG#820170127 JAWS HPC-UG#8
20170127 JAWS HPC-UG#8
 
位置情報を使ったサービス「スマポ」をPostgreSQLで作ってみた db tech showcase 2013 Tokyo
位置情報を使ったサービス「スマポ」をPostgreSQLで作ってみた db tech showcase 2013 Tokyo位置情報を使ったサービス「スマポ」をPostgreSQLで作ってみた db tech showcase 2013 Tokyo
位置情報を使ったサービス「スマポ」をPostgreSQLで作ってみた db tech showcase 2013 Tokyo
 
MySQLとPostgreSQLの基本的な実行プラン比較
MySQLとPostgreSQLの基本的な実行プラン比較MySQLとPostgreSQLの基本的な実行プラン比較
MySQLとPostgreSQLの基本的な実行プラン比較
 
DBスキーマもバージョン管理したい!
DBスキーマもバージョン管理したい!DBスキーマもバージョン管理したい!
DBスキーマもバージョン管理したい!
 
あなたの知らないPostgreSQL監視の世界
あなたの知らないPostgreSQL監視の世界あなたの知らないPostgreSQL監視の世界
あなたの知らないPostgreSQL監視の世界
 
20160929_InnoDBの全文検索を使ってみた by 株式会社インサイトテクノロジー 中村範夫
20160929_InnoDBの全文検索を使ってみた by 株式会社インサイトテクノロジー 中村範夫20160929_InnoDBの全文検索を使ってみた by 株式会社インサイトテクノロジー 中村範夫
20160929_InnoDBの全文検索を使ってみた by 株式会社インサイトテクノロジー 中村範夫
 
Oracle Cloud Developers Meetup@東京
Oracle Cloud Developers Meetup@東京Oracle Cloud Developers Meetup@東京
Oracle Cloud Developers Meetup@東京
 
PL/CUDA - Fusion of HPC Grade Power with In-Database Analytics
PL/CUDA - Fusion of HPC Grade Power with In-Database AnalyticsPL/CUDA - Fusion of HPC Grade Power with In-Database Analytics
PL/CUDA - Fusion of HPC Grade Power with In-Database Analytics
 
PostgreSQL v9.5の新機能~CustomScan/Join Interface
PostgreSQL v9.5の新機能~CustomScan/Join InterfacePostgreSQL v9.5の新機能~CustomScan/Join Interface
PostgreSQL v9.5の新機能~CustomScan/Join Interface
 
世の中のPostgreSQLエンジニアのpsql設定(第34回PostgreSQLアンカンファレンス@オンライン 発表資料)
世の中のPostgreSQLエンジニアのpsql設定(第34回PostgreSQLアンカンファレンス@オンライン 発表資料)世の中のPostgreSQLエンジニアのpsql設定(第34回PostgreSQLアンカンファレンス@オンライン 発表資料)
世の中のPostgreSQLエンジニアのpsql設定(第34回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
generate_series関数使い込み
generate_series関数使い込みgenerate_series関数使い込み
generate_series関数使い込み
 
PostgreSQLアーキテクチャ入門(PostgreSQL Conference 2012)
PostgreSQLアーキテクチャ入門(PostgreSQL Conference 2012)PostgreSQLアーキテクチャ入門(PostgreSQL Conference 2012)
PostgreSQLアーキテクチャ入門(PostgreSQL Conference 2012)
 
KOF2015 PostgreSQL 9.5
KOF2015 PostgreSQL 9.5KOF2015 PostgreSQL 9.5
KOF2015 PostgreSQL 9.5
 
Rユーザのためのspark入門
Rユーザのためのspark入門Rユーザのためのspark入門
Rユーザのためのspark入門
 
Bind Peek をもっと使おうぜ!(柴田 歩) - JPOUG Advent Calendar 2014(Day 5) -
Bind Peek をもっと使おうぜ!(柴田 歩) - JPOUG Advent Calendar 2014(Day 5) -Bind Peek をもっと使おうぜ!(柴田 歩) - JPOUG Advent Calendar 2014(Day 5) -
Bind Peek をもっと使おうぜ!(柴田 歩) - JPOUG Advent Calendar 2014(Day 5) -
 
IEICE technical report (RECONF), January 2015.
IEICE technical report (RECONF), January 2015.IEICE technical report (RECONF), January 2015.
IEICE technical report (RECONF), January 2015.
 

More from Toshi Harada

無駄にNeo4jを使っている日々
無駄にNeo4jを使っている日々無駄にNeo4jを使っている日々
無駄にNeo4jを使っている日々Toshi Harada
 
Pgunconf14 pg13-psql
Pgunconf14 pg13-psqlPgunconf14 pg13-psql
Pgunconf14 pg13-psqlToshi Harada
 
20190518 27th-chugoku db-lt-pg12
20190518 27th-chugoku db-lt-pg1220190518 27th-chugoku db-lt-pg12
20190518 27th-chugoku db-lt-pg12Toshi Harada
 
20190202-pgunconf-Access-Privilege-Inquiry-Functions
20190202-pgunconf-Access-Privilege-Inquiry-Functions20190202-pgunconf-Access-Privilege-Inquiry-Functions
20190202-pgunconf-Access-Privilege-Inquiry-FunctionsToshi Harada
 
20181122 pg con-jp-lt-logrep
20181122 pg con-jp-lt-logrep20181122 pg con-jp-lt-logrep
20181122 pg con-jp-lt-logrepToshi Harada
 
20171106 ntt-tx-postgre sql-10
20171106 ntt-tx-postgre sql-1020171106 ntt-tx-postgre sql-10
20171106 ntt-tx-postgre sql-10Toshi Harada
 
20171103 pg con-jp-lt-plpgsql
20171103 pg con-jp-lt-plpgsql20171103 pg con-jp-lt-plpgsql
20171103 pg con-jp-lt-plpgsqlToshi Harada
 
20171028 osc-nagaoka-postgre sql-10
20171028 osc-nagaoka-postgre sql-1020171028 osc-nagaoka-postgre sql-10
20171028 osc-nagaoka-postgre sql-10Toshi Harada
 
20170819 ocd-l tthon-pgdev
20170819 ocd-l tthon-pgdev20170819 ocd-l tthon-pgdev
20170819 ocd-l tthon-pgdevToshi Harada
 
Ntt tx-study-postgre sql-10
Ntt tx-study-postgre sql-10Ntt tx-study-postgre sql-10
Ntt tx-study-postgre sql-10Toshi Harada
 
Jpug study-postgre sql-10-pub
Jpug study-postgre sql-10-pubJpug study-postgre sql-10-pub
Jpug study-postgre sql-10-pubToshi Harada
 
Chugoku db 20th-postgresql-10-pub
Chugoku db 20th-postgresql-10-pubChugoku db 20th-postgresql-10-pub
Chugoku db 20th-postgresql-10-pubToshi Harada
 
Pgconf asia-201612203-pg reversi-ja
Pgconf asia-201612203-pg reversi-jaPgconf asia-201612203-pg reversi-ja
Pgconf asia-201612203-pg reversi-jaToshi Harada
 
Pgconf asia-201612203-pg reversi
Pgconf asia-201612203-pg reversiPgconf asia-201612203-pg reversi
Pgconf asia-201612203-pg reversiToshi Harada
 
Chugoku db 17th-lt-kly
Chugoku db 17th-lt-klyChugoku db 17th-lt-kly
Chugoku db 17th-lt-klyToshi Harada
 
Chugoku db 17th-postgresql-9.6
Chugoku db 17th-postgresql-9.6Chugoku db 17th-postgresql-9.6
Chugoku db 17th-postgresql-9.6Toshi Harada
 
Osc shimane-2016-do-postgres-dream-of-graph-database
Osc shimane-2016-do-postgres-dream-of-graph-databaseOsc shimane-2016-do-postgres-dream-of-graph-database
Osc shimane-2016-do-postgres-dream-of-graph-databaseToshi Harada
 
Dblt#2 do-postgres-dream-of-graph-database
Dblt#2 do-postgres-dream-of-graph-databaseDblt#2 do-postgres-dream-of-graph-database
Dblt#2 do-postgres-dream-of-graph-databaseToshi Harada
 
Do postgres-dream-of-graph-database
Do postgres-dream-of-graph-databaseDo postgres-dream-of-graph-database
Do postgres-dream-of-graph-databaseToshi Harada
 

More from Toshi Harada (20)

無駄にNeo4jを使っている日々
無駄にNeo4jを使っている日々無駄にNeo4jを使っている日々
無駄にNeo4jを使っている日々
 
Pgunconf16 toast
Pgunconf16 toastPgunconf16 toast
Pgunconf16 toast
 
Pgunconf14 pg13-psql
Pgunconf14 pg13-psqlPgunconf14 pg13-psql
Pgunconf14 pg13-psql
 
20190518 27th-chugoku db-lt-pg12
20190518 27th-chugoku db-lt-pg1220190518 27th-chugoku db-lt-pg12
20190518 27th-chugoku db-lt-pg12
 
20190202-pgunconf-Access-Privilege-Inquiry-Functions
20190202-pgunconf-Access-Privilege-Inquiry-Functions20190202-pgunconf-Access-Privilege-Inquiry-Functions
20190202-pgunconf-Access-Privilege-Inquiry-Functions
 
20181122 pg con-jp-lt-logrep
20181122 pg con-jp-lt-logrep20181122 pg con-jp-lt-logrep
20181122 pg con-jp-lt-logrep
 
20171106 ntt-tx-postgre sql-10
20171106 ntt-tx-postgre sql-1020171106 ntt-tx-postgre sql-10
20171106 ntt-tx-postgre sql-10
 
20171103 pg con-jp-lt-plpgsql
20171103 pg con-jp-lt-plpgsql20171103 pg con-jp-lt-plpgsql
20171103 pg con-jp-lt-plpgsql
 
20171028 osc-nagaoka-postgre sql-10
20171028 osc-nagaoka-postgre sql-1020171028 osc-nagaoka-postgre sql-10
20171028 osc-nagaoka-postgre sql-10
 
20170819 ocd-l tthon-pgdev
20170819 ocd-l tthon-pgdev20170819 ocd-l tthon-pgdev
20170819 ocd-l tthon-pgdev
 
Ntt tx-study-postgre sql-10
Ntt tx-study-postgre sql-10Ntt tx-study-postgre sql-10
Ntt tx-study-postgre sql-10
 
Jpug study-postgre sql-10-pub
Jpug study-postgre sql-10-pubJpug study-postgre sql-10-pub
Jpug study-postgre sql-10-pub
 
Chugoku db 20th-postgresql-10-pub
Chugoku db 20th-postgresql-10-pubChugoku db 20th-postgresql-10-pub
Chugoku db 20th-postgresql-10-pub
 
Pgconf asia-201612203-pg reversi-ja
Pgconf asia-201612203-pg reversi-jaPgconf asia-201612203-pg reversi-ja
Pgconf asia-201612203-pg reversi-ja
 
Pgconf asia-201612203-pg reversi
Pgconf asia-201612203-pg reversiPgconf asia-201612203-pg reversi
Pgconf asia-201612203-pg reversi
 
Chugoku db 17th-lt-kly
Chugoku db 17th-lt-klyChugoku db 17th-lt-kly
Chugoku db 17th-lt-kly
 
Chugoku db 17th-postgresql-9.6
Chugoku db 17th-postgresql-9.6Chugoku db 17th-postgresql-9.6
Chugoku db 17th-postgresql-9.6
 
Osc shimane-2016-do-postgres-dream-of-graph-database
Osc shimane-2016-do-postgres-dream-of-graph-databaseOsc shimane-2016-do-postgres-dream-of-graph-database
Osc shimane-2016-do-postgres-dream-of-graph-database
 
Dblt#2 do-postgres-dream-of-graph-database
Dblt#2 do-postgres-dream-of-graph-databaseDblt#2 do-postgres-dream-of-graph-database
Dblt#2 do-postgres-dream-of-graph-database
 
Do postgres-dream-of-graph-database
Do postgres-dream-of-graph-databaseDo postgres-dream-of-graph-database
Do postgres-dream-of-graph-database
 

Recently uploaded

【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 

Recently uploaded (10)

【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 

20181110 fok2018-pg-extension