SlideShare a Scribd company logo
1 of 74
Download to read offline
1
オープンソースRDBMS新機能
ランダウン(Firebird3.0/
MySQL 5.7/PostgreSQL 9.6)
OSC2017TokyoSpring
セミナー Firebird日本ユーザ会
木村明治(@meijik)
免責事項
• 本プレゼンテーションにおいて示されている
見解は、私自身の見解であって、私の所属す
る会社・団体の見解を必ずしも反映したもの
ではありません。ご了承ください。
2
アジェンダ
• 自己紹介
• オープンソースRDBMS御三家の紹介
• 都市伝説
• イマドキ! の機能
– VLDB、NoSQL、GIS、便利なSQL、HA、組込、
ツール、セキュリティ、クラウド、etc
• オープンソースRDBMS御三家最新版、バー
ジョン別機能
自己紹介
• 日本オラクルでMySQLサポートをしています。
– 漢と書いてオトコの同僚。
– 漢は「理論から学ぶデータベース実践入門 ~
リレーショナルモデルによる効率的なSQL」の著者
• DB関連のブログや書籍を書いてます。
– キムラデービーブログ
– 「おうちで学べるデータベースのきほん(共著)」
• ミックさんの知り合い。外人じゃないよ。
• MyNA会員、Neo4Jユーザ会会員
• Firebird日本ユーザ会の理事長
私とRDBMS
• 新卒にて日立関連会社に就職。HiRDBの開
発にチョット関わる。
• 転職して独立系ソフトウエアベンダーに
– デスクトップRDBMSの開発に関わる。
OCI/ODBCを利用したOracle/SQL Server,
Accessドライバを作成。
– 製品バンドル用のRDBMSとして
PostgreSQL/MySQL/InterBase Open
Edition(Firebirdの前身)を評価。InterBase採用。
– 製品PMとして、独自DBからMySQLへの移行。
OSS RDBMS御三家の紹介
• 日本ではPostgreSQL, MySQLが有名です
が、ロシア・ヨーロッパ・南米ではFirebirdも有
名です。
• P M F でオープンソースRDBMS御三家と呼
びましょう。(と私が提唱してました 
• 詳しく話しているとそれだけで一時間かかる
ので「オープンソースDBの成熟度を計る」で
検索してみてください。
オープンソースDBの成熟度を計る
• 2007年の雑誌記事、後にweb化された。
• オープンソースDBの成熟度を計る[前編]
– 概略、MySQL(5.1まで), PostgreSQL(8.3まで)
– https://osdn.jp/magazine/07/09/20/023210
• オープンソースDBの成熟度を計る[後編]
– Firebird(2.1まで), JavaDB, 進化の方向性
– https://osdn.jp/magazine/07/09/20/0544256
都市伝説
• MySQL都市伝説
– バイナリカラムのバックアップがとれない。
– サブクエリがない。トランザクションがない
– MyISAMがInnoDBよりはやい、機能が多い。
• PostgreSQL都市伝説
– Windows版がない。
– バキューム必要で動作時「世界が止まる」。
– MySQLより遅い
• Firebird 都市伝説。自体がない。。。
イマドキ! の機能
• 都市伝説はすでに解消され、オープンソース
RDBMSはイマドキ!の機能を実装・提供しは
じめる。
• イマドキ! の機能
– VLDB、NoSQL、GIS、便利なSQL、HA、組込、
ツール、クラウド
VLDB
• VLDB(Very Large Data Base)
– どのくらいがVery Largeなのかは時代による。
• パーティショニング機能
– 巨大な表をキーを元に水平分割する
– PostgreSQLは8.0から。ただしテーブルの継承
やトリガを利用する「なんちゃって」なもの。
• 専用構文・実装は9.6の次(10.0予定)から
– MySQL は5.1から。
• マテリアライズドビュー
– PostgreSQL9.3から
NoSQL
• JSONが扱えればいいよね! ということなら
– PostgreSQL 9.2でJSONサポート, 9.4でJSONB,
9.5で部分更新
– MySQL 5.7でJSONサポート。
• 外部とのデータ連携なら
– PostgreSQL 9.x のFDW(Foreign Data
Wrapper): dblinkや他DBの外部表と違って柔軟。
• Memcachedのプロトコル使いたいなら
– MySQL 5.6のInnoDB memcached プラグイン。
5.7でさらに性能UP
GIS
• GIS(Geographic Information System:地理
情報システム)
• PostgreSQL拡張のPostGISがデファクト。
– PostGIS リリース1.0.0RC1(2005)->1.5.0(2010)
– 現在は2.3 が最新。2.4を開発中
• MySQLは4.xで初期実装したものの、その後
長い間進展なし。
– MySQL 5.7で生まれ変わった(re-born)
– 拡張ではなく本体組み込み
便利なSQL
• もともとMySQLでは便利な独自SQLが多々
ある
– 他のRDBMSやSQL標準にも影響
• PostgreSQLはもともと積極的にSQL標準を
サポートしてきた。
– 高塚さんによるとSQL:2008準拠相当 
– 最近は他のRDBMSの便利な機能も実装
• FirebirdもSQL標準には追随している
SQL標準(SQL:1999より後)
• SQL:2003, 2008, 2011, 2016
– SQL:2003
• XML関連機能 (SQL/XML)
• ウインドウ関数
• シーケンスジェネレータ
• 新しいカラム型: auto-generated values と identity-
columns
• MERGE ステートメント
• SQL/MED, SQL/MM
• TABLESAMPLE
• 等々 14
SQL:2003 SQL/MED
• PostgreSQL
– dblink
– FDW(Foreign Data Wrapper)9.1でサポート。
9.2で拡張(postgres_fdw)。9.3からは更新も可。
• Firebird
– 2.5で外部クエリ(External Query)として実装。
• MySQL
– Federatedテーブルがあるが新規開発は停止。
– 後継となるFederatedXがMariaDBにより開発。
15
SQL:2003 SQL/MM
• 全文検索(日本語)
• PostgreSQL/MySQL(5.6まで)/Firebird
– 本体にはなし。
• MySQL 5.7からInnoDBのFTS(Full Text
Search)
• Groonga
– MySQLバインディング: Mroonga(むるーんが)
– PostgreSQLバインディング: PGroonga(ぴー
じーるんが)
16
SQL: 2008
• MERGE と DIAGNOSTIC の拡張
• TRUNCATE TABLE ステートメント
• CASEのカンマ区切りWHEN句
• INSTEAD OF データベーストリガー
• partitioned JOINテーブル,
• いろいろなXQuery regular expression/pattern-
matching 機能のサポート
• 導出カラム名の拡張
17
SQL: 2011
• Temporal データベース
• その他しみじみとした機能改善
– MERGE内でのDELETE
– パイプラインDML
– CALL文の拡張
– Limited fetch
– Collection type拡張
– Non-enforcedテーブル制約
– ウインドウ関数の拡張、等
18
Limited Fetchの例
• SELECTの結果行数を制限
• SQL標準ではSQL2008にてFETCH FIRST
m ROWSの構文が定められ、同構文を元々
利用していたIBM DB2と、DB2以外の商用
RDBMSの最近のバージョン(MS SQL
Server 2012, Oracle 12c)でサポートされて
いる。
• LIMIT句はSQL標準ではありませんが、
MySQLとPostgreSQL、IBMのMySQL互換
モードONにて利用できます。 19
SQL:2016
• 行間パターン認識機能「Row pattern
recognition」
• 「JSON」への対応
• 外部ソースにアクセスし、表形式で出力する
「Polymorphic table functions」
20
行間パターン認識(RPR)
• RPR: Row Pattern Recognition
– 2008年に提出されたプロポーザルの規格化
• MATCH_RECOGNIZE句
• Oracle Database 12cのみ実装
• 詳細や利用例はこれから順に日本語になっ
ていくと思います。
21
近年SQL標準の最大の功績
•CASE式
•ウインドウ関数
22
最近のロードマップ
2010 2011 2012 2013 2014 2015 2016
PostgreS
QL
9.0 9.1 9.2 9.3 9.4 9.5 9.6
(10.0)
MySQL 5.5 5.6 5.7
DMR
5.7 8.0
DMR
Firebird 2.5 3.0
Beta1
3.0
SQL標準 SQL:201
1
SQL:201
1/Cor1
2013
SQL:20
16
24
安定版 2.5.5
2015年11月リリース
InterBase
6.0 OE
Firebird
1.5
Firebird
2.0
Vulcan
Firebird
3.0
2016年~2006年
2002年
2004年
SMPへの最適化、
DBMS本体リデザイン
Firebird 2.x, Vulcan
の成果+αを統合
【SAS組込版】
Firebirdロードマップ
Firebird
1.0
2008年
Firebird
2.5
2010年
現在最新
版
Firebird
2.1
25
Firebirdでサポート: MERGE文
MERGE INTO shain U
USING m_shain N
ON (U.ID = N.ID)
WHEN MATCHED THEN
UPDATE SET u.name = n.name
WHEN NOT MATCHED THEN
INSERT (U.ID, U.NAME)
VALUES(N.ID, N.NAME)
26
対照表と差分表をMERGE
• 対象表 差分表
1 みやはら
2 きむら
3 かまたき
id name id name
2 加藤
4 小笠原
1 みやはら
2 きむら
3 かまたき
2 加藤
4 小笠原
27
MySQLの場合
• (1) INSERT … ON DUPLICATE KEY
UPDATE構文
– INSERT INTO shain(id, name) select id, name
FROM m_shain ON DUPLICATE KEY
UPDATE name = m_shain.name;
• (2) REPLACE構文
– REPLACE INTO shain(id, name) select id,
name FROM m_shain;
28
PostgreSQLの場合
• PostgreSQL 9.5からサポート
• INSERT INTO shain(id, name) select id,
name FROM m_shain ON CONFLICT ON
CONSTRAINT 制約名 DO UPDATE set
name = EXCLUDED.name;
• MySQLと違って制約名が必要。
• 表名(m_shain)修飾ではなく、EXCLUDED
• PostgreSQL9.5より前ではCTE(PostgreSQl
9.1からサポート)もしくはトリガで。。。
29
レコードを差分追加する
(重複は無視)
• 対象表 差分表
1 みやはら
2 きむら
3 かまたき
id name id name
2 加藤
4 小笠原
1 みやはら
2 きむら
3 かまたき
4 小笠原
30
MERGE文の例
MERGE INTO shain U ¥
USING m_shain N ¥
ON (U.ID = N.ID) ¥
WHEN MATCHED THEN ¥
UPDATE SET u.name = n.name ¥
WHEN NOT MATCHED THEN ¥
INSERT (U.ID, U.NAME)
VALUES(N.ID, N.NAME)
31
MySQLの場合
• INSERT IGNOREを使う。
• INSERT IGNORE shain(id, name) select
id, name FROM m_shain;
• すごーく古いMySQLではINSERTのデフォル
ト動作がIGNORE(!)だったが、最新の
MySQLでは明示的に指定する必要有り。
32
PostgreSQLの場合
• これも9.5以降
• “DO アクション”でアクションにNOTHING
• INSERT INTO shain(id, name) select id,
name FROM m_shain ON CONFLICT ON
CONSTRAINT 制約名 DO NOTHING;
33
CTE(共通表式)
• 共通表式は、ひとつのSQL文中に限り「何回でも」
参照可能なローカルな表のことです。例えば、以下
のようなSQLがあるとします。
– SELECT ID, NAME FROM (副問い合わせ);
• 共通表式で書き直すと以下のようになります。
WITH 副問い合わせ名 AS
(
副問い合わせ内容
)
SELECT ID, NAME FROM 副問い合わせ名
34
共通表式の例
WITH T AS (
SELECT B.部署名, E.社員名, E.給与
FROM 部署 B, 社員 E
WHERE B.ID = E.ID
)
SELECT * FROM T WHERE T.給与 > 200000
35
再帰クエリ
• 共通表形式を使う一番の利点は、これを用い
て再帰的なSQL文を実行できること。
• 次ページのような社員表があるとすると、各
社員はユニークな社員番号を持ち、mgridに
直属の上司の社員番号が格納されている。
社長‘みやはら’は上司がいないため、mgrid
はNULLとなる。
• このような形式は隣接リスト(Adjacency List)
モデルといい階層構造をRDBで利用するの
によく使われます。
36
再帰クエリ
CREATE TABLE shain(empid INT PRIMARY KEY, name
VARCHAR(20), mgrid INTEGER);
INSERT INTO shain VALUES ( 1, 'みやはら', NULL);
INSERT INTO shain VALUES ( 2, 'きむら', 1);
INSERT INTO shain VALUES ( 3, 'かまたき', 1);
INSERT INTO shain VALUES ( 4, '加藤', 2);
INSERT INTO shain VALUES ( 5, '林', 2);
INSERT INTO shain VALUES ( 6, '三浦', 5);
37
階層構造を隣接リストで表現
1 みやはら
2 きむら 3 かまたき
4 加藤 5 林
6 三浦
38
再帰クエリ
• 通常のSQL文では、直属の部下を求めるのは簡単
ですが、直接、間接(部下の部下)を一度に求めるの
は困難でした。これを再帰的なSQL文で検索できま
す。再帰的なSQL文は以下のように記述できます。
WITH RECURSIVE 共通表名 AS (
初期集合を求めるSELECT
UNION ALL
再帰集合を求めるSELECT
) SELECT * FROM 共通表名
39
再帰クエリ
• 例) きむら自身と直接・間接の部下を求める。
SQL> WITH RECURSIVE n AS
CON> (SELECT empid, name
CON> FROM shain
CON> WHERE name = 'きむら'
CON> UNION ALL
CON> SELECT nnext.empid, nnext.name
CON> FROM shain as nnext, n
CON> WHERE n.empid = nnext.mgrid)
CON> SELECT name FROM n;
NAME
====================
きむら
加藤
林
三浦
40
再帰クエリ
• このような階層的なデータを扱うSQL拡張は、
各商用データベースでは必要に応じて行わ
れてきました。
• 例えば、Oracleの場合、CONNECT BYとい
う独自拡張で、上記と同様の内容を以下の
SQL文で得ることができます。
– SELECT name FROM shain START WITH
name = 'きむら' CONNECT BY PRIOR empid
= mgrid;
CTE・再帰クエリ(PostgreSQL)
• 8.4でサポート
• 9.1で拡張。WITH (...) の中や末尾のクエリに
て INSERT/UPDATE/DELETE ができるよう
に。
– MERGE 文はPostgreSQLは未サポートですが、
UPDATE できなかったキーを持つ行のみ後から
INSERT を行うと、他DBの MERGE や
REPLACE 文と同等の機能をCTEでも実現でき
ます。
41
CTE・再帰クエリ
(Firebird/MySQL)
• Firebirdは2.1からCTE・再帰クエリをサポート
• MySQL
– CTEやCTEを使った再帰クエリの機能はない。
• 8.0 lab版には実装済み
– 次に紹介するウインドウ関数的なものも(本家に
は)ない。。。
42
43
順位の簡単な求め方
• SQLパズル的なものはいろいろあれど。
• ウインドウ関数
– RANK()やDENSE_RANK()
• オープンソースRDBMSではPostgreSQL以
外(8.4以降で対応)まだ対応が遅れ気味
「だった」
– Firebirdは3.0で対応 !
– MariaDB(MySQLからのフォーク)は、次期版
10.2で対応(現在RC版)
HA(High Availability)
• レプリケーション
– MySQLの代名詞。バージョン3.xよりサポート
• 5.5で準同期。5.6でGTID対応。
– PostgreSQLは外部ツール(pg-pool, slony)で従
来対応していたが、バージョン9.0から本体にレプ
リケーションの機能が実装された(ストリーミング・
レプリケーション)
– Firebirdは有償のIB-Replicatorで対応。
• 次期4.0で本体に組み込み予定(from Red Database)
– 参照の負荷分散や、マスターがダウンしたときの
スレーブ昇格など。
MySQLのレプリケーション
• MySQL 3.xの頃から標準搭載
• ユーザの自由度が高く柔軟な構成が可能
• 基本非同期、文ベースのレプリケーションだっ
たが、行ベースや準同期の機能がつき、GTID
トランザクション、クラッシュセーフのレプリケー
ション、スレーブでのマルチスレッドでの実行、
遅延レプリケーション、マルチマスタなど、想像
力の限り(?) の構成が可能。。。。
レプリケーションとは?
• レプリケーションは一つのMySQLデータベー
スサーバ(マスター)から一つ以上のMySQL
データベースサーバにデータを複製(レプリ
ケート)します。
Master Slave
binlog relay log
バイナリログ
• マスターで複数の接続で並列で行われた更
新をcommit順にシリアルに並べています。
Master Slave
binlog relay log
time
↑
SQLスレッドでシリアルに実行
commit
commit
commit
rollback
タイプとフォーマット
• タイプ:
– 非同期 – マスターから更新を受け取るために、スレーブ
はずっと接続しておく必要がない。
– 準同期 – マスターからスレーブのうち最低一つがコミット
をリレーログに書き込んだことを確認する。
– (完全)同期 –全てのスレーブがコミットをデータベースに
まで書込んだことを確認する->MySQLにはない。
• フォーマット:
– 文ベース – SQL文をマスターからスレーブに伝搬する
– 行ベース – 各行の変更をマスターからスレーブに伝搬
– Mixed – 文ベースと行ベースの混合
古いMySQLレプリケーションの短所
• 真の高可用性(High Availability)ではない – システ
ムダウンの際データがロストする
 一つ以上のスレーブのフェイルオーバー/フェイル
