SlideShare une entreprise Scribd logo
1  sur  82
Télécharger pour lire hors ligne
AWSAWS 勉強会勉強会 (2019-01-18)(2019-01-18)
PostgreSQLPostgreSQL を拡張してを拡張して
もっと楽しもう!もっと楽しもう!
ぬこ@横浜ぬこ@横浜 (@nuko_yokohama)(@nuko_yokohama)
2
自己紹介
「 PostgreSQL ラーメン」
去年の 9 月に
こんな本だしました。
生油ラーメン@とらや
3
目次
Part.1 PostgreSQL 拡張開発概要
Part.2 独自データ型開発例
Part3. AWS RDS と拡張機能
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
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)
四則演算
並び替え=比較演算
集約演算
(再掲)
59
ユーザ定義型の構築順序 (1)
型定義
入出力定義
算術演算の定義
比較演算の定義
集約の定義
インデックス
パラレルスキャン対応
60
ユーザ定義型の構築順序 (2)
CREATE
FUNCTION
C 言語関数
CREATE TYPE 型の雛形
入出力関数
CREATE TYPE
ユーザ
定義型
C 言語関数
CREATE
FUNCTION
CREATE
FUNCTION
入出力関数
演算関数
比較関数
CREATE
OPERATOR
演算子
To be continued...
61
ユーザ定義型の構築順序 (3)
ユーザ
定義型
C 言語関数
CREATE
FUNCTION
演算関数
CREATE
AGGREGATE
集約関数
C 言語関数
CREATE
FUNCTION
比較関数
CREATE
OPERATOR
CLASS
インデックス
アクセス定義
62
型定義
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
);
型定義の流れ
①ダミーの型を定義
②入出力関数を定義
③入出力関数を設定し
て、型を再定義
63
入出力定義
型の「外部表現」と「内部表現」
入出力関数で外部表現と内部表現を変換
TEXT 型 int 型 int 型 doible 型
入力関数
出力関数
外部表現 内部表現
‘3/5’ 3 5 0.6
fraction_in
fraction_out
外部表現 内部表現
64
入出力定義(入力定義)
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 言語ヘッダ
65
入出力定義(出力定義)
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
);
66
算術演算の定義( + 演算子)
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 言語関数
67
比較演算の定義( = 演算子の例)
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
68
集約の定義( 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
69
インデックスを有効にする定義
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
70
ビルド環境 (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/ 期待結果ファイル。リグレッションテストの比較用
71
ビルド / インストール
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
72
ビルド / インストール
ビルド手順の例
$ 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/'
$
73
拡張機能のパッケージ化と登録
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)
74
Part.3
AWS RDS と
拡張機能
75
AWS RDS PostgreSQL には
組み込み済みの拡張機能がある
( ユーザーズガイドか、 psql で
rds.extensions を確認)
postgres_fdw, PostGIS,
pg_hint_plan も
サポートしている!
76
しかし、他の拡張機能や
自作の拡張機能を RDS へ
組み込むことはできない。
どうする?
77
対応策 1
SQL/plpgsql スクリプトを
自分で実行する。
SQL や plpgsql だけで実装し
た関数は、 psql 等から実行し
て組み込みは可能
78
対応策 2
EC2 と組み合わせる
AWS RDS
PostgreSQL
外部テーブル
AWS EC2
PostgreSQL
テーブル
全文検索モジュール
(pg_bigm)
クライアント
たとえば、現在 RDS がサポートしていない
日本語全文検索モジュールを組み込んだ
EC2 インスタンス+ postgres_fdw を使い
79
対応策 3
AWS さんに追加をお願いする
E メールで拡張機能名や用途を記載
rds-postgres-extensions-request@amazon.com
80
おわりに
81
PostgreSQL は
いろんな拡張機能が
気軽に開発できるので
楽しいよ!
という話でした
82
おしまい

Contenu connexe

Tendances

Lt ingaoho-jsonb+postgeres fdw
Lt ingaoho-jsonb+postgeres fdwLt ingaoho-jsonb+postgeres fdw
Lt ingaoho-jsonb+postgeres fdwToshi Harada
 
PostgreSQLとPythonとSQL
PostgreSQLとPythonとSQLPostgreSQLとPythonとSQL
PostgreSQLとPythonとSQLSatoshi Yamada
 
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~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
 
Hackers Champloo 2016 postgresql-9.6
Hackers Champloo 2016 postgresql-9.6Hackers Champloo 2016 postgresql-9.6
Hackers Champloo 2016 postgresql-9.6Toshi Harada
 
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
 
OSC沖縄2014_JPUG資料
OSC沖縄2014_JPUG資料OSC沖縄2014_JPUG資料
OSC沖縄2014_JPUG資料kasaharatt
 
Kof2016 postgresql-9.6
Kof2016 postgresql-9.6Kof2016 postgresql-9.6
Kof2016 postgresql-9.6Toshi Harada
 
PostgreSQL SQLチューニング入門 実践編(pgcon14j)
PostgreSQL SQLチューニング入門 実践編(pgcon14j)PostgreSQL SQLチューニング入門 実践編(pgcon14j)
PostgreSQL SQLチューニング入門 実践編(pgcon14j)Satoshi Yamada
 
Groovyで楽にSQLを実行してみよう
Groovyで楽にSQLを実行してみようGroovyで楽にSQLを実行してみよう
Groovyで楽にSQLを実行してみようAkira Shimosako
 
Linux Performance Analysis in 15 minutes
Linux Performance Analysis in 15 minutesLinux Performance Analysis in 15 minutes
Linux Performance Analysis in 15 minutesYohei Azekatsu
 
[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.
 
PostgreSQL運用管理入門
PostgreSQL運用管理入門PostgreSQL運用管理入門
PostgreSQL運用管理入門Yoshiyuki Asaba
 
Chugokudb study-20150131
Chugokudb study-20150131Chugokudb study-20150131
Chugokudb study-20150131Toshi Harada
 
Handlerさんコンニチワ
HandlerさんコンニチワHandlerさんコンニチワ
Handlerさんコンニチワyoku0825
 
Migr8.rb チュートリアル
Migr8.rb チュートリアルMigr8.rb チュートリアル
Migr8.rb チュートリアルkwatch
 
MySQLを割と一人で300台管理する技術
MySQLを割と一人で300台管理する技術MySQLを割と一人で300台管理する技術
MySQLを割と一人で300台管理する技術yoku0825
 
Maatkit で MySQL チューニング
Maatkit で MySQL チューニングMaatkit で MySQL チューニング
Maatkit で MySQL チューニングKensuke Nagae
 

Tendances (20)

Lt ingaoho-jsonb+postgeres fdw
Lt ingaoho-jsonb+postgeres fdwLt ingaoho-jsonb+postgeres fdw
Lt ingaoho-jsonb+postgeres fdw
 
PostgreSQLとPythonとSQL
PostgreSQLとPythonとSQLPostgreSQLとPythonとSQL
PostgreSQLとPythonとSQL
 
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
 
Postgre sql9.3 newlockmode_and_etc
Postgre sql9.3 newlockmode_and_etcPostgre sql9.3 newlockmode_and_etc
Postgre sql9.3 newlockmode_and_etc
 
Hackers Champloo 2016 postgresql-9.6
Hackers Champloo 2016 postgresql-9.6Hackers Champloo 2016 postgresql-9.6
Hackers Champloo 2016 postgresql-9.6
 
OSC2015nagoya
OSC2015nagoyaOSC2015nagoya
OSC2015nagoya
 
PythonでテキストをJSONにした話(PyCon mini sapporo 2015)
PythonでテキストをJSONにした話(PyCon mini sapporo 2015)PythonでテキストをJSONにした話(PyCon mini sapporo 2015)
PythonでテキストをJSONにした話(PyCon mini sapporo 2015)
 
OSC沖縄2014_JPUG資料
OSC沖縄2014_JPUG資料OSC沖縄2014_JPUG資料
OSC沖縄2014_JPUG資料
 
Kof2016 postgresql-9.6
Kof2016 postgresql-9.6Kof2016 postgresql-9.6
Kof2016 postgresql-9.6
 
PostgreSQL SQLチューニング入門 実践編(pgcon14j)
PostgreSQL SQLチューニング入門 実践編(pgcon14j)PostgreSQL SQLチューニング入門 実践編(pgcon14j)
PostgreSQL SQLチューニング入門 実践編(pgcon14j)
 
Groovyで楽にSQLを実行してみよう
Groovyで楽にSQLを実行してみようGroovyで楽にSQLを実行してみよう
Groovyで楽にSQLを実行してみよう
 
dm-thin-internal-ja
dm-thin-internal-jadm-thin-internal-ja
dm-thin-internal-ja
 
Linux Performance Analysis in 15 minutes
Linux Performance Analysis in 15 minutesLinux Performance Analysis in 15 minutes
Linux Performance Analysis in 15 minutes
 
[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 株式会社インサイトテクノロジー 小幡 一郎
 
PostgreSQL運用管理入門
PostgreSQL運用管理入門PostgreSQL運用管理入門
PostgreSQL運用管理入門
 
Chugokudb study-20150131
Chugokudb study-20150131Chugokudb study-20150131
Chugokudb study-20150131
 
Handlerさんコンニチワ
HandlerさんコンニチワHandlerさんコンニチワ
Handlerさんコンニチワ
 
Migr8.rb チュートリアル
Migr8.rb チュートリアルMigr8.rb チュートリアル
Migr8.rb チュートリアル
 
MySQLを割と一人で300台管理する技術
MySQLを割と一人で300台管理する技術MySQLを割と一人で300台管理する技術
MySQLを割と一人で300台管理する技術
 
Maatkit で MySQL チューニング
Maatkit で MySQL チューニングMaatkit で MySQL チューニング
Maatkit で MySQL チューニング
 

Similaire à 20190119 aws-study-pg-extension

Jpug study-pq 20170121
Jpug study-pq 20170121Jpug study-pq 20170121
Jpug study-pq 20170121Kosuke Kida
 
外部データラッパによる PostgreSQL の拡張
外部データラッパによる PostgreSQL の拡張外部データラッパによる PostgreSQL の拡張
外部データラッパによる PostgreSQL の拡張Shigeru Hanada
 
20170127 JAWS HPC-UG#8
20170127 JAWS HPC-UG#820170127 JAWS HPC-UG#8
20170127 JAWS HPC-UG#8Kohei KaiGai
 
MySQLとPostgreSQLの基本的な実行プラン比較
MySQLとPostgreSQLの基本的な実行プラン比較MySQLとPostgreSQLの基本的な実行プラン比較
MySQLとPostgreSQLの基本的な実行プラン比較Shinya Sugiyama
 
PostgreSQLレプリケーション(pgcon17j_t4)
PostgreSQLレプリケーション(pgcon17j_t4)PostgreSQLレプリケーション(pgcon17j_t4)
PostgreSQLレプリケーション(pgcon17j_t4)Kosuke Kida
 
Oracle Cloud Developers Meetup@東京
Oracle Cloud Developers Meetup@東京Oracle Cloud Developers Meetup@東京
Oracle Cloud Developers Meetup@東京tuchimur
 
Linux 対応だけじゃない!! sql server 2017 こんな機能が追加されています。
Linux 対応だけじゃない!! sql server 2017 こんな機能が追加されています。Linux 対応だけじゃない!! sql server 2017 こんな機能が追加されています。
Linux 対応だけじゃない!! sql server 2017 こんな機能が追加されています。Masayuki Ozawa
 
位置情報を使ったサービス「スマポ」を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
 
PostgreSQL v9.5の新機能~CustomScan/Join Interface
PostgreSQL v9.5の新機能~CustomScan/Join InterfacePostgreSQL v9.5の新機能~CustomScan/Join Interface
PostgreSQL v9.5の新機能~CustomScan/Join InterfaceKohei KaiGai
 
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) -歩 柴田
 
PostgreSQL Unconference #26 No Error on PostgreSQL
PostgreSQL Unconference #26 No Error on PostgreSQLPostgreSQL Unconference #26 No Error on PostgreSQL
PostgreSQL Unconference #26 No Error on PostgreSQLNoriyoshi Shinoda
 
Chugoku db 20th-postgresql-10-pub
Chugoku db 20th-postgresql-10-pubChugoku db 20th-postgresql-10-pub
Chugoku db 20th-postgresql-10-pubToshi Harada
 
KOF2015 PostgreSQL 9.5
KOF2015 PostgreSQL 9.5KOF2015 PostgreSQL 9.5
KOF2015 PostgreSQL 9.5Toshi Harada
 
DBスキーマもバージョン管理したい!
DBスキーマもバージョン管理したい!DBスキーマもバージョン管理したい!
DBスキーマもバージョン管理したい!kwatch
 
20160929_InnoDBの全文検索を使ってみた by 株式会社インサイトテクノロジー 中村範夫
20160929_InnoDBの全文検索を使ってみた by 株式会社インサイトテクノロジー 中村範夫20160929_InnoDBの全文検索を使ってみた by 株式会社インサイトテクノロジー 中村範夫
20160929_InnoDBの全文検索を使ってみた by 株式会社インサイトテクノロジー 中村範夫Insight Technology, Inc.
 
20211112_jpugcon_gpu_and_arrow
20211112_jpugcon_gpu_and_arrow20211112_jpugcon_gpu_and_arrow
20211112_jpugcon_gpu_and_arrowKohei KaiGai
 
A Tour of PostgreSQL
A Tour of PostgreSQLA Tour of PostgreSQL
A Tour of PostgreSQLEDB
 
T sql の parse と generator
T sql の parse と generatorT sql の parse と generator
T sql の parse と generatorOda Shinsuke
 

Similaire à 20190119 aws-study-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
 
20170127 JAWS HPC-UG#8
20170127 JAWS HPC-UG#820170127 JAWS HPC-UG#8
20170127 JAWS HPC-UG#8
 
MySQLとPostgreSQLの基本的な実行プラン比較
MySQLとPostgreSQLの基本的な実行プラン比較MySQLとPostgreSQLの基本的な実行プラン比較
MySQLとPostgreSQLの基本的な実行プラン比較
 
PostgreSQLレプリケーション(pgcon17j_t4)
PostgreSQLレプリケーション(pgcon17j_t4)PostgreSQLレプリケーション(pgcon17j_t4)
PostgreSQLレプリケーション(pgcon17j_t4)
 
Oracle Cloud Developers Meetup@東京
Oracle Cloud Developers Meetup@東京Oracle Cloud Developers Meetup@東京
Oracle Cloud Developers Meetup@東京
 
Linux 対応だけじゃない!! sql server 2017 こんな機能が追加されています。
Linux 対応だけじゃない!! sql server 2017 こんな機能が追加されています。Linux 対応だけじゃない!! sql server 2017 こんな機能が追加されています。
Linux 対応だけじゃない!! sql server 2017 こんな機能が追加されています。
 
位置情報を使ったサービス「スマポ」をPostgreSQLで作ってみた db tech showcase 2013 Tokyo
位置情報を使ったサービス「スマポ」をPostgreSQLで作ってみた db tech showcase 2013 Tokyo位置情報を使ったサービス「スマポ」をPostgreSQLで作ってみた db tech showcase 2013 Tokyo
位置情報を使ったサービス「スマポ」をPostgreSQLで作ってみた db tech showcase 2013 Tokyo
 
PostgreSQL v9.5の新機能~CustomScan/Join Interface
PostgreSQL v9.5の新機能~CustomScan/Join InterfacePostgreSQL v9.5の新機能~CustomScan/Join Interface
PostgreSQL v9.5の新機能~CustomScan/Join Interface
 
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) -
 
PostgreSQL Unconference #26 No Error on PostgreSQL
PostgreSQL Unconference #26 No Error on PostgreSQLPostgreSQL Unconference #26 No Error on PostgreSQL
PostgreSQL Unconference #26 No Error on PostgreSQL
 
Chugoku db 20th-postgresql-10-pub
Chugoku db 20th-postgresql-10-pubChugoku db 20th-postgresql-10-pub
Chugoku db 20th-postgresql-10-pub
 
KOF2015 PostgreSQL 9.5
KOF2015 PostgreSQL 9.5KOF2015 PostgreSQL 9.5
KOF2015 PostgreSQL 9.5
 
DBスキーマもバージョン管理したい!
DBスキーマもバージョン管理したい!DBスキーマもバージョン管理したい!
DBスキーマもバージョン管理したい!
 
20160929_InnoDBの全文検索を使ってみた by 株式会社インサイトテクノロジー 中村範夫
20160929_InnoDBの全文検索を使ってみた by 株式会社インサイトテクノロジー 中村範夫20160929_InnoDBの全文検索を使ってみた by 株式会社インサイトテクノロジー 中村範夫
20160929_InnoDBの全文検索を使ってみた by 株式会社インサイトテクノロジー 中村範夫
 
20211112_jpugcon_gpu_and_arrow
20211112_jpugcon_gpu_and_arrow20211112_jpugcon_gpu_and_arrow
20211112_jpugcon_gpu_and_arrow
 
A Tour of PostgreSQL
A Tour of PostgreSQLA Tour of PostgreSQL
A Tour of PostgreSQL
 
T sql の parse と generator
T sql の parse と generatorT sql の parse と generator
T sql の parse と generator
 
pg_bigmを用いた全文検索のしくみ(前編)
pg_bigmを用いた全文検索のしくみ(前編)pg_bigmを用いた全文検索のしくみ(前編)
pg_bigmを用いた全文検索のしくみ(前編)
 

Plus de 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
 
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
 
MyNA JPUG study 20160220-postgresql-json-datatype
MyNA JPUG study 20160220-postgresql-json-datatypeMyNA JPUG study 20160220-postgresql-json-datatype
MyNA JPUG study 20160220-postgresql-json-datatypeToshi Harada
 

Plus de 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
 
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
 
MyNA JPUG study 20160220-postgresql-json-datatype
MyNA JPUG study 20160220-postgresql-json-datatypeMyNA JPUG study 20160220-postgresql-json-datatype
MyNA JPUG study 20160220-postgresql-json-datatype
 

Dernier

SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
論文紹介: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
 
論文紹介: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
 
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
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
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
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
論文紹介: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
 
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
 

Dernier (10)

SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
論文紹介: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
 
論文紹介: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...
 
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」の紹介
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
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
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
論文紹介: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
 
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
 

20190119 aws-study-pg-extension