SlideShare a Scribd company logo
Copyright © 2015 NTT DATA Corporation
2015年6月26日
株式会社 NTTデータ
JSONBはPostgreSQL9.5でいかに改善されたのか?
今後の展望は?
MyNA・JPUG合同DB勉強会 in 東京
2Copyright © 2015 NTT DATA Corporation
PostgreSQL エバンジェリスト@ NTT データ
社内 PostgreSQL 営業・技術支援
GresCube 開発・サポート
PostgreSQL コミッタ
全世界で20名、日本人で3人目
PostgreSQL のコア機能を開発
レプリケーション(非同期 / 同期 / カスケード)
トランザクションログ圧縮
pg_bigm(全文検索モジュール)
藤井 雅雄 @fujii_masao
3Copyright © 2015 NTT DATA Corporation
PostgreSQL 開発者@ NTT データ
社内 PostgreSQL 営業・技術支援
GresCube 開発・サポート
PostgreSQL のコア機能を開発
レプリケーション運用性向上
REINDEX SCHEMA / VERBOSE
pgbench(ベンチマークツール)の改善
pg_bigm(全文検索モジュール)
コア機能へのパッチレビューア
澤田 雅彦 @sawada_masahiko
4Copyright © 2015 NTT DATA Corporation
本日は
Event Title
Tutorial NoSQL on ACID
Talk
Update and Delete operations for jsonb
Rethinking JSONB
Unconference Direction of json and jsonb
PGConで話題となったJSONB型の新機能や今後の展望についてご紹介
5Copyright © 2015 NTT DATA Corporation
INDEX
PostgreSQLがサポートするNoSQL機能の振り返り
次期メジャーバージョン9.5でのJSONB型の新機能
JSONB型の今後の開発展望について
Copyright © 2015 NTT DATA Corporation 6
PostgreSQLがサポートするNoSQL機能の振り返り
7Copyright © 2015 NTT DATA Corporation
PostgreSQLでできるNoSQLっぽいこと
XML (8.2~)
hstore (8.2~)
JSON (9.2~)
JSONB (9.4~)
FDWで連携 (8.4~)
<foo bar=‘abc’>hoge</foo>
“foo” => “bar”
{“abc” : “foo”}
mongo_fdw,
redis_fdw
PostgreSQLでは様々な方法で半構造化データを取り扱い可能
8Copyright © 2015 NTT DATA Corporation
PostgreSQLにおけるJSON
JSONデータ
{
"id":1,
"name":"鈴木",
"address":"東京",
"birth_day":"1970-01-01“
}
CREATE TABLE tbl (
data JSON);
key value
PostgreSQLではJSONデータを専用データ型に格納可能
9Copyright © 2015 NTT DATA Corporation
PostgreSQLにおけるJSON
CREATE TABLE hoge (data JSON);
INSERT INTO hoge VALUES ('
{"name" : "PostgreSQL",
"type" : "DBMS",
"developer" :
[{"name" : "Sawada", "age" : "25"},
{"name" : "Fujii", "age" : "55"}]}
');
SELECT data->'type',
((data->'developer')->1)->'name' FROM hoge;
?column? | ?column?
----------+----------
"DBMS" | "Fujii"
(1 row)
1Copyright © 2015 NTT DATA Corporation
PostgreSQLにおけるJSONの歴史
v9.2 (2012年) v9.3 (2013年) v9.4 (2014年) v9.5
TEXT型 + 構文チェッカ
利用可能な関数と演算子
はわずか
演算子4個追加
要素抽出の演算子(->)
関数10個追加
JSONから行への変換
バイナリ形式 + 構文チェッカ
GINインデックス対応
JSON型
サポート
JSONB型
サポート !?
関数と演算子の
充実化
1Copyright © 2015 NTT DATA Corporation
JSON型とJSONB型の比較
JSON型 JSONB型
利用可能
バージョン
9.2以降 9.4以降
格納方式
テキスト形式
データをそのままの形で格納
バイナリ形式
不要な空白の削除、重複キーの除去、
バイナリ変換を行った上で格納
インデックス
Btree式インデックス Btree式インデックス
GIN
利用可能な
演算子
要素抽出の演算子のみ 要素抽出に加えて、比較・包含の演算子
検索性能
低速
検索時にテキストのパースが必要
GIN未対応
高速
パース不要
GIN対応済
更新性能
高速
格納時のオーバーヘッドが小さい
低速
格納時のオーバーヘッドが大きい
1Copyright © 2015 NTT DATA Corporation
JSONBのGINインデックス
作成可能なGINインデックスは2種類
デフォルト
CREATE INDEX idx ON hoge USING gin (data);
jsonb_path_ops
CREATE INDEX idx ON hoge USING gin (data jsonb_path_ops);
@> only
Faster
Smaller index
演算子 説明 例
@> 「左辺のJSON」は「右辺のJSON」を包含するか? {"a" : 1, "b" : 2} @> {"b" : 2}
? 右辺のキーが左辺のJSONに存在するか? {"a" : 1, "b" : 2} ? 'b'
?& 右辺のキーのすべてが左辺のJSONに存在するか? {"a" : 1, "b" : 2} ?& ARRAY['b', 'c']
?| 右辺のキーのいずれかが左辺のJSONに存在するか? {"a" : 1, "b" : 2} ?| ARRAY['b', 'c']
1Copyright © 2015 NTT DATA Corporation
JSONB + GIN による強力なインデックス検索
CREATE TABLE employee (data JSONB);
CREATE INDEX employee_idx ON employee USING gin (data jsonb_path_ops);
INSERT INTO employee VALUES
('{"name" : "斉藤", "age" : 27, "role" : "開発"}'),
('{"name" : "田中", "age" : 45, "role" : "営業"}'),
('{"name" : "佐藤", "age" : 33, "role" : "開発"}'),
('{"name" : "山田", "age" : 53, "role" : "経営"}');
SELECT * FROM employee WHERE data @> '{"role" : "開発"}';
QUERY PLAN
----------------------------------------------------------------------------
Bitmap Heap Scan on employee
Recheck Cond: (data @> '{"role": "開発"}'::jsonb)
-> Bitmap Index Scan on employee_idx
Index Cond: (data @> '{"role": "開発"}'::jsonb)
1Copyright © 2015 NTT DATA Corporation
JSONB + GIN による強力なインデックス検索
CREATE TABLE employee (data JSONB);
CREATE INDEX employee_idx ON employee USING gin (data jsonb_path_ops);
INSERT INTO employee VALUES
('{"name" : "斉藤", "age" : 27, "role" : "開発"}'),
('{"name" : "田中", "age" : 45, "role" : "営業"}'),
('{"name" : "佐藤", "age" : 33, "role" : "開発"}'),
('{"name" : "山田", "age" : 53, "role" : "経営"}');
SELECT * FROM employee WHERE data @> '{"name" : "山田"}';
SELECT * FROM employee WHERE data @> '{"age" : 33}';
SELECT * FROM employee WHERE data @> '{"role" : "開発"}';
INSERT INTO employee VALUES
('{"name" : "安田", "age" : 41, "role" : "総務", "office" : "東京"}');
SELECT * FROM employee WHERE data @> '{"office" : "東京"}';
すべてのKeyに対して
インデックス検索可能
新規追加のKeyに
対しても
インデックス検索可能
1Copyright © 2015 NTT DATA Corporation
振り返りのまとめ
v9.2 (2012年) v9.3 (2013年) v9.4 (2014年) v9.5
TEXT型 + 構文チェッカ
利用可能な関数と演算子
はわずか
演算子4個追加
要素抽出の演算子(->)
関数10個追加
JSONから行への変換
バイナリ形式 + 構文チェッカ
GINインデックス対応
JSON型
サポート
JSONB型
サポート !?
関数と演算子の
充実化
Copyright © 2015 NTT DATA Corporation 1
次期メジャーバージョン9.5でのJSONB型の新機能
1Copyright © 2015 NTT DATA Corporation
充実してきたPostgreSQLのJSON(B)型ですが。。
• キーによる値の取り出し (->)
• パスによる値の取り出し (#>)
• 任意のパスのオブジェクトを 追加 (?)
• 〃 を 更新 (?)
• 〃 を 削除 (?)
1Copyright © 2015 NTT DATA Corporation
9.5ではJSONBデータを操作する関数が追加
新規に追加された関数一覧
jsonb_concat() 追加
jsonb_delete() 削除
jsonb_set() 更新
jsonb_pretty() JSONB型を見やすく整形
NEW!
NEW!
NEW!
NEW!
1Copyright © 2015 NTT DATA Corporation
jsonb_concat関数
SELECT jsonb_concat(
'{"a": 1, "b": "hoge"}'::jsonb,
'{"a": 999, "c": [1,2]}'::jsonb
);
jsonb_concat
--------------------------------------
{"a": 999, "b": "hoge", "c": [1, 2]}
(1 row)
2Copyright © 2015 NTT DATA Corporation
jsonb_delete関数
SELECT jsonb_delete(
'{"a": 1, "b": {"c": 999}, "d": [2,3]}'::jsonb,
'a‘
);
jsonb_delete
--------------------------------
{"b": {"c": 999}, "d": [2, 3]}
(1 row)
SELECT jsonb_delete(
'{"a": 1, "b": {"c": 999}, "d": [2,3]}'::jsonb,
'{d, -1}‘
);
jsonb_delete
-------------------------------------
{"a": 1, "b": {"c": 999}, "d": [2]}
(1 row)
2Copyright © 2015 NTT DATA Corporation
jsonb_set関数 (置き換え)
SELECT jsonb_set(
' {"n" : null, "a": {"b": 100}}'::jsonb,
'n',
‘999‘
);
jsonb_set
---------------------------------
{"a": {"b": 100}, "n": 999}
(1 row)
2Copyright © 2015 NTT DATA Corporation
jsonb_set関数 (ネストしたパス指定)
SELECT jsonb_set(
'{"a":{"b": 2}}'::jsonb,
'{a, b}',
'[1,2]‘
);
jsonb_set
----------------------
{"a": {"b": [1, 2]}}
(1 row)
2Copyright © 2015 NTT DATA Corporation
jsonb_set関数 (添字に負の数)
SELECT jsonb_set(
'{"a": {"b": [2,3]}}'::jsonb,
'{a, b, -1}',
'999‘
);
jsonb_set
------------------------
{"a": {"b": [2, 999]}}
(1 row)
2Copyright © 2015 NTT DATA Corporation
jsonb_set関数 (なかったら追加)
SELECT jsonb_set(
' {"n" : null, "a": {"b": 999}}'::jsonb,
'c',
‘999‘,
true
);
jsonb_set
-----------------------------------------
{"a": {"b": 2}, “c": 999, "n": null}
(1 row)
2Copyright © 2015 NTT DATA Corporation
jsonb_pretty関数
SELECT jsonb_pretty('{"a":"hoge", "b":[1,2,3], "c":{"d": 999}}'::jsonb);
jsonb_pretty
------------------
{ +
"a": "hoge", +
"b": [ +
1, +
2, +
3 +
], +
"c": { +
"d": 999 +
} +
}
(1 row)
2Copyright © 2015 NTT DATA Corporation
演算子
JSONB型の演算子一覧
->、 ->> キー指定で要素取得
#>、 #>> パス指定で要素取得
@>、 <@ 包含(JSONBのみ)
?、 ?|、 ?& 存在(JSONBのみ)
-、-# 削除(JSONBのみ)
|| 追加(JSONBのみ)
NEW!
NEW!
JSONBデータを操作する演算子が追加
2Copyright © 2015 NTT DATA Corporation
削除
SELECT '{ "a" : 1, "b" : { "c" : 2 }}'::jsonb - 'b';
delta
-------------
{"a": 1}
SELECT '{ "a" : 1, "b" : { "c" : 2 }}'::jsonb - 'c';
delta
-------------------------
{"a": 1, "b": {"c": 2}}
SELECT '{"a":1, "b":{"c":2}}'::jsonb #- '{b,c}';
delta
---------------------
{"a": 1, "b": {}}
(1 row)
2Copyright © 2015 NTT DATA Corporation
追加
SELECT '{ "a" : 1, "b" : 2}'::jsonb || '{ "c" : 3 }';
concat
--------------------------
{"a": 1, "b": 2, "c": 3}
SELECT '{ "a" : 1, "b" : 2}'::jsonb || '{ "a" : 3 }';
concat
------------------
{"a": 3, "b": 2}
2Copyright © 2015 NTT DATA Corporation
9.5新機能まとめ
関数
演算子
-、-# 削除
|| 追加
jsonb_concat() 追加
jsonb_delete() 削除
jsonb_set() 更新
jsonb_pretty() JSONB型を見やすく整形
NEW!
NEW!
NEW!
NEW!
NEW!
NEW!
Copyright © 2015 NTT DATA Corporation 3
JSONB型の今後の開発展望について
3Copyright © 2015 NTT DATA Corporation
今後のはなし
JSONB型の関数の拡充
次期バージョンにむけてJSONB型の関数の拡充が進行中。
さらなる利便性の向上に期待!
- Update and Delete operations for jsonb -
by Andrew Dunstan at PGCon 2015
3Copyright © 2015 NTT DATA Corporation
今後のはなし
検索機能の向上
JSONB型を使ったクエリは書きにくい?
次期バージョンに向けて改善が進められています!
- Rethinking JSONB -
by Alexander Korotkov, Konstantin Knizhnik, Oleg Bartunov
at PGCon 2015
3Copyright © 2015 NTT DATA Corporation
検索機能の向上
例えば、配列がネストされた複雑なデータの場合。
SELECT jsonb_pretty(
‘{"department": [{"staff": [{"name": “hoge", "title": “chief”}]}]}’
);
jsonb_pretty
-------------------------------------
{ +
"department": [ +
{ +
“staff”: [ +
{ +
"name": “hoge", +
"title": “chief" +
} +
] +
} +
] +
}
3Copyright © 2015 NTT DATA Corporation
検索機能の向上
「name」がhoge、「title」がmanagerまたはchiefのデータを探そうとすると。。
SELECT
*
FROM
company
WHERE
jb->’department’->0->’staff’->0->’name’ = ‘hoge’ AND
(
jb->’department’->0->’staff’->0->’title’ = ‘manager’ OR
jb->’department’->0->’staff’->0->’title’ = ‘chief’
)
SELECT
*
FROM
company
WHERE
(
jb->’department’->0->’staff’->0->’name’ = ‘hoge’ AND
jb->’department’->0->’staff’->0->’title’ = ‘manager’
) OR
(
jb->’department’->0->’staff’->0->’name’ = ‘hoge’ AND
jb->’department’->0->’staff’->0->’title’ = ‘chief’
)
jsonb_pretty
-------------------------------------------
{ +
"department": [ +
{ +
“staff”: [ +
{ +
"name": “hoge", +
"title": “chief" +
} +
] +
} +
] +
}
3Copyright © 2015 NTT DATA Corporation
検索機能の向上
「name」がhoge、「title」がmanagerまたはchiefのデータを探そうとすると。。
SELECT
*
FROM
company as c
WHERE
EXISTS
(
SELECT
1
FROM
(
SELECT
jsonb_array_elements(t1.col1->’staff’) as col2
FROM
(
SELECT
jsonb_array_elements(jb->’department’) as col1
FROM
company
) as t1
) as t2
WHERE
t2.col2 ->> ‘name’ = ‘hoge’ AND
t2.col2 ->> ‘title’ IN (‘manager’, ‘chief’)
);
jsonb_pretty
-------------------------------------------
{ +
"department": [ +
{ +
“staff”: [ +
{ +
"name": “hoge", +
"title": “chief" +
} +
] +
} +
] +
}
3Copyright © 2015 NTT DATA Corporation
検索機能の向上
New Syntax :
{ ANY | EACH } { ELEMENT | KEY | VALUE | VALUE ANYWHERE } OF
container AS alias SATISFIES (expression)
SELECT
*
FROM
company
WHERE
ANY ELEMENT OF jb->’department’ AS d SATISFIES
(
ANY ELEMENT OF d->’staff’ AS s SATISFIES
(
s ->> ’name’ = ‘hoge’ AND
s ->> ‘title’ IN (‘manager’, ‘chief’)
)
);
3Copyright © 2015 NTT DATA Corporation
今後のはなし
JSONB型の圧縮
JSONB型はサイズが大きくなりがち。
データサイズについての改善も進められています!
- Rethinking JSONB -
by Alexander Korotkov, Konstantin Knizhnik, Oleg Bartunov
at PGCon 2015
3Copyright © 2015 NTT DATA Corporation
まとめ
 9.5でJSONB型データの操作がより便利に!
 9.6以降もさらなる進化に期待!
Copyright © 2011 NTT DATA Corporation
Copyright © 2015 NTT DATA Corporation

More Related Content

What's hot

PostgreSQL13でのレプリケーション関連の改善について(第14回PostgreSQLアンカンファレンス@オンライン)
PostgreSQL13でのレプリケーション関連の改善について(第14回PostgreSQLアンカンファレンス@オンライン)PostgreSQL13でのレプリケーション関連の改善について(第14回PostgreSQLアンカンファレンス@オンライン)
PostgreSQL13でのレプリケーション関連の改善について(第14回PostgreSQLアンカンファレンス@オンライン)
NTT DATA Technology & Innovation
 
監査要件を有するシステムに対する PostgreSQL 導入の課題と可能性
監査要件を有するシステムに対する PostgreSQL 導入の課題と可能性監査要件を有するシステムに対する PostgreSQL 導入の課題と可能性
監査要件を有するシステムに対する PostgreSQL 導入の課題と可能性
Ohyama Masanori
 
PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
pg_bigmを用いた全文検索のしくみ(後編)
pg_bigmを用いた全文検索のしくみ(後編)pg_bigmを用いた全文検索のしくみ(後編)
pg_bigmを用いた全文検索のしくみ(後編)
NTT DATA OSS Professional Services
 
PostgreSQL - C言語によるユーザ定義関数の作り方
PostgreSQL - C言語によるユーザ定義関数の作り方PostgreSQL - C言語によるユーザ定義関数の作り方
PostgreSQL - C言語によるユーザ定義関数の作り方Satoshi Nagayasu
 
PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)
PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)
PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQLコミュニティに飛び込もう
PostgreSQLコミュニティに飛び込もうPostgreSQLコミュニティに飛び込もう
PostgreSQLコミュニティに飛び込もう
NTT DATA OSS Professional Services
 
楽天における大規模データベースの運用
楽天における大規模データベースの運用楽天における大規模データベースの運用
楽天における大規模データベースの運用
Rakuten Group, Inc.
 
[B23] PostgreSQLのインデックス・チューニング by Tomonari Katsumata
[B23] PostgreSQLのインデックス・チューニング by Tomonari Katsumata[B23] PostgreSQLのインデックス・チューニング by Tomonari Katsumata
[B23] PostgreSQLのインデックス・チューニング by Tomonari KatsumataInsight Technology, Inc.
 
統計情報のリセットによるautovacuumへの影響について(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)
統計情報のリセットによるautovacuumへの影響について(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)統計情報のリセットによるautovacuumへの影響について(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)
統計情報のリセットによるautovacuumへの影響について(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...
オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...
オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...
NTT DATA Technology & Innovation
 
PostgreSQLアーキテクチャ入門(PostgreSQL Conference 2012)
PostgreSQLアーキテクチャ入門(PostgreSQL Conference 2012)PostgreSQLアーキテクチャ入門(PostgreSQL Conference 2012)
PostgreSQLアーキテクチャ入門(PostgreSQL Conference 2012)
Uptime Technologies LLC (JP)
 
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
NTT DATA Technology & Innovation
 
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
mosa siru
 
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
NTT DATA Technology & Innovation
 
PostgreSQL開発コミュニティに参加しよう! ~2022年版~(Open Source Conference 2022 Online/Kyoto 発...
PostgreSQL開発コミュニティに参加しよう! ~2022年版~(Open Source Conference 2022 Online/Kyoto 発...PostgreSQL開発コミュニティに参加しよう! ~2022年版~(Open Source Conference 2022 Online/Kyoto 発...
PostgreSQL開発コミュニティに参加しよう! ~2022年版~(Open Source Conference 2022 Online/Kyoto 発...
NTT DATA Technology & Innovation
 
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
NTT DATA Technology & Innovation
 
祝!PostgreSQLレプリケーション10周年!徹底紹介!!
祝!PostgreSQLレプリケーション10周年!徹底紹介!!祝!PostgreSQLレプリケーション10周年!徹底紹介!!
祝!PostgreSQLレプリケーション10周年!徹底紹介!!
NTT DATA Technology & Innovation
 
PostgreSQL 13でのpg_stat_statementsの改善について(第12回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL 13でのpg_stat_statementsの改善について(第12回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQL 13でのpg_stat_statementsの改善について(第12回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL 13でのpg_stat_statementsの改善について(第12回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)
VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)
VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 

What's hot (20)

PostgreSQL13でのレプリケーション関連の改善について(第14回PostgreSQLアンカンファレンス@オンライン)
PostgreSQL13でのレプリケーション関連の改善について(第14回PostgreSQLアンカンファレンス@オンライン)PostgreSQL13でのレプリケーション関連の改善について(第14回PostgreSQLアンカンファレンス@オンライン)
PostgreSQL13でのレプリケーション関連の改善について(第14回PostgreSQLアンカンファレンス@オンライン)
 
監査要件を有するシステムに対する PostgreSQL 導入の課題と可能性
監査要件を有するシステムに対する PostgreSQL 導入の課題と可能性監査要件を有するシステムに対する PostgreSQL 導入の課題と可能性
監査要件を有するシステムに対する PostgreSQL 導入の課題と可能性
 
PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
pg_bigmを用いた全文検索のしくみ(後編)
pg_bigmを用いた全文検索のしくみ(後編)pg_bigmを用いた全文検索のしくみ(後編)
pg_bigmを用いた全文検索のしくみ(後編)
 
PostgreSQL - C言語によるユーザ定義関数の作り方
PostgreSQL - C言語によるユーザ定義関数の作り方PostgreSQL - C言語によるユーザ定義関数の作り方
PostgreSQL - C言語によるユーザ定義関数の作り方
 
PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)
PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)
PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)
 
PostgreSQLコミュニティに飛び込もう
PostgreSQLコミュニティに飛び込もうPostgreSQLコミュニティに飛び込もう
PostgreSQLコミュニティに飛び込もう
 
楽天における大規模データベースの運用
楽天における大規模データベースの運用楽天における大規模データベースの運用
楽天における大規模データベースの運用
 
[B23] PostgreSQLのインデックス・チューニング by Tomonari Katsumata
[B23] PostgreSQLのインデックス・チューニング by Tomonari Katsumata[B23] PostgreSQLのインデックス・チューニング by Tomonari Katsumata
[B23] PostgreSQLのインデックス・チューニング by Tomonari Katsumata
 
統計情報のリセットによるautovacuumへの影響について(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)
統計情報のリセットによるautovacuumへの影響について(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)統計情報のリセットによるautovacuumへの影響について(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)
統計情報のリセットによるautovacuumへの影響について(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...
オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...
オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...
 
PostgreSQLアーキテクチャ入門(PostgreSQL Conference 2012)
PostgreSQLアーキテクチャ入門(PostgreSQL Conference 2012)PostgreSQLアーキテクチャ入門(PostgreSQL Conference 2012)
PostgreSQLアーキテクチャ入門(PostgreSQL Conference 2012)
 
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
 
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
 
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
 
PostgreSQL開発コミュニティに参加しよう! ~2022年版~(Open Source Conference 2022 Online/Kyoto 発...
PostgreSQL開発コミュニティに参加しよう! ~2022年版~(Open Source Conference 2022 Online/Kyoto 発...PostgreSQL開発コミュニティに参加しよう! ~2022年版~(Open Source Conference 2022 Online/Kyoto 発...
PostgreSQL開発コミュニティに参加しよう! ~2022年版~(Open Source Conference 2022 Online/Kyoto 発...
 
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
 
祝!PostgreSQLレプリケーション10周年!徹底紹介!!
祝!PostgreSQLレプリケーション10周年!徹底紹介!!祝!PostgreSQLレプリケーション10周年!徹底紹介!!
祝!PostgreSQLレプリケーション10周年!徹底紹介!!
 
PostgreSQL 13でのpg_stat_statementsの改善について(第12回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL 13でのpg_stat_statementsの改善について(第12回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQL 13でのpg_stat_statementsの改善について(第12回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL 13でのpg_stat_statementsの改善について(第12回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)
VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)
VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)
 

Similar to JSONBはPostgreSQL9.5でいかに改善されたのか

PostgreSQL 9.5 新機能紹介
PostgreSQL 9.5 新機能紹介PostgreSQL 9.5 新機能紹介
PostgreSQL 9.5 新機能紹介
NTT DATA OSS Professional Services
 
PostgreSQL 12の話
PostgreSQL 12の話PostgreSQL 12の話
PostgreSQL 12の話
Masahiko Sawada
 
Smart Tennis Lesson Serverless Design
Smart Tennis Lesson Serverless DesignSmart Tennis Lesson Serverless Design
Smart Tennis Lesson Serverless Design
Ryuji TAKEHARA
 
10大ニュースで振り返るPGCon2015
10大ニュースで振り返るPGCon201510大ニュースで振り返るPGCon2015
10大ニュースで振り返るPGCon2015
NTT DATA OSS Professional Services
 
pg_bigmを用いた全文検索のしくみ(前編)
pg_bigmを用いた全文検索のしくみ(前編)pg_bigmを用いた全文検索のしくみ(前編)
pg_bigmを用いた全文検索のしくみ(前編)
NTT DATA OSS Professional Services
 
KOF2015 PostgreSQL 9.5
KOF2015 PostgreSQL 9.5KOF2015 PostgreSQL 9.5
KOF2015 PostgreSQL 9.5
Toshi Harada
 
db tech showcase2016 - MySQLドキュメントストア
db tech showcase2016 - MySQLドキュメントストアdb tech showcase2016 - MySQLドキュメントストア
db tech showcase2016 - MySQLドキュメントストア
Shinya Sugiyama
 
PostgreSQL Unconference #5 ICU Collation
PostgreSQL Unconference #5 ICU CollationPostgreSQL Unconference #5 ICU Collation
PostgreSQL Unconference #5 ICU Collation
Noriyoshi Shinoda
 
20191211_Apache_Arrow_Meetup_Tokyo
20191211_Apache_Arrow_Meetup_Tokyo20191211_Apache_Arrow_Meetup_Tokyo
20191211_Apache_Arrow_Meetup_Tokyo
Kohei KaiGai
 
Postgre sql9.3新機能紹介
Postgre sql9.3新機能紹介Postgre sql9.3新機能紹介
Postgre sql9.3新機能紹介
Daichi Egawa
 
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
Kohei KaiGai
 
Power of SQL and NoSQL with MySQL5.7
Power of SQL and NoSQL with MySQL5.7Power of SQL and NoSQL with MySQL5.7
Power of SQL and NoSQL with MySQL5.7
Shinya Sugiyama
 
20190518 27th-chugoku db-lt-pg12
20190518 27th-chugoku db-lt-pg1220190518 27th-chugoku db-lt-pg12
20190518 27th-chugoku db-lt-pg12
Toshi Harada
 
[A33] [特濃jpoug statspack on pdb oracle database 12c] 20131115 補足・続報付き
[A33] [特濃jpoug statspack on pdb oracle database 12c] 20131115 補足・続報付き[A33] [特濃jpoug statspack on pdb oracle database 12c] 20131115 補足・続報付き
[A33] [特濃jpoug statspack on pdb oracle database 12c] 20131115 補足・続報付きInsight Technology, Inc.
 
PostgreSQL10徹底解説
PostgreSQL10徹底解説PostgreSQL10徹底解説
PostgreSQL10徹底解説
Masahiko Sawada
 
Apache Drill でオープンデータを分析してみる - db tech showcase Sapporo 2015 2015/09/11
Apache Drill でオープンデータを分析してみる - db tech showcase Sapporo 2015 2015/09/11Apache Drill でオープンデータを分析してみる - db tech showcase Sapporo 2015 2015/09/11
Apache Drill でオープンデータを分析してみる - db tech showcase Sapporo 2015 2015/09/11
MapR Technologies Japan
 
ビッグデータ処理データベースの全体像と使い分け
ビッグデータ処理データベースの全体像と使い分けビッグデータ処理データベースの全体像と使い分け
ビッグデータ処理データベースの全体像と使い分け
Recruit Technologies
 
20100930 sig startups
20100930 sig startups20100930 sig startups
20100930 sig startupsIchiro Fukuda
 
オープンソースのIoT向けスケールアウト型データベース GridDB 〜性能ベンチマーク結果とOSSを利用したビッグデータ分析環境〜
オープンソースのIoT向けスケールアウト型データベース GridDB 〜性能ベンチマーク結果とOSSを利用したビッグデータ分析環境〜オープンソースのIoT向けスケールアウト型データベース GridDB 〜性能ベンチマーク結果とOSSを利用したビッグデータ分析環境〜
オープンソースのIoT向けスケールアウト型データベース GridDB 〜性能ベンチマーク結果とOSSを利用したビッグデータ分析環境〜
griddb
 
show コマンド結果をパースする方法あれこれ #npstudy
show コマンド結果をパースする方法あれこれ #npstudyshow コマンド結果をパースする方法あれこれ #npstudy
show コマンド結果をパースする方法あれこれ #npstudy
akira6592
 

Similar to JSONBはPostgreSQL9.5でいかに改善されたのか (20)

PostgreSQL 9.5 新機能紹介
PostgreSQL 9.5 新機能紹介PostgreSQL 9.5 新機能紹介
PostgreSQL 9.5 新機能紹介
 
PostgreSQL 12の話
PostgreSQL 12の話PostgreSQL 12の話
PostgreSQL 12の話
 
Smart Tennis Lesson Serverless Design
Smart Tennis Lesson Serverless DesignSmart Tennis Lesson Serverless Design
Smart Tennis Lesson Serverless Design
 
10大ニュースで振り返るPGCon2015
10大ニュースで振り返るPGCon201510大ニュースで振り返るPGCon2015
10大ニュースで振り返るPGCon2015
 
pg_bigmを用いた全文検索のしくみ(前編)
pg_bigmを用いた全文検索のしくみ(前編)pg_bigmを用いた全文検索のしくみ(前編)
pg_bigmを用いた全文検索のしくみ(前編)
 
KOF2015 PostgreSQL 9.5
KOF2015 PostgreSQL 9.5KOF2015 PostgreSQL 9.5
KOF2015 PostgreSQL 9.5
 
db tech showcase2016 - MySQLドキュメントストア
db tech showcase2016 - MySQLドキュメントストアdb tech showcase2016 - MySQLドキュメントストア
db tech showcase2016 - MySQLドキュメントストア
 
PostgreSQL Unconference #5 ICU Collation
PostgreSQL Unconference #5 ICU CollationPostgreSQL Unconference #5 ICU Collation
PostgreSQL Unconference #5 ICU Collation
 
20191211_Apache_Arrow_Meetup_Tokyo
20191211_Apache_Arrow_Meetup_Tokyo20191211_Apache_Arrow_Meetup_Tokyo
20191211_Apache_Arrow_Meetup_Tokyo
 
Postgre sql9.3新機能紹介
Postgre sql9.3新機能紹介Postgre sql9.3新機能紹介
Postgre sql9.3新機能紹介
 
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
 
Power of SQL and NoSQL with MySQL5.7
Power of SQL and NoSQL with MySQL5.7Power of SQL and NoSQL with MySQL5.7
Power of SQL and NoSQL with MySQL5.7
 
20190518 27th-chugoku db-lt-pg12
20190518 27th-chugoku db-lt-pg1220190518 27th-chugoku db-lt-pg12
20190518 27th-chugoku db-lt-pg12
 
[A33] [特濃jpoug statspack on pdb oracle database 12c] 20131115 補足・続報付き
[A33] [特濃jpoug statspack on pdb oracle database 12c] 20131115 補足・続報付き[A33] [特濃jpoug statspack on pdb oracle database 12c] 20131115 補足・続報付き
[A33] [特濃jpoug statspack on pdb oracle database 12c] 20131115 補足・続報付き
 
PostgreSQL10徹底解説
PostgreSQL10徹底解説PostgreSQL10徹底解説
PostgreSQL10徹底解説
 
Apache Drill でオープンデータを分析してみる - db tech showcase Sapporo 2015 2015/09/11
Apache Drill でオープンデータを分析してみる - db tech showcase Sapporo 2015 2015/09/11Apache Drill でオープンデータを分析してみる - db tech showcase Sapporo 2015 2015/09/11
Apache Drill でオープンデータを分析してみる - db tech showcase Sapporo 2015 2015/09/11
 
ビッグデータ処理データベースの全体像と使い分け
ビッグデータ処理データベースの全体像と使い分けビッグデータ処理データベースの全体像と使い分け
ビッグデータ処理データベースの全体像と使い分け
 
20100930 sig startups
20100930 sig startups20100930 sig startups
20100930 sig startups
 
オープンソースのIoT向けスケールアウト型データベース GridDB 〜性能ベンチマーク結果とOSSを利用したビッグデータ分析環境〜
オープンソースのIoT向けスケールアウト型データベース GridDB 〜性能ベンチマーク結果とOSSを利用したビッグデータ分析環境〜オープンソースのIoT向けスケールアウト型データベース GridDB 〜性能ベンチマーク結果とOSSを利用したビッグデータ分析環境〜
オープンソースのIoT向けスケールアウト型データベース GridDB 〜性能ベンチマーク結果とOSSを利用したビッグデータ分析環境〜
 
show コマンド結果をパースする方法あれこれ #npstudy
show コマンド結果をパースする方法あれこれ #npstudyshow コマンド結果をパースする方法あれこれ #npstudy
show コマンド結果をパースする方法あれこれ #npstudy
 

More from NTT DATA OSS Professional Services

Global Top 5 を目指す NTT DATA の確かで意外な技術力
Global Top 5 を目指す NTT DATA の確かで意外な技術力Global Top 5 を目指す NTT DATA の確かで意外な技術力
Global Top 5 を目指す NTT DATA の確かで意外な技術力
NTT DATA OSS Professional Services
 
Spark SQL - The internal -
Spark SQL - The internal -Spark SQL - The internal -
Spark SQL - The internal -
NTT DATA OSS Professional Services
 
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
NTT DATA OSS Professional Services
 
Hadoopエコシステムのデータストア振り返り
Hadoopエコシステムのデータストア振り返りHadoopエコシステムのデータストア振り返り
Hadoopエコシステムのデータストア振り返り
NTT DATA OSS Professional Services
 
HDFS Router-based federation
HDFS Router-based federationHDFS Router-based federation
HDFS Router-based federation
NTT DATA OSS Professional Services
 
PostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイント
PostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイントPostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイント
PostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイント
NTT DATA OSS Professional Services
 
Apache Hadoopの新機能Ozoneの現状
Apache Hadoopの新機能Ozoneの現状Apache Hadoopの新機能Ozoneの現状
Apache Hadoopの新機能Ozoneの現状
NTT DATA OSS Professional Services
 
Distributed data stores in Hadoop ecosystem
Distributed data stores in Hadoop ecosystemDistributed data stores in Hadoop ecosystem
Distributed data stores in Hadoop ecosystem
NTT DATA OSS Professional Services
 
Structured Streaming - The Internal -
Structured Streaming - The Internal -Structured Streaming - The Internal -
Structured Streaming - The Internal -
NTT DATA OSS Professional Services
 
Apache Hadoopの未来 3系になって何が変わるのか?
Apache Hadoopの未来 3系になって何が変わるのか?Apache Hadoopの未来 3系になって何が変わるのか?
Apache Hadoopの未来 3系になって何が変わるのか?
NTT DATA OSS Professional Services
 
Apache Hadoop and YARN, current development status
Apache Hadoop and YARN, current development statusApache Hadoop and YARN, current development status
Apache Hadoop and YARN, current development status
NTT DATA OSS Professional Services
 
HDFS basics from API perspective
HDFS basics from API perspectiveHDFS basics from API perspective
HDFS basics from API perspective
NTT DATA OSS Professional Services
 
SIerとオープンソースの美味しい関係 ~コミュニティの力を活かして世界を目指そう~
SIerとオープンソースの美味しい関係 ~コミュニティの力を活かして世界を目指そう~SIerとオープンソースの美味しい関係 ~コミュニティの力を活かして世界を目指そう~
SIerとオープンソースの美味しい関係 ~コミュニティの力を活かして世界を目指そう~
NTT DATA OSS Professional Services
 
20170303 java9 hadoop
20170303 java9 hadoop20170303 java9 hadoop
20170303 java9 hadoop
NTT DATA OSS Professional Services
 
ブロックチェーンの仕組みと動向(入門編)
ブロックチェーンの仕組みと動向(入門編)ブロックチェーンの仕組みと動向(入門編)
ブロックチェーンの仕組みと動向(入門編)
NTT DATA OSS Professional Services
 
Application of postgre sql to large social infrastructure jp
Application of postgre sql to large social infrastructure jpApplication of postgre sql to large social infrastructure jp
Application of postgre sql to large social infrastructure jp
NTT DATA OSS Professional Services
 
Application of postgre sql to large social infrastructure
Application of postgre sql to large social infrastructureApplication of postgre sql to large social infrastructure
Application of postgre sql to large social infrastructure
NTT DATA OSS Professional Services
 
Apache Hadoop 2.8.0 の新機能 (抜粋)
Apache Hadoop 2.8.0 の新機能 (抜粋)Apache Hadoop 2.8.0 の新機能 (抜粋)
Apache Hadoop 2.8.0 の新機能 (抜粋)
NTT DATA OSS Professional Services
 
データ活用をもっともっと円滑に! ~データ処理・分析基盤編を少しだけ~
データ活用をもっともっと円滑に!~データ処理・分析基盤編を少しだけ~データ活用をもっともっと円滑に!~データ処理・分析基盤編を少しだけ~
データ活用をもっともっと円滑に! ~データ処理・分析基盤編を少しだけ~
NTT DATA OSS Professional Services
 
商用ミドルウェアのPuppet化で気を付けたい5つのこと
商用ミドルウェアのPuppet化で気を付けたい5つのこと商用ミドルウェアのPuppet化で気を付けたい5つのこと
商用ミドルウェアのPuppet化で気を付けたい5つのこと
NTT DATA OSS Professional Services
 

More from NTT DATA OSS Professional Services (20)

Global Top 5 を目指す NTT DATA の確かで意外な技術力
Global Top 5 を目指す NTT DATA の確かで意外な技術力Global Top 5 を目指す NTT DATA の確かで意外な技術力
Global Top 5 を目指す NTT DATA の確かで意外な技術力
 
Spark SQL - The internal -
Spark SQL - The internal -Spark SQL - The internal -
Spark SQL - The internal -
 
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
 
Hadoopエコシステムのデータストア振り返り
Hadoopエコシステムのデータストア振り返りHadoopエコシステムのデータストア振り返り
Hadoopエコシステムのデータストア振り返り
 
HDFS Router-based federation
HDFS Router-based federationHDFS Router-based federation
HDFS Router-based federation
 
PostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイント
PostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイントPostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイント
PostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイント
 
Apache Hadoopの新機能Ozoneの現状
Apache Hadoopの新機能Ozoneの現状Apache Hadoopの新機能Ozoneの現状
Apache Hadoopの新機能Ozoneの現状
 
Distributed data stores in Hadoop ecosystem
Distributed data stores in Hadoop ecosystemDistributed data stores in Hadoop ecosystem
Distributed data stores in Hadoop ecosystem
 
Structured Streaming - The Internal -
Structured Streaming - The Internal -Structured Streaming - The Internal -
Structured Streaming - The Internal -
 
Apache Hadoopの未来 3系になって何が変わるのか?
Apache Hadoopの未来 3系になって何が変わるのか?Apache Hadoopの未来 3系になって何が変わるのか?
Apache Hadoopの未来 3系になって何が変わるのか?
 
Apache Hadoop and YARN, current development status
Apache Hadoop and YARN, current development statusApache Hadoop and YARN, current development status
Apache Hadoop and YARN, current development status
 
HDFS basics from API perspective
HDFS basics from API perspectiveHDFS basics from API perspective
HDFS basics from API perspective
 
SIerとオープンソースの美味しい関係 ~コミュニティの力を活かして世界を目指そう~
SIerとオープンソースの美味しい関係 ~コミュニティの力を活かして世界を目指そう~SIerとオープンソースの美味しい関係 ~コミュニティの力を活かして世界を目指そう~
SIerとオープンソースの美味しい関係 ~コミュニティの力を活かして世界を目指そう~
 
20170303 java9 hadoop
20170303 java9 hadoop20170303 java9 hadoop
20170303 java9 hadoop
 
ブロックチェーンの仕組みと動向(入門編)
ブロックチェーンの仕組みと動向(入門編)ブロックチェーンの仕組みと動向(入門編)
ブロックチェーンの仕組みと動向(入門編)
 
Application of postgre sql to large social infrastructure jp
Application of postgre sql to large social infrastructure jpApplication of postgre sql to large social infrastructure jp
Application of postgre sql to large social infrastructure jp
 
Application of postgre sql to large social infrastructure
Application of postgre sql to large social infrastructureApplication of postgre sql to large social infrastructure
Application of postgre sql to large social infrastructure
 
Apache Hadoop 2.8.0 の新機能 (抜粋)
Apache Hadoop 2.8.0 の新機能 (抜粋)Apache Hadoop 2.8.0 の新機能 (抜粋)
Apache Hadoop 2.8.0 の新機能 (抜粋)
 
データ活用をもっともっと円滑に! ~データ処理・分析基盤編を少しだけ~
データ活用をもっともっと円滑に!~データ処理・分析基盤編を少しだけ~データ活用をもっともっと円滑に!~データ処理・分析基盤編を少しだけ~
データ活用をもっともっと円滑に! ~データ処理・分析基盤編を少しだけ~
 
商用ミドルウェアのPuppet化で気を付けたい5つのこと
商用ミドルウェアのPuppet化で気を付けたい5つのこと商用ミドルウェアのPuppet化で気を付けたい5つのこと
商用ミドルウェアのPuppet化で気を付けたい5つのこと
 

Recently uploaded

FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance
 
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
Toru Tamaki
 
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさJSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
0207sukipio
 
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
Matsushita Laboratory
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
harmonylab
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
CRI Japan, Inc.
 
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
Fukuoka Institute of Technology
 
This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.
chiefujita1
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance
 
CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料
Yuuitirou528 default
 
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
Matsushita Laboratory
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance
 

Recently uploaded (14)

FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
 
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
 
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさJSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
 
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
 
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
 
This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
 
CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料
 
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
 

JSONBはPostgreSQL9.5でいかに改善されたのか

  • 1. Copyright © 2015 NTT DATA Corporation 2015年6月26日 株式会社 NTTデータ JSONBはPostgreSQL9.5でいかに改善されたのか? 今後の展望は? MyNA・JPUG合同DB勉強会 in 東京
  • 2. 2Copyright © 2015 NTT DATA Corporation PostgreSQL エバンジェリスト@ NTT データ 社内 PostgreSQL 営業・技術支援 GresCube 開発・サポート PostgreSQL コミッタ 全世界で20名、日本人で3人目 PostgreSQL のコア機能を開発 レプリケーション(非同期 / 同期 / カスケード) トランザクションログ圧縮 pg_bigm(全文検索モジュール) 藤井 雅雄 @fujii_masao
  • 3. 3Copyright © 2015 NTT DATA Corporation PostgreSQL 開発者@ NTT データ 社内 PostgreSQL 営業・技術支援 GresCube 開発・サポート PostgreSQL のコア機能を開発 レプリケーション運用性向上 REINDEX SCHEMA / VERBOSE pgbench(ベンチマークツール)の改善 pg_bigm(全文検索モジュール) コア機能へのパッチレビューア 澤田 雅彦 @sawada_masahiko
  • 4. 4Copyright © 2015 NTT DATA Corporation 本日は Event Title Tutorial NoSQL on ACID Talk Update and Delete operations for jsonb Rethinking JSONB Unconference Direction of json and jsonb PGConで話題となったJSONB型の新機能や今後の展望についてご紹介
  • 5. 5Copyright © 2015 NTT DATA Corporation INDEX PostgreSQLがサポートするNoSQL機能の振り返り 次期メジャーバージョン9.5でのJSONB型の新機能 JSONB型の今後の開発展望について
  • 6. Copyright © 2015 NTT DATA Corporation 6 PostgreSQLがサポートするNoSQL機能の振り返り
  • 7. 7Copyright © 2015 NTT DATA Corporation PostgreSQLでできるNoSQLっぽいこと XML (8.2~) hstore (8.2~) JSON (9.2~) JSONB (9.4~) FDWで連携 (8.4~) <foo bar=‘abc’>hoge</foo> “foo” => “bar” {“abc” : “foo”} mongo_fdw, redis_fdw PostgreSQLでは様々な方法で半構造化データを取り扱い可能
  • 8. 8Copyright © 2015 NTT DATA Corporation PostgreSQLにおけるJSON JSONデータ { "id":1, "name":"鈴木", "address":"東京", "birth_day":"1970-01-01“ } CREATE TABLE tbl ( data JSON); key value PostgreSQLではJSONデータを専用データ型に格納可能
  • 9. 9Copyright © 2015 NTT DATA Corporation PostgreSQLにおけるJSON CREATE TABLE hoge (data JSON); INSERT INTO hoge VALUES (' {"name" : "PostgreSQL", "type" : "DBMS", "developer" : [{"name" : "Sawada", "age" : "25"}, {"name" : "Fujii", "age" : "55"}]} '); SELECT data->'type', ((data->'developer')->1)->'name' FROM hoge; ?column? | ?column? ----------+---------- "DBMS" | "Fujii" (1 row)
  • 10. 1Copyright © 2015 NTT DATA Corporation PostgreSQLにおけるJSONの歴史 v9.2 (2012年) v9.3 (2013年) v9.4 (2014年) v9.5 TEXT型 + 構文チェッカ 利用可能な関数と演算子 はわずか 演算子4個追加 要素抽出の演算子(->) 関数10個追加 JSONから行への変換 バイナリ形式 + 構文チェッカ GINインデックス対応 JSON型 サポート JSONB型 サポート !? 関数と演算子の 充実化
  • 11. 1Copyright © 2015 NTT DATA Corporation JSON型とJSONB型の比較 JSON型 JSONB型 利用可能 バージョン 9.2以降 9.4以降 格納方式 テキスト形式 データをそのままの形で格納 バイナリ形式 不要な空白の削除、重複キーの除去、 バイナリ変換を行った上で格納 インデックス Btree式インデックス Btree式インデックス GIN 利用可能な 演算子 要素抽出の演算子のみ 要素抽出に加えて、比較・包含の演算子 検索性能 低速 検索時にテキストのパースが必要 GIN未対応 高速 パース不要 GIN対応済 更新性能 高速 格納時のオーバーヘッドが小さい 低速 格納時のオーバーヘッドが大きい
  • 12. 1Copyright © 2015 NTT DATA Corporation JSONBのGINインデックス 作成可能なGINインデックスは2種類 デフォルト CREATE INDEX idx ON hoge USING gin (data); jsonb_path_ops CREATE INDEX idx ON hoge USING gin (data jsonb_path_ops); @> only Faster Smaller index 演算子 説明 例 @> 「左辺のJSON」は「右辺のJSON」を包含するか? {"a" : 1, "b" : 2} @> {"b" : 2} ? 右辺のキーが左辺のJSONに存在するか? {"a" : 1, "b" : 2} ? 'b' ?& 右辺のキーのすべてが左辺のJSONに存在するか? {"a" : 1, "b" : 2} ?& ARRAY['b', 'c'] ?| 右辺のキーのいずれかが左辺のJSONに存在するか? {"a" : 1, "b" : 2} ?| ARRAY['b', 'c']
  • 13. 1Copyright © 2015 NTT DATA Corporation JSONB + GIN による強力なインデックス検索 CREATE TABLE employee (data JSONB); CREATE INDEX employee_idx ON employee USING gin (data jsonb_path_ops); INSERT INTO employee VALUES ('{"name" : "斉藤", "age" : 27, "role" : "開発"}'), ('{"name" : "田中", "age" : 45, "role" : "営業"}'), ('{"name" : "佐藤", "age" : 33, "role" : "開発"}'), ('{"name" : "山田", "age" : 53, "role" : "経営"}'); SELECT * FROM employee WHERE data @> '{"role" : "開発"}'; QUERY PLAN ---------------------------------------------------------------------------- Bitmap Heap Scan on employee Recheck Cond: (data @> '{"role": "開発"}'::jsonb) -> Bitmap Index Scan on employee_idx Index Cond: (data @> '{"role": "開発"}'::jsonb)
  • 14. 1Copyright © 2015 NTT DATA Corporation JSONB + GIN による強力なインデックス検索 CREATE TABLE employee (data JSONB); CREATE INDEX employee_idx ON employee USING gin (data jsonb_path_ops); INSERT INTO employee VALUES ('{"name" : "斉藤", "age" : 27, "role" : "開発"}'), ('{"name" : "田中", "age" : 45, "role" : "営業"}'), ('{"name" : "佐藤", "age" : 33, "role" : "開発"}'), ('{"name" : "山田", "age" : 53, "role" : "経営"}'); SELECT * FROM employee WHERE data @> '{"name" : "山田"}'; SELECT * FROM employee WHERE data @> '{"age" : 33}'; SELECT * FROM employee WHERE data @> '{"role" : "開発"}'; INSERT INTO employee VALUES ('{"name" : "安田", "age" : 41, "role" : "総務", "office" : "東京"}'); SELECT * FROM employee WHERE data @> '{"office" : "東京"}'; すべてのKeyに対して インデックス検索可能 新規追加のKeyに 対しても インデックス検索可能
  • 15. 1Copyright © 2015 NTT DATA Corporation 振り返りのまとめ v9.2 (2012年) v9.3 (2013年) v9.4 (2014年) v9.5 TEXT型 + 構文チェッカ 利用可能な関数と演算子 はわずか 演算子4個追加 要素抽出の演算子(->) 関数10個追加 JSONから行への変換 バイナリ形式 + 構文チェッカ GINインデックス対応 JSON型 サポート JSONB型 サポート !? 関数と演算子の 充実化
  • 16. Copyright © 2015 NTT DATA Corporation 1 次期メジャーバージョン9.5でのJSONB型の新機能
  • 17. 1Copyright © 2015 NTT DATA Corporation 充実してきたPostgreSQLのJSON(B)型ですが。。 • キーによる値の取り出し (->) • パスによる値の取り出し (#>) • 任意のパスのオブジェクトを 追加 (?) • 〃 を 更新 (?) • 〃 を 削除 (?)
  • 18. 1Copyright © 2015 NTT DATA Corporation 9.5ではJSONBデータを操作する関数が追加 新規に追加された関数一覧 jsonb_concat() 追加 jsonb_delete() 削除 jsonb_set() 更新 jsonb_pretty() JSONB型を見やすく整形 NEW! NEW! NEW! NEW!
  • 19. 1Copyright © 2015 NTT DATA Corporation jsonb_concat関数 SELECT jsonb_concat( '{"a": 1, "b": "hoge"}'::jsonb, '{"a": 999, "c": [1,2]}'::jsonb ); jsonb_concat -------------------------------------- {"a": 999, "b": "hoge", "c": [1, 2]} (1 row)
  • 20. 2Copyright © 2015 NTT DATA Corporation jsonb_delete関数 SELECT jsonb_delete( '{"a": 1, "b": {"c": 999}, "d": [2,3]}'::jsonb, 'a‘ ); jsonb_delete -------------------------------- {"b": {"c": 999}, "d": [2, 3]} (1 row) SELECT jsonb_delete( '{"a": 1, "b": {"c": 999}, "d": [2,3]}'::jsonb, '{d, -1}‘ ); jsonb_delete ------------------------------------- {"a": 1, "b": {"c": 999}, "d": [2]} (1 row)
  • 21. 2Copyright © 2015 NTT DATA Corporation jsonb_set関数 (置き換え) SELECT jsonb_set( ' {"n" : null, "a": {"b": 100}}'::jsonb, 'n', ‘999‘ ); jsonb_set --------------------------------- {"a": {"b": 100}, "n": 999} (1 row)
  • 22. 2Copyright © 2015 NTT DATA Corporation jsonb_set関数 (ネストしたパス指定) SELECT jsonb_set( '{"a":{"b": 2}}'::jsonb, '{a, b}', '[1,2]‘ ); jsonb_set ---------------------- {"a": {"b": [1, 2]}} (1 row)
  • 23. 2Copyright © 2015 NTT DATA Corporation jsonb_set関数 (添字に負の数) SELECT jsonb_set( '{"a": {"b": [2,3]}}'::jsonb, '{a, b, -1}', '999‘ ); jsonb_set ------------------------ {"a": {"b": [2, 999]}} (1 row)
  • 24. 2Copyright © 2015 NTT DATA Corporation jsonb_set関数 (なかったら追加) SELECT jsonb_set( ' {"n" : null, "a": {"b": 999}}'::jsonb, 'c', ‘999‘, true ); jsonb_set ----------------------------------------- {"a": {"b": 2}, “c": 999, "n": null} (1 row)
  • 25. 2Copyright © 2015 NTT DATA Corporation jsonb_pretty関数 SELECT jsonb_pretty('{"a":"hoge", "b":[1,2,3], "c":{"d": 999}}'::jsonb); jsonb_pretty ------------------ { + "a": "hoge", + "b": [ + 1, + 2, + 3 + ], + "c": { + "d": 999 + } + } (1 row)
  • 26. 2Copyright © 2015 NTT DATA Corporation 演算子 JSONB型の演算子一覧 ->、 ->> キー指定で要素取得 #>、 #>> パス指定で要素取得 @>、 <@ 包含(JSONBのみ) ?、 ?|、 ?& 存在(JSONBのみ) -、-# 削除(JSONBのみ) || 追加(JSONBのみ) NEW! NEW! JSONBデータを操作する演算子が追加
  • 27. 2Copyright © 2015 NTT DATA Corporation 削除 SELECT '{ "a" : 1, "b" : { "c" : 2 }}'::jsonb - 'b'; delta ------------- {"a": 1} SELECT '{ "a" : 1, "b" : { "c" : 2 }}'::jsonb - 'c'; delta ------------------------- {"a": 1, "b": {"c": 2}} SELECT '{"a":1, "b":{"c":2}}'::jsonb #- '{b,c}'; delta --------------------- {"a": 1, "b": {}} (1 row)
  • 28. 2Copyright © 2015 NTT DATA Corporation 追加 SELECT '{ "a" : 1, "b" : 2}'::jsonb || '{ "c" : 3 }'; concat -------------------------- {"a": 1, "b": 2, "c": 3} SELECT '{ "a" : 1, "b" : 2}'::jsonb || '{ "a" : 3 }'; concat ------------------ {"a": 3, "b": 2}
  • 29. 2Copyright © 2015 NTT DATA Corporation 9.5新機能まとめ 関数 演算子 -、-# 削除 || 追加 jsonb_concat() 追加 jsonb_delete() 削除 jsonb_set() 更新 jsonb_pretty() JSONB型を見やすく整形 NEW! NEW! NEW! NEW! NEW! NEW!
  • 30. Copyright © 2015 NTT DATA Corporation 3 JSONB型の今後の開発展望について
  • 31. 3Copyright © 2015 NTT DATA Corporation 今後のはなし JSONB型の関数の拡充 次期バージョンにむけてJSONB型の関数の拡充が進行中。 さらなる利便性の向上に期待! - Update and Delete operations for jsonb - by Andrew Dunstan at PGCon 2015
  • 32. 3Copyright © 2015 NTT DATA Corporation 今後のはなし 検索機能の向上 JSONB型を使ったクエリは書きにくい? 次期バージョンに向けて改善が進められています! - Rethinking JSONB - by Alexander Korotkov, Konstantin Knizhnik, Oleg Bartunov at PGCon 2015
  • 33. 3Copyright © 2015 NTT DATA Corporation 検索機能の向上 例えば、配列がネストされた複雑なデータの場合。 SELECT jsonb_pretty( ‘{"department": [{"staff": [{"name": “hoge", "title": “chief”}]}]}’ ); jsonb_pretty ------------------------------------- { + "department": [ + { + “staff”: [ + { + "name": “hoge", + "title": “chief" + } + ] + } + ] + }
  • 34. 3Copyright © 2015 NTT DATA Corporation 検索機能の向上 「name」がhoge、「title」がmanagerまたはchiefのデータを探そうとすると。。 SELECT * FROM company WHERE jb->’department’->0->’staff’->0->’name’ = ‘hoge’ AND ( jb->’department’->0->’staff’->0->’title’ = ‘manager’ OR jb->’department’->0->’staff’->0->’title’ = ‘chief’ ) SELECT * FROM company WHERE ( jb->’department’->0->’staff’->0->’name’ = ‘hoge’ AND jb->’department’->0->’staff’->0->’title’ = ‘manager’ ) OR ( jb->’department’->0->’staff’->0->’name’ = ‘hoge’ AND jb->’department’->0->’staff’->0->’title’ = ‘chief’ ) jsonb_pretty ------------------------------------------- { + "department": [ + { + “staff”: [ + { + "name": “hoge", + "title": “chief" + } + ] + } + ] + }
  • 35. 3Copyright © 2015 NTT DATA Corporation 検索機能の向上 「name」がhoge、「title」がmanagerまたはchiefのデータを探そうとすると。。 SELECT * FROM company as c WHERE EXISTS ( SELECT 1 FROM ( SELECT jsonb_array_elements(t1.col1->’staff’) as col2 FROM ( SELECT jsonb_array_elements(jb->’department’) as col1 FROM company ) as t1 ) as t2 WHERE t2.col2 ->> ‘name’ = ‘hoge’ AND t2.col2 ->> ‘title’ IN (‘manager’, ‘chief’) ); jsonb_pretty ------------------------------------------- { + "department": [ + { + “staff”: [ + { + "name": “hoge", + "title": “chief" + } + ] + } + ] + }
  • 36. 3Copyright © 2015 NTT DATA Corporation 検索機能の向上 New Syntax : { ANY | EACH } { ELEMENT | KEY | VALUE | VALUE ANYWHERE } OF container AS alias SATISFIES (expression) SELECT * FROM company WHERE ANY ELEMENT OF jb->’department’ AS d SATISFIES ( ANY ELEMENT OF d->’staff’ AS s SATISFIES ( s ->> ’name’ = ‘hoge’ AND s ->> ‘title’ IN (‘manager’, ‘chief’) ) );
  • 37. 3Copyright © 2015 NTT DATA Corporation 今後のはなし JSONB型の圧縮 JSONB型はサイズが大きくなりがち。 データサイズについての改善も進められています! - Rethinking JSONB - by Alexander Korotkov, Konstantin Knizhnik, Oleg Bartunov at PGCon 2015
  • 38. 3Copyright © 2015 NTT DATA Corporation まとめ  9.5でJSONB型データの操作がより便利に!  9.6以降もさらなる進化に期待!
  • 39. Copyright © 2011 NTT DATA Corporation Copyright © 2015 NTT DATA Corporation