バックが複雑
 リカバリしたマスターはバイナリログ(binlog)に記録
されなかった変更が欠損する
 スレーブはマスターからのタイムラグがある
MySQLレプリケーション改善点
• 真の高可用性(High Availability)ではない – システ
ムダウンの際データがロストする→対応
– 準同期レプリケーション(5.5)
– クラッシュセーフなレプリケーション(5.6)
• まだMySQL 5.5で消耗してるの?MySQL 5.6でクラッシュセーフなレプリケー
ションを活用して枕を高くして眠れる日々を満喫する方法
• http://nippondanji.blogspot.jp/2014/12/mysql-55mysql-56.html
 一つ以上のスレーブのフェイルオーバー/フェイル
バックが複雑→対応
 MHAによるフェイルオーバー(5.5)
 GTID設定とMySQL Utilitiesのmysqlfailoverの利用
(5.6)
レプリケーションの利用法
• 高可用性(High Availability) (フェイルオーバー)
• スケーラビリティ – スケールアウト
• データセキュリティ/バックアップ
• 分析
• 長距離間のデータ配布
• MySQLのより新しいバージョンをスレーブとして追加
して新バージョンの既存データでの動作確認
レプリケーションアーキテクチャの基本
Master Slave
binlog
relay log
Clients
I/O Thread
SQL Thread
1
2
dump thread
3 4
5
構成例: マスターと三つのスレーブ
Master
App/Web
Server
SlavesClients
Writes
Reads
レプリケーションのトポロジ
Singleスレーブ
Multipleスレーブ
Chain, Cascade Circular
Multi - CircularMulti - Master
Multi-MasterやCircular構成は運用や障害
の対処が難しい事に注意が必要
PostgreSQLレプリの歩み
2010 2011 2012 2013 2014 2015 2016
PostgreS
QL
9.0 9.1 9.2 9.3 9.4 9.5 9.6
非同
期
同期 カス
ケード
スタンバイ
サーバへ
の高速切
替
レプリケー
ションス
ロット, ロジ
カルデコー
ディング
高速フェ
イルオー
バー
マルチ同
期レプリ
ケーショ
ン
MySQL 5.5 5.6 5.7
・準同期
・ハートビート
・GTID
・クラッシュセーフ
スレーブ
・マルチソース
・マルチスレッドス
レーブ
HA(Cluster)
• クラッシュセーフであれば市販のクラスタソフ
トウエアで対応できる
– 共有ディスクでActive/Standby
– DRBDでActive/Standby
• MySQLではストレージエンジンとしてNDBを
利用し、NDB用に拡張したMySQL本体
(mysqld)を含めてMySQL Clusterとして提供
• PostgreSQLではPostgre-XC, Postgre-XL,
Postgre-XC2などの開発が続く。。。
• Firebirdは….聞かないでください。。。。
MySQL Cluster: Overview
• 自動シャーディング、マルチマスター
• ACID 準拠のトランザクション, OLTP + Real-Time Analytics
読込み/書込み処理
に対する高い拡張性
• シェアードナッシング、単一障害点無し
• 自動修復 + オンラインオペレーション99.999% の高可用性
• オープンソース + 商用版
• コモディディハードウェア + 充実した管理ツール、監視ツール低い TCO
• Key/Value + SQL の柔軟性
• SQL + Memcached + JavaScript + Java + JPA + HTTP/REST & C++SQL + NoSQL
• インメモリデータベース + ディスクデータ
• 非常に低いレイテンシ、短いアクセス時間リアルタイム
58
OSSDBの二つのグループ
組み込みから
ミドルレンジまでの機能強化
Firebird
エンタープライズ向けの
機能強化
MySQL, PostgreSQL
商用データベースエンタープライズ
規
模
大
小
ミドルレンジは用途
によりどちらのグ
ループでもOK
組み込み
• FirebirdとMySQLは組み込み用の
Embedded libraryが提供されている
• FirebirdはDBが単一ファイル、ライセンスも緩
やかなので組み込みやすい。
59
組み込み(Firebird/LibreOffice)
• Base4.2からFirebirdのEmbedded版が使え
るようになり、4.3からは単純にBaseを起動す
るとDBウィザードが起動し指定できるように!
• Base5.2まではFirebird 2.5, Base5.3以降は
Firebird 3.0が利用される。
• 次バージョンのBase5.4ではFirebirdがデフォ
ルトのデータベースエンジンになる?
– http://www.firebirdnews.org/firebird-3-by-
default-in-libreoffice-5-4-base/
– 60
ツール(1)
• Firebird
– 市販のGUIツール。IBExpert , Database
Workbench。無償のFlameRobin
• MySQL
– MySQL Utilities, MySQL Fabric, MySQL
Workbench
– MySQL商用版にのみ含まれるものもあり
– Percona Tools for MySQL, MHA
– Visual StudioとTools, Connector/Netでストアド
プロシジャのデバッグが可能
ツール(2)
• PostgreSQL
– Contribに含まれるツール。PotgreSQL Toolkit
– PL/pgSQLデバッガー(Enterprise DB)
セキュリティ(1)
• 権限の強化・細分化
– PostgreSQLのSE-PostgreSQL(contribの
sepgsqlモジュール)や本体の機能強化
• 監査(Audit)
– Firebird 2.5からのAudit log
– MySQL商用版のAudit plugin(MySQL5.6以降),
McAfee MySQL Audit Plugin(MySQL 5.1以降,
MariaDB 5.5以降)
セキュリティ(2)
• 暗号化
– 基本暗号化・複合化の関数
– PostgreSQL9.3: 透過的暗号化(TDE)モジュー
ル(by NEC)
– MySQL 5.7.12以降: InnoDBテーブルスペース
暗号化
クラウド(1)
• MySQLやPostgreSQLはよく使われている
– 素のバージョンが使われていたが。。。。
• クラウドのメリットをいかすための、独自の拡
張が行われている
クラウド(2)
• MySQL互換
– Amazon Aurora
• 高可用性と耐久性、スケーラビリティ
• MySQL 5.6互換
• PostgreSQL互換
– Amazon Redshift
• ペタバイト級のデータを扱えるデータウエアハウス
– Amazon Aurora with PostgreSQL
Compatibility
• プレビューで利用可能。PostgreSQL 9.6互換
OSS RDBMS
御三家最新版バージョン別機能
• Firebird : 3.0
• MySQL: 5.7
• PostgreSQL: 9.5/9.6
Firebird 3.0の新機能
• 統一バイナリ(CS, SS, SC)
• SS(SuperServer)での真のSMPサポート
• オブジェクト指向C++ APIの提供
• 新しいデータ型(BOOLEAN, IDENTITY)
• SQLパッケージ(一連のSPとファンクションを
まとめたもの)のサポート
• DDLトリガー
• ウインドウ関数のサポート
68
MySQL 5.7新機能
• InnoDBパフォーマンス!
– 本体のパフォーマンスアップ
– 一時テーブルのInnoDB化
• 運用効率化
– オンラインでのデータベースバッファサイズ変更
– オンラインDDLの改善
• FTS (Full Text Search)
• GIS (Boostライブラリ)
• レプリケーションの柔軟な運用 69
MySQL 8.0新機能(?)
• 本日17:15-18:00 同じ506教室にて、
yoku0825さんによる以下のセッションあり。
– ここで聞けるかも 
• 「MySQL 5.7の次のMySQL 8.0はどんなも
のになるだろう」
70
PostgreSQL 9.5
• IMPORT FOREIGN SCHEMA構文
• 行レベルのセキュリティポリシー
• BRINインデックス
• 外部テーブルの継承
• GROUPING SETS, CUBE と ROLLUP
• JSONB更新用のオペレータと機能追加
• INSERT ... ON CONFLICT DO
NOTHING/UPDATE (いわゆる"UPSERT")
• pg_rewind
71
PostgreSQL 9.6
• パラレルクエリ(シーケンシャルスキャン、Nested
Loop 結合、ソート・集約のパラレル実行)に対応。
• VACUUM で XID凍結済みの部分を省略して実行
可能に(XID周回対策)
• 同期スタンバイサーバを同時に複数持てるように。
(9.5までは一台まで)
• 全文検索でフレーズ(隣接した複数語)検索に対応
• postgres_fdw がリモートでの結合、ソート、
UPDATE、DELETE に対応。
多CPUサーバでの性能スケーラビリティが改善。
72
PostgreSQLパラレルクエリ進捗
2013 2014 2015 2016 2017
PostgreSQL 9.3 9.4 9.5 9.6 10.0(予定)
独自の
ワーカプ
ロセス定
義・起動
可能
ワーカプロセ
スの動的起
動。共有メモ
リを動的確保。
ワーカプロ
セスで一
貫した情報
が見られる
機能
【完成】
並列処理
結果をまと
める機能。
並列処理
を意識した
実行計画
の立案機
能
【改善】
インデック
ススキャン、
マージ結
合・ハッ
シュ結合
対応、サブ
クエリ対応
Thanks !
• ご静聴ありがとうございました。
– PotgreSQLは高塚さんや澤田さん、ぬこさんの
資料を参考にさせていただきました。
– SQL標準は土田さんの資料を参考にしました。
• OSS RDBMSは適材適所
– NoSQLとRDBMSも適材適所 
• NoSQL !
– Redis
– Neo4J
• いろいろ使ってみてください!

More Related Content

What's hot

MySQLのNoSQL機能 - MySQL JSON & HTTP Plugin for MySQL
MySQLのNoSQL機能 - MySQL JSON & HTTP Plugin for MySQLMySQLのNoSQL機能 - MySQL JSON & HTTP Plugin for MySQL
MySQLのNoSQL機能 - MySQL JSON & HTTP Plugin for MySQLRyusuke Kajiyama
 
MySQL最新情報 ※2015年9月5日「第1回 関西DB勉強会」での発表資料
MySQL最新情報 ※2015年9月5日「第1回 関西DB勉強会」での発表資料MySQL最新情報 ※2015年9月5日「第1回 関西DB勉強会」での発表資料
MySQL最新情報 ※2015年9月5日「第1回 関西DB勉強会」での発表資料yoyamasaki
 
20150920 中国地方db勉強会
20150920 中国地方db勉強会20150920 中国地方db勉強会
20150920 中国地方db勉強会yoyamasaki
 
20160929 inno db_fts_jp
20160929 inno db_fts_jp20160929 inno db_fts_jp
20160929 inno db_fts_jpyoyamasaki
 
Oracle Database Cloud Service を使ってみよう! 株式会社コーソル 守田 典男
Oracle Database Cloud Service を使ってみよう! 株式会社コーソル 守田 典男Oracle Database Cloud Service を使ってみよう! 株式会社コーソル 守田 典男
Oracle Database Cloud Service を使ってみよう! 株式会社コーソル 守田 典男CO-Sol for Community
 
Oracle SQL Developerを使い倒そう! 株式会社コーソル 守田 典男
Oracle SQL Developerを使い倒そう! 株式会社コーソル 守田 典男Oracle SQL Developerを使い倒そう! 株式会社コーソル 守田 典男
Oracle SQL Developerを使い倒そう! 株式会社コーソル 守田 典男CO-Sol for Community
 
Art of MySQL Replication.
Art of MySQL Replication.Art of MySQL Replication.
Art of MySQL Replication.Mikiya Okuno
 
MySQL 5.7 Technical Update (日本語)
MySQL 5.7 Technical Update (日本語)MySQL 5.7 Technical Update (日本語)
MySQL 5.7 Technical Update (日本語)Shinya Sugiyama
 
最近始めたあなたも今日から語れるようになるMySQLの{概要と最新情報}入門@
最近始めたあなたも今日から語れるようになるMySQLの{概要と最新情報}入門@最近始めたあなたも今日から語れるようになるMySQLの{概要と最新情報}入門@
最近始めたあなたも今日から語れるようになるMySQLの{概要と最新情報}入門@sakaik
 
No sql with mysql cluster (MyNA・JPUG合同DB勉強会)
No sql with mysql cluster (MyNA・JPUG合同DB勉強会)No sql with mysql cluster (MyNA・JPUG合同DB勉強会)
No sql with mysql cluster (MyNA・JPUG合同DB勉強会)Shinya Sugiyama
 
SQL+NoSQL!? それならMySQL Clusterでしょ。
SQL+NoSQL!? それならMySQL Clusterでしょ。SQL+NoSQL!? それならMySQL Clusterでしょ。
SQL+NoSQL!? それならMySQL Clusterでしょ。yoyamasaki
 
[C21] MySQL Cluster徹底活用術 by Mikiya Okuno
[C21] MySQL Cluster徹底活用術 by Mikiya Okuno[C21] MySQL Cluster徹底活用術 by Mikiya Okuno
[C21] MySQL Cluster徹底活用術 by Mikiya OkunoInsight Technology, Inc.
 
[D31] PostgreSQLでスケールアウト構成を構築しよう by Yugo Nagata
[D31] PostgreSQLでスケールアウト構成を構築しよう by Yugo Nagata[D31] PostgreSQLでスケールアウト構成を構築しよう by Yugo Nagata
[D31] PostgreSQLでスケールアウト構成を構築しよう by Yugo NagataInsight Technology, Inc.
 
[OSC 2017 Tokyo/Fall] OSSコンソーシアム DB部会 MySQL 8.0
[OSC 2017 Tokyo/Fall] OSSコンソーシアム DB部会 MySQL 8.0[OSC 2017 Tokyo/Fall] OSSコンソーシアム DB部会 MySQL 8.0
[OSC 2017 Tokyo/Fall] OSSコンソーシアム DB部会 MySQL 8.0Ryusuke Kajiyama
 
MySQL 5.7 InnoDB 日本語全文検索
MySQL 5.7 InnoDB 日本語全文検索MySQL 5.7 InnoDB 日本語全文検索
MySQL 5.7 InnoDB 日本語全文検索yoyamasaki
 
パフォーマンスタブ見れないんですけど!! 株式会社コーソル 河野 敏彦
パフォーマンスタブ見れないんですけど!! 株式会社コーソル 河野 敏彦パフォーマンスタブ見れないんですけど!! 株式会社コーソル 河野 敏彦
パフォーマンスタブ見れないんですけど!! 株式会社コーソル 河野 敏彦CO-Sol for Community
 
20150131 ChugokuDB-Shimane-MySQL
20150131 ChugokuDB-Shimane-MySQL20150131 ChugokuDB-Shimane-MySQL
20150131 ChugokuDB-Shimane-MySQLRyusuke Kajiyama
 
Standard Edition 2でも使えるOracle Database 12c Release 2オススメ新機能
Standard Edition 2でも使えるOracle Database 12c Release 2オススメ新機能Standard Edition 2でも使えるOracle Database 12c Release 2オススメ新機能
Standard Edition 2でも使えるOracle Database 12c Release 2オススメ新機能Ryota Watabe
 

What's hot (18)

MySQLのNoSQL機能 - MySQL JSON & HTTP Plugin for MySQL
MySQLのNoSQL機能 - MySQL JSON & HTTP Plugin for MySQLMySQLのNoSQL機能 - MySQL JSON & HTTP Plugin for MySQL
MySQLのNoSQL機能 - MySQL JSON & HTTP Plugin for MySQL
 
MySQL最新情報 ※2015年9月5日「第1回 関西DB勉強会」での発表資料
MySQL最新情報 ※2015年9月5日「第1回 関西DB勉強会」での発表資料MySQL最新情報 ※2015年9月5日「第1回 関西DB勉強会」での発表資料
MySQL最新情報 ※2015年9月5日「第1回 関西DB勉強会」での発表資料
 
20150920 中国地方db勉強会
20150920 中国地方db勉強会20150920 中国地方db勉強会
20150920 中国地方db勉強会
 
20160929 inno db_fts_jp
20160929 inno db_fts_jp20160929 inno db_fts_jp
20160929 inno db_fts_jp
 
Oracle Database Cloud Service を使ってみよう! 株式会社コーソル 守田 典男
Oracle Database Cloud Service を使ってみよう! 株式会社コーソル 守田 典男Oracle Database Cloud Service を使ってみよう! 株式会社コーソル 守田 典男
Oracle Database Cloud Service を使ってみよう! 株式会社コーソル 守田 典男
 
Oracle SQL Developerを使い倒そう! 株式会社コーソル 守田 典男
Oracle SQL Developerを使い倒そう! 株式会社コーソル 守田 典男Oracle SQL Developerを使い倒そう! 株式会社コーソル 守田 典男
Oracle SQL Developerを使い倒そう! 株式会社コーソル 守田 典男
 
Art of MySQL Replication.
Art of MySQL Replication.Art of MySQL Replication.
Art of MySQL Replication.
 
MySQL 5.7 Technical Update (日本語)
MySQL 5.7 Technical Update (日本語)MySQL 5.7 Technical Update (日本語)
MySQL 5.7 Technical Update (日本語)
 
最近始めたあなたも今日から語れるようになるMySQLの{概要と最新情報}入門@
最近始めたあなたも今日から語れるようになるMySQLの{概要と最新情報}入門@最近始めたあなたも今日から語れるようになるMySQLの{概要と最新情報}入門@
最近始めたあなたも今日から語れるようになるMySQLの{概要と最新情報}入門@
 
No sql with mysql cluster (MyNA・JPUG合同DB勉強会)
No sql with mysql cluster (MyNA・JPUG合同DB勉強会)No sql with mysql cluster (MyNA・JPUG合同DB勉強会)
No sql with mysql cluster (MyNA・JPUG合同DB勉強会)
 
SQL+NoSQL!? それならMySQL Clusterでしょ。
SQL+NoSQL!? それならMySQL Clusterでしょ。SQL+NoSQL!? それならMySQL Clusterでしょ。
SQL+NoSQL!? それならMySQL Clusterでしょ。
 
[C21] MySQL Cluster徹底活用術 by Mikiya Okuno
[C21] MySQL Cluster徹底活用術 by Mikiya Okuno[C21] MySQL Cluster徹底活用術 by Mikiya Okuno
[C21] MySQL Cluster徹底活用術 by Mikiya Okuno
 
[D31] PostgreSQLでスケールアウト構成を構築しよう by Yugo Nagata
[D31] PostgreSQLでスケールアウト構成を構築しよう by Yugo Nagata[D31] PostgreSQLでスケールアウト構成を構築しよう by Yugo Nagata
[D31] PostgreSQLでスケールアウト構成を構築しよう by Yugo Nagata
 
[OSC 2017 Tokyo/Fall] OSSコンソーシアム DB部会 MySQL 8.0
[OSC 2017 Tokyo/Fall] OSSコンソーシアム DB部会 MySQL 8.0[OSC 2017 Tokyo/Fall] OSSコンソーシアム DB部会 MySQL 8.0
[OSC 2017 Tokyo/Fall] OSSコンソーシアム DB部会 MySQL 8.0
 
MySQL 5.7 InnoDB 日本語全文検索
MySQL 5.7 InnoDB 日本語全文検索MySQL 5.7 InnoDB 日本語全文検索
MySQL 5.7 InnoDB 日本語全文検索
 
パフォーマンスタブ見れないんですけど!! 株式会社コーソル 河野 敏彦
パフォーマンスタブ見れないんですけど!! 株式会社コーソル 河野 敏彦パフォーマンスタブ見れないんですけど!! 株式会社コーソル 河野 敏彦
パフォーマンスタブ見れないんですけど!! 株式会社コーソル 河野 敏彦
 
20150131 ChugokuDB-Shimane-MySQL
20150131 ChugokuDB-Shimane-MySQL20150131 ChugokuDB-Shimane-MySQL
20150131 ChugokuDB-Shimane-MySQL
 
Standard Edition 2でも使えるOracle Database 12c Release 2オススメ新機能
Standard Edition 2でも使えるOracle Database 12c Release 2オススメ新機能Standard Edition 2でも使えるOracle Database 12c Release 2オススメ新機能
Standard Edition 2でも使えるOracle Database 12c Release 2オススメ新機能
 

Viewers also liked

Firebird recovery tools and techniques by IBSurgeon
Firebird recovery tools and techniques by IBSurgeonFirebird recovery tools and techniques by IBSurgeon
Firebird recovery tools and techniques by IBSurgeonAlexey Kovyazin
 
Firebird's Big Databases (in English)
Firebird's Big Databases (in English)Firebird's Big Databases (in English)
Firebird's Big Databases (in English)Alexey Kovyazin
 
Understandung Firebird optimizer, by Dmitry Yemanov (in English)
Understandung Firebird optimizer, by Dmitry Yemanov (in English)Understandung Firebird optimizer, by Dmitry Yemanov (in English)
Understandung Firebird optimizer, by Dmitry Yemanov (in English)Alexey Kovyazin
 
Resolving Firebird performance problems
Resolving Firebird performance problemsResolving Firebird performance problems
Resolving Firebird performance problemsAlexey Kovyazin
 

Viewers also liked (7)

Mer modelo entidad relación
Mer   modelo entidad relaciónMer   modelo entidad relación
Mer modelo entidad relación
 
Firebird grupo3
Firebird grupo3Firebird grupo3
Firebird grupo3
 
Firebird recovery tools and techniques by IBSurgeon
Firebird recovery tools and techniques by IBSurgeonFirebird recovery tools and techniques by IBSurgeon
Firebird recovery tools and techniques by IBSurgeon
 
Firebird's Big Databases (in English)
Firebird's Big Databases (in English)Firebird's Big Databases (in English)
Firebird's Big Databases (in English)
 
Understandung Firebird optimizer, by Dmitry Yemanov (in English)
Understandung Firebird optimizer, by Dmitry Yemanov (in English)Understandung Firebird optimizer, by Dmitry Yemanov (in English)
Understandung Firebird optimizer, by Dmitry Yemanov (in English)
 
Firebird v2.1.4.installation guide
Firebird v2.1.4.installation guideFirebird v2.1.4.installation guide
Firebird v2.1.4.installation guide
 
Resolving Firebird performance problems
Resolving Firebird performance problemsResolving Firebird performance problems
Resolving Firebird performance problems
 

Similar to オープンソースRDBMS新機能ランダウンOSC2017TokyoSpring

MySQL 4.0で9年動き続けたサーバを リプレイスしてバージョンアップした話
MySQL 4.0で9年動き続けたサーバを リプレイスしてバージョンアップした話MySQL 4.0で9年動き続けたサーバを リプレイスしてバージョンアップした話
MySQL 4.0で9年動き続けたサーバを リプレイスしてバージョンアップした話Takahiro Okumura
 
さくらのインフラコード
さくらのインフラコードさくらのインフラコード
さくらのインフラコードYukihiko SAWANOBORI
 
Rails SQL Injection Examplesの紹介
Rails SQL Injection Examplesの紹介Rails SQL Injection Examplesの紹介
Rails SQL Injection Examplesの紹介Hiroshi Tokumaru
 
アプリ開発者、DB 管理者視点での Cloud Spanner 活用方法 | 第 10 回 Google Cloud INSIDE Games & App...
アプリ開発者、DB 管理者視点での Cloud Spanner 活用方法 | 第 10 回 Google Cloud INSIDE Games & App...アプリ開発者、DB 管理者視点での Cloud Spanner 活用方法 | 第 10 回 Google Cloud INSIDE Games & App...
アプリ開発者、DB 管理者視点での Cloud Spanner 活用方法 | 第 10 回 Google Cloud INSIDE Games & App...Google Cloud Platform - Japan
 
本当にあった怖い話し Db編
本当にあった怖い話し Db編本当にあった怖い話し Db編
本当にあった怖い話し Db編Oda Shinsuke
 
S2dao Seminar in tripodworks
S2dao Seminar in tripodworksS2dao Seminar in tripodworks
S2dao Seminar in tripodworkstripodworks
 
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
 
開発者なのに運用で手がいっぱい? そんなあなたに贈る、 クラウド時代に最適な OSS の RDBMS ! Azure Database for MySQL...
開発者なのに運用で手がいっぱい? そんなあなたに贈る、 クラウド時代に最適な OSS の RDBMS ! Azure Database for MySQL...開発者なのに運用で手がいっぱい? そんなあなたに贈る、 クラウド時代に最適な OSS の RDBMS ! Azure Database for MySQL...
開発者なのに運用で手がいっぱい? そんなあなたに贈る、 クラウド時代に最適な OSS の RDBMS ! Azure Database for MySQL...Suguru Ito
 
uroboroSQLの紹介 (OSC2017 Nagoya) #oscnagoya
uroboroSQLの紹介 (OSC2017 Nagoya) #oscnagoyauroboroSQLの紹介 (OSC2017 Nagoya) #oscnagoya
uroboroSQLの紹介 (OSC2017 Nagoya) #oscnagoyaKenichi Hoshi
 
MySQL 5.5 Update #denatech
MySQL 5.5 Update #denatechMySQL 5.5 Update #denatech
MySQL 5.5 Update #denatechMikiya Okuno
 
LINE LIFF with Azure ハンズオン資料 - Azure サービス解説
LINE LIFF with Azure ハンズオン資料 - Azure サービス解説LINE LIFF with Azure ハンズオン資料 - Azure サービス解説
LINE LIFF with Azure ハンズオン資料 - Azure サービス解説Kazumi IWANAGA
 
MySQL Cluster7.3 GAリリース記念セミナー! MySQL & NoSQL 圧倒的な進化を続けるMySQLの最新機能!
MySQL Cluster7.3 GAリリース記念セミナー! MySQL & NoSQL 圧倒的な進化を続けるMySQLの最新機能!MySQL Cluster7.3 GAリリース記念セミナー! MySQL & NoSQL 圧倒的な進化を続けるMySQLの最新機能!
MySQL Cluster7.3 GAリリース記念セミナー! MySQL & NoSQL 圧倒的な進化を続けるMySQLの最新機能!yoyamasaki
 
いろいろ考えると日本語の全文検索もMySQLがいいね!
いろいろ考えると日本語の全文検索もMySQLがいいね!いろいろ考えると日本語の全文検索もMySQLがいいね!
いろいろ考えると日本語の全文検索もMySQLがいいね!Kouhei Sutou
 
20170329 D3 DBAが夜間メンテをしなくなった日 発表資料
20170329 D3 DBAが夜間メンテをしなくなった日 発表資料20170329 D3 DBAが夜間メンテをしなくなった日 発表資料
20170329 D3 DBAが夜間メンテをしなくなった日 発表資料dcubeio
 
Webで役立つRDBの使い方
Webで役立つRDBの使い方Webで役立つRDBの使い方
Webで役立つRDBの使い方Soudai Sone
 

Similar to オープンソースRDBMS新機能ランダウンOSC2017TokyoSpring (20)

MySQL 4.0で9年動き続けたサーバを リプレイスしてバージョンアップした話
MySQL 4.0で9年動き続けたサーバを リプレイスしてバージョンアップした話MySQL 4.0で9年動き続けたサーバを リプレイスしてバージョンアップした話
MySQL 4.0で9年動き続けたサーバを リプレイスしてバージョンアップした話
 
さくらのインフラコード
さくらのインフラコードさくらのインフラコード
さくらのインフラコード
 
Rails SQL Injection Examplesの紹介
Rails SQL Injection Examplesの紹介Rails SQL Injection Examplesの紹介
Rails SQL Injection Examplesの紹介
 
アプリ開発者、DB 管理者視点での Cloud Spanner 活用方法 | 第 10 回 Google Cloud INSIDE Games & App...
アプリ開発者、DB 管理者視点での Cloud Spanner 活用方法 | 第 10 回 Google Cloud INSIDE Games & App...アプリ開発者、DB 管理者視点での Cloud Spanner 活用方法 | 第 10 回 Google Cloud INSIDE Games & App...
アプリ開発者、DB 管理者視点での Cloud Spanner 活用方法 | 第 10 回 Google Cloud INSIDE Games & App...
 
本当にあった怖い話し Db編
本当にあった怖い話し Db編本当にあった怖い話し Db編
本当にあった怖い話し Db編
 
S2dao Seminar in tripodworks
S2dao Seminar in tripodworksS2dao Seminar in tripodworks
S2dao Seminar in tripodworks
 
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
 
開発者なのに運用で手がいっぱい? そんなあなたに贈る、 クラウド時代に最適な OSS の RDBMS ! Azure Database for MySQL...
開発者なのに運用で手がいっぱい? そんなあなたに贈る、 クラウド時代に最適な OSS の RDBMS ! Azure Database for MySQL...開発者なのに運用で手がいっぱい? そんなあなたに贈る、 クラウド時代に最適な OSS の RDBMS ! Azure Database for MySQL...
開発者なのに運用で手がいっぱい? そんなあなたに贈る、 クラウド時代に最適な OSS の RDBMS ! Azure Database for MySQL...
 
uroboroSQLの紹介 (OSC2017 Nagoya) #oscnagoya
uroboroSQLの紹介 (OSC2017 Nagoya) #oscnagoyauroboroSQLの紹介 (OSC2017 Nagoya) #oscnagoya
uroboroSQLの紹介 (OSC2017 Nagoya) #oscnagoya
 
Babelfish Compatibility
Babelfish CompatibilityBabelfish Compatibility
Babelfish Compatibility
 
MySQL 5.5 Update #denatech
MySQL 5.5 Update #denatechMySQL 5.5 Update #denatech
MySQL 5.5 Update #denatech
 
LINE LIFF with Azure ハンズオン資料 - Azure サービス解説
LINE LIFF with Azure ハンズオン資料 - Azure サービス解説LINE LIFF with Azure ハンズオン資料 - Azure サービス解説
LINE LIFF with Azure ハンズオン資料 - Azure サービス解説
 
MySQL Cluster7.3 GAリリース記念セミナー! MySQL & NoSQL 圧倒的な進化を続けるMySQLの最新機能!
MySQL Cluster7.3 GAリリース記念セミナー! MySQL & NoSQL 圧倒的な進化を続けるMySQLの最新機能!MySQL Cluster7.3 GAリリース記念セミナー! MySQL & NoSQL 圧倒的な進化を続けるMySQLの最新機能!
MySQL Cluster7.3 GAリリース記念セミナー! MySQL & NoSQL 圧倒的な進化を続けるMySQLの最新機能!
 
いろいろ考えると日本語の全文検索もMySQLがいいね!
いろいろ考えると日本語の全文検索もMySQLがいいね!いろいろ考えると日本語の全文検索もMySQLがいいね!
いろいろ考えると日本語の全文検索もMySQLがいいね!
 
20170329 D3 DBAが夜間メンテをしなくなった日 発表資料
20170329 D3 DBAが夜間メンテをしなくなった日 発表資料20170329 D3 DBAが夜間メンテをしなくなった日 発表資料
20170329 D3 DBAが夜間メンテをしなくなった日 発表資料
 
MongoDB
MongoDBMongoDB
MongoDB
 
Gorinphp0729
Gorinphp0729Gorinphp0729
Gorinphp0729
 
Gorinphp0729
Gorinphp0729Gorinphp0729
Gorinphp0729
 
My sql casual12lt
My sql casual12ltMy sql casual12lt
My sql casual12lt
 
Webで役立つRDBの使い方
Webで役立つRDBの使い方Webで役立つRDBの使い方
Webで役立つRDBの使い方
 

オープンソースRDBMS新機能ランダウンOSC2017TokyoSpring