75
オープンソース・データベースの 最新事情@JustTechTalk#06 20160527日本オラクル株式会社 MySQL Global Business Unit テクニカルアナリスト 木村明治(KIMURA, Meiji)

オープンソース・データベースの最新事情

Embed Size (px)

Citation preview

Page 1: オープンソース・データベースの最新事情

オープンソース・データベースの 最新事情@JustTechTalk#06

2016年05月27日 日本オラクル株式会社 MySQL Global Business Unit テクニカルアナリスト 木村明治(KIMURA, Meiji)

Page 2: オープンソース・データベースの最新事情

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

免責事項

•本プレゼンテーションにおいて示されている見解は、私自身の見解であって、私の所属する会社・団体の見解を必ずしも反映したものではありません。ご了承ください。

Page 3: オープンソース・データベースの最新事情

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

アジェンダ

•自己紹介

•私とRDBMS, 私と??

• オープンソースRDBMS御三家の紹介

•都市伝説

• イマドキ! の機能 – VLDB、NoSQL、GIS、便利なSQL、HA、組込、ツール、セキュリティ、クラウド、etc

• オープンソースRDBMS御三家の次期版

Page 4: オープンソース・データベースの最新事情

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

自己紹介

• 日本オラクルにてMySQL技術サポートを行っています。 – 漢と書いてオトコの同僚。 – 漢は「理論から学ぶデータベース実践入門 ~ リレーショナルモデルによる効率的なSQL」の著者

• DB関連のブログや書籍を書いてます。 – キムラデービーブログ

– 「おうちで学べるデータベースのきほん」 • ミックさんの知り合い。外人じゃないよ。

• MyNA会員、Neo4Jユーザ会会員

• Firebird日本ユーザ会の理事長

Page 5: オープンソース・データベースの最新事情

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

私とRDBMS

•新卒にて日立関連会社に就職。HiRDBの開発に関わる。

•転職して独立系ソフトウエアベンダーに –デスクトップRDBMSの開発に関わる。OCI/ODBCを利用したOracle/SQL Server, Accessドライバを作成。

–製品バンドル用のRDBMSとしてPostgreSQL/MySQL/InterBase Open Edition(Firebirdの前身)を評価。InterBase採用。

–製品PMとして、独自DBからMySQLへの移行。

Page 6: オープンソース・データベースの最新事情

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

私と某氏(同級生)

•実は小学生くらいからゲームがやりたくてマイコンを独学

•高校生になったタイミングでNEC-PC6001(愛称パピコン)を購入、遊びはじめる。とりあえずゲームをつくる。

• あまりプログラミングは得意ではなかったので、同級生にプログラミングを押し付けて、主にグラフィックと音楽を担当。

•結局ゲームで一攫千金できなかったため、まともな社会人にもどる。

•社会人になってプログラミングするも、やはり得意ではなかったため中間管理職になる。もっとむいてなかったので、無職のあと自営業、MySQL AB日本支社に参加→サンマイクロシステムズ,Oracleによる統合により現職。

Page 7: オープンソース・データベースの最新事情

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

同級生と昔作った代表的なゲーム

7

Page 8: オープンソース・データベースの最新事情

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | 8

Page 9: オープンソース・データベースの最新事情

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

OSS RDBMS御三家の紹介

•日本ではPostgreSQL, MySQLが有名ですが、ロシア・ヨーロッパ・南米ではFirebirdも有名です。

• P M F でオープンソースRDBMS御三家と呼びましょう。(と私が提唱してました

•詳しく話しているとそれだけで一時間かかるので「オープンソースDBの成熟度を計る」で検索してみてください。

Page 10: オープンソース・データベースの最新事情

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

オープンソース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

Page 11: オープンソース・データベースの最新事情

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

都市伝説

• MySQL都市伝説 –バイナリカラムのバックアップがとれない。

–サブクエリがない。トランザクションがない

– MyISAMがInnoDBよりはやい、機能が多い。

• PostgreSQL都市伝説 – Windows版がない。

–バキューム必要で動作時「世界が止まる」。

– MySQLより遅い

• Firebird 都市伝説 –ブラウザ

–なにそれおいしいの?

Page 12: オープンソース・データベースの最新事情

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

イマドキ! の機能

•都市伝説はすでに解消され、オープンソースRDBMSはイマドキ!の機能を実装・提供しはじめる。

• イマドキ! の機能 – VLDB、NoSQL、GIS、便利なSQL、HA、組込、ツール、クラウド

Page 13: オープンソース・データベースの最新事情

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

VLDB

• VLDB(Very Large Data Base)

–どのくらいがVery Largeなのかは時代による。

•パーティショニング機能 –巨大な表をキーを元に水平分割する

– PostgreSQL 8.0から

– MySQL 5.1から

• マテリアライズドビュー –ビューを実体化してパフォーマンスをあげる

– PostgreSQL9.3から

Page 14: オープンソース・データベースの最新事情

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

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

Page 15: オープンソース・データベースの最新事情

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

GIS

• GIS(Geographic Information System:地理情報システム)

• PostgreSQL拡張のPostGISがデファクト。 – PostGIS リリース1.0.0RC1(2005)->1.5.0(2010)

–現在は2.2 が最新。2.3を開発中 • postgis-2.2.2.tar.gz pdf html (Release Notes)

• postgis-2.1.8.tar.gz pdf html (Release Notes)

• postgis-2.0.7.tar.gz pdf html (Release Notes)

• postgis-1.5.8.tar.gz pdf html (Release Notes)

• MySQLは4.xで初期実装したものの、その後長い間進展なし。 – MySQL 5.7で生まれ変わった(re-born)

–拡張ではなく本体組み込み

Page 16: オープンソース・データベースの最新事情

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

MySQL 5.7 : 生まれ変わったGIS

• GIS チーム専任の専門家を雇用

• 古いアルゴリズムと関連するコードの多くを破棄

– FOSS Boost.Geometry library (1.58)で置き換え

• OGC 空間関数サポートを完了

–標準化されたnamespace

• ネイティブのGEOMETRYデータ型をInnoDBでサポート

– SPATIAL INDEX サポートをInnoDB に追加(R-treeを利用)

• Geohash と GeoJSON のサポートを追加

• ヘルパー関数の追加: ST_Distance_Sphere(), ST_MakeEnvelope(), ST_IsValid(), ST_Validate(), ST_Simplify, …

16

Page 17: オープンソース・データベースの最新事情

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

便利なSQL

• もともとMySQLでは便利な独自SQLが多々ある –他のRDBMSやSQL標準にも影響

• PostgreSQLはもともと積極的にSQL標準をサポートしてきた。 –最近は他のRDBMSの便利な機能も実装

• FirebirdもSQL標準には追随している

Page 18: オープンソース・データベースの最新事情

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

SQL標準(SQL:1999より後)

• SQL:2003, 2008, 2011, 2012

– SQL:2003 • XML関連機能 (SQL/XML)

• ウインドウ関数

• シーケンスジェネレータ

• 新しいカラム型: auto-generated values と identity-columns

• MERGE ステートメント

• SQL/MED, SQL/MM

• TABLESAMPLE

• Etc…

18

Page 19: オープンソース・データベースの最新事情

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

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により開発。

19

Page 20: オープンソース・データベースの最新事情

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

SQL:2003 SQL/MM

•全文検索(日本語)

• PostgreSQL/MySQL(5.6まで)/Firebird –本体にはなし。

• MySQL 5.7からInnoDBのFTS(Full Text Search)

• Groonga

– MySQLバインディング: Mroonga(むるーんが)

– PostgreSQLバインディング: PGroonga(ぴーじーるんが)

20

Page 21: オープンソース・データベースの最新事情

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

SQL: 2008

• MERGE と DIAGNOSTIC の拡張

• TRUNCATE TABLE ステートメント

• CASEのカンマ区切りWHEN句

• INSTEAD OF データベーストリガー

• partitioned JOINテーブル,

• いろいろなXQuery regular expression/pattern-matching 機能のサポート

•導出カラム名の拡張

21

Page 22: オープンソース・データベースの最新事情

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

SQL: 2011

• Temporal データベース

• その他しみじみとした機能改善 – MERGE内でのDELETE

–パイプラインDML

– CALL文の拡張

– Limited fetch

– Collection type拡張

– Non-enforcedテーブル制約

– Window関数の拡張、等

22

Page 23: オープンソース・データベースの最新事情

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

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にて利用できます。

23

Page 24: オープンソース・データベースの最新事情

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

SQL:2012/RPR

• RPR: Row Pattern Recognition

– 2008年に提出されたプロポーザルの規格化

• MATCH_RECOGNIZE句

• Oracle Database 12cのみ実装

•詳細や利用例はこれから順に日本語になっていくと思います。

24

Page 25: オープンソース・データベースの最新事情

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

近年SQL標準の最大の功績といえば

•CASE式 と •ウインドウ関数

25

Page 26: オープンソース・データベースの最新事情

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

最近のロードマップ 2010 2011 2012 2013 2014 2015~現在

PostgreSQL 9.0 9.1 9.2 9.3 9.4 9.5

MySQL 5.5 5.6 5.7 DMR 5.7

Firebird 2.5 3.0 Beta1 3.0

SQL標準 SQL:2011 SQL:2012/RPR

(SQL:2016 策定中?)

Page 27: オープンソース・データベースの最新事情

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | 27

安定版 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ロードマップ(2016まで)

Firebird

1.0

2008年

Firebird

2.5

2010年

現在最新版

Firebird

2.1

Page 28: オープンソース・データベースの最新事情

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | 28

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)

Page 29: オープンソース・データベースの最新事情

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | 29

対照表と差分表をMERGE

•対象表 差分表

1 みやはら 2 きむら 3 かまたき

id name id name 2 加藤 4 小笠原

1 みやはら 2 きむら 3 かまたき 2 加藤

4 小笠原

Page 30: オープンソース・データベースの最新事情

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | 30

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;

•最新の環境では(1)を使ってください。

Page 31: オープンソース・データベースの最新事情

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | 31

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からサポート)もしくはトリガで。。。

Page 32: オープンソース・データベースの最新事情

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | 32

レコードを差分追加する (重複は無視)

•対象表 差分表

1 みやはら 2 きむら 3 かまたき

id name id name 2 加藤 4 小笠原

1 みやはら 2 きむら 3 かまたき 4 小笠原

Page 33: オープンソース・データベースの最新事情

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | 33

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)

Page 34: オープンソース・データベースの最新事情

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | 34

MySQLの場合

• INSERT IGNOREを使う。

• INSERT IGNORE shain(id, name) select id, name FROM m_shain;

•以前はINSERTのデフォルト動作がIGNOREだったが、最新のMySQLでは明示的に指定する必要有り。

Page 35: オープンソース・データベースの最新事情

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | 35

PostgreSQLの場合

• これも9.5以降

• “DO アクション”でアクションにNOTHING

• INSERT INTO shain(id, name) select id, name FROM m_shain ON CONFLICT ON CONSTRAINT 制約名 DO NOTHING;

Page 36: オープンソース・データベースの最新事情

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | 36

CTE(共通表式)

•共通表式は、ひとつのSQL文中に限り「何回でも」参照可能なローカルな表のことです。例えば、以下のようなSQLがあるとします。 – SELECT ID, NAME FROM (副問い合わせ);

•共通表式で書き直すと以下のようになります。

WITH 副問い合わせ名 AS

(

副問い合わせ内容

)

SELECT ID, NAME FROM 副問い合わせ名

Page 37: オープンソース・データベースの最新事情

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | 37

共通表式の例

WITH T AS ( SELECT B.部署名, E.社員名, E.給与 FROM 部署 B, 社員 E WHERE B.ID = E.ID ) SELECT * FROM T WHERE T.給与 > 200000

Page 38: オープンソース・データベースの最新事情

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | 38

再帰クエリ

•共通表形式を使う一番の利点は、これを用いて再帰的なSQL文を実行できること。

•次ページのような社員表があるとすると、各社員はユニークな社員番号を持ち、mgridに直属の上司の社員番号が格納されている。社長‘みやはら’は上司がいないため、mgridはNULLとなる。

• このような形式は隣接リスト(Adjacency List)モデルといい階層構造をRDBで利用するのによく使われます。

Page 39: オープンソース・データベースの最新事情

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | 39

再帰クエリ

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);

Page 40: オープンソース・データベースの最新事情

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | 40

階層構造を隣接リストで表現

1 みやはら

2 きむら 3 かまたき

4 加藤 5 林

6 三浦

Page 41: オープンソース・データベースの最新事情

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | 41

再帰クエリ

•通常のSQL文では、直属の部下を求めるのは簡単ですが、直接、間接(部下の部下)を一度に求めるのは困難でした。これを再帰的なSQL文で検索できます。再帰的なSQL文は以下のように記述できます。

WITH RECURSIVE 共通表名 AS (

初期集合を求めるSELECT

UNION ALL

再帰集合を求めるSELECT

) SELECT * FROM 共通表名

Page 42: オープンソース・データベースの最新事情

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | 42

再帰クエリ

•例) きむらの直接・間接の部下を求める。 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 ==================== きむら 加藤 林 三浦

Page 43: オープンソース・データベースの最新事情

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | 43

再帰クエリ

• このような階層的なデータを扱うSQL拡張は、各商用データベースでは必要に応じて行われてきました。

•例えば、Oracleの場合、CONNECT BYという独自拡張で、上記と同様の内容を以下のSQL文で得ることができます。 – SELECT name FROM shain START WITH name = 'きむら' CONNECT BY PRIOR empid =

mgrid;

Page 44: オープンソース・データベースの最新事情

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

CTE・再帰クエリ(PostgreSQL)

• 8.4でサポート

• 9.1で拡張。WITH (...) の中や末尾のクエリにて INSERT/UPDATE/DELETE ができるように。 – MERGE 文はPostgreSQLは未サポートですが、UPDATE できなかったキーを持つ行のみ後から INSERT を行うと、他DBの MERGE や REPLACE 文と同等の機能をCTEでも実現できます。

44

Page 45: オープンソース・データベースの最新事情

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

CTE・再帰クエリ(Firebird/MySQL)

• Firebirdは2.1からCTE・再帰クエリをサポート

• MySQL

– CTEやCTEを使った再帰クエリの機能はない。

–次に紹介するウインドウ関数的なものもない。

45

Page 46: オープンソース・データベースの最新事情

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | 46

順位の簡単な求め方

• SQLパズル的なものはいろいろあれど。

• ウインドウ関数 – RANK()

– DENSE_RANK()

• オープンソースRDBMSではPostgreSQL以外(8.4以降で対応)まだ対応が遅れ気味「だった」 – Firebirdは3.0で対応 !

– MariaDB(MySQLからのフォーク)は、次期版10.2で対応(現在アルファ版)

Page 47: オープンソース・データベースの最新事情

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

HA(High Availability)

• レプリケーション – MySQLの代名詞。バージョン3.xよりサポート

• 5.5で準同期。5.6でGTID対応。

– PostgreSQLは外部ツール(pg-pool, slony)で従来対応していたが、バージョン9.0から本体にレプリケーションの機能が実装された(ストリーミング・レプリケーション)

– Firebirdは別途市販されているIB-Replicatorで対応。

–参照の負荷分散や、マスターがダウンしたときのスレーブ昇格など。

Page 48: オープンソース・データベースの最新事情

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

MySQLのレプリケーション • MySQL 3.xの頃から標準搭載

• ユーザの自由度が高く柔軟な構成が可能

• 基本非同期、文ベースのレプリケーションだったが、行ベースや準同期の機能がつき、GTIDトランザクション、クラッシュセーフのレプリケーション、スレーブでのマルチスレッドでの実行、遅延レプリケーション、マルチマスタなど、想像力の限り(?) の構成が可能。。。。

Page 49: オープンソース・データベースの最新事情

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

レプリケーションとは?

• レプリケーションは一つのMySQLデータベースサーバ(マスター)から一つ以上のMySQLデータベースサーバにデータを複製(レプリケート)します。

Master Slave

binlog relay log

Page 50: オープンソース・データベースの最新事情

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

バイナリログ • マスターで複数の接続で並列で行われた更新をcommit順にシリアルに並べています。

Master Slave

binlog relay log

time

↑ SQLスレッドでシリアルに実行

commit

commit

commit

rollback

Page 51: オープンソース・データベースの最新事情

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

タイプとフォーマット

• タイプ:

–非同期 – マスターから更新を受け取るために、スレーブはずっと接続しておく必要がない。

–準同期 – マスターからスレーブのうち最低一つがコミットをリレーログに書き込んだことを確認する。

– (完全)同期 –全てのスレーブがコミットをデータベースにまで書込んだことを確認する->MySQLにはない。

• フォーマット:

–文ベース – SQL文をマスターからスレーブに伝搬する

–行ベース – 各行の変更をマスターからスレーブに伝搬

– Mixed – 文ベースと行ベースの混合

Page 52: オープンソース・データベースの最新事情

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

MySQLレプリケーションの短所?

•真の高可用性(High Availability)ではない – システムダウンの際データがロストする

一つ以上のスレーブのフェイルオーバー/フェイルバックが複雑

リカバリしたマスターはバイナリログ(binlog)に記録されなかった変更が欠損する

スレーブはマスターからのタイムラグがある

Page 53: オープンソース・データベースの最新事情

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

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)

Page 54: オープンソース・データベースの最新事情

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

レプリケーションの利用法

• 高可用性(High Availability) (フェイルオーバー)

• スケーラビリティ – スケールアウト

• データセキュリティ/バックアップ

• 分析

• 長距離間のデータ配布

• MySQLのより新しいバージョンをスレーブとして追加して新バージョンの既存データでの動作確認

Page 55: オープンソース・データベースの最新事情

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

レプリケーションアーキテクチャの基本

Master Slave

binlog

relay log

Clients

I/O Thread

SQL Thread

1

2

dump thread

3 4

5

Page 56: オープンソース・データベースの最新事情

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

構成例: マスターと三つのスレーブ

Master

App/Web Server

Slaves Clients

Writes

Reads

Page 57: オープンソース・データベースの最新事情

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

レプリケーションのトポロジ

Single

Multiple

Chain Circular

Multi - Circular Multi - Master

Multi-MasterやCircular構成は運用や障害の対処が難しい事に注意が必要

Page 58: オープンソース・データベースの最新事情

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

HA(Cluster)

• クラッシュセーフであれば市販のクラスタソフトウエアで対応できる –共有ディスクでActive/Standby

– DRBDでActive/Standby

• MySQLではストレージエンジンとしてNDBを利用し、NDB用に拡張したMySQL本体(mysqld)を含めてMySQL Clusterとして提供

• PostgreSQLではPostgre-XC, Postgre-XL, Postgre-XC2などの開発が続く。。。

• Firebirdは….聞かないでください。。。。

Page 59: オープンソース・データベースの最新事情

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

MySQL Cluster: Overview

• 自動シャーディング、マルチマスター

• ACID 準拠のトランザクション, OLTP + Real-Time Analytics 読込み/書込み処理

に対する高い拡張性

• シェアードナッシング、単一障害点無し

• 自動修復 + オンラインオペレーション 99.999% の高可用性

• オープンソース + 商用版

• コモディディハードウェア + 充実した管理ツール、監視ツール 低い TCO

• Key/Value + SQL の柔軟性

• SQL + Memcached + JavaScript + Java + JPA + HTTP/REST & C++ SQL + NoSQL

• インメモリデータベース + ディスクデータ

• 非常に低いレイテンシ、短いアクセス時間 リアルタイム

Page 60: オープンソース・データベースの最新事情

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | 60

OSSDBの二つのグループ

組み込みから

ミドルレンジまでの機能強化

Firebird

エンタープライズ向けの

機能強化

MySQL, PostgreSQL

商用データベースエンタープライズ

規模

ミドルレンジは用途によりどちらのグループでもOK

Page 61: オープンソース・データベースの最新事情

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

組み込み

• FirebirdとMySQLは組み込み用のEmbedded libraryが提供されている

• FirebirdはDBが単一ファイル、ライセンスも緩やかなので組み込みやすい。 – LibreOffice Baseでは4.2からFirebirdのEmbedded版が使えるようになり、4.3からは単純にBaseを起動するとデータベースウィザードが起動し指定できるように!

– LimbreOffice 4.3からFirebirdを選択することができましたが、昨年末時点の最新版5.0.x系列(2015-12-25時点では5.0.4)では残念ながらまた「実験的な機能」になってしまったようです。起動後すぐには選択できませんが、起動後以下の設定をすると次回から選択利用できるようになります。

オプション - LibreOffice - 詳細 実験的(不安定)なオプション 実験的な機能を有効にする(B)

61

Page 62: オープンソース・データベースの最新事情

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

ツール

• Firebird

–市販のGUIツール。IBExpert , Database Workbench

• MySQL

– MySQL Utilities, MySQL Fabric, MySQL Workbench

– MySQL商用版にのみ含まれるものもあり

– Percona Tools for MySQL, MHA

– Visual StudioとTools, Connector/Netでストアドプロシジャのデバッグが可能

• PostgreSQL

– Contribに含まれるツール。PotgreSQL Toolkit

– PL/pgSQLデバッガー(Enterprise DB)

Page 63: オープンソース・データベースの最新事情

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

セキュリティ

•権限の強化・細分化 – PostgreSQLのSE-PostgreSQL(contribのsepgsqlモジュール)や本体の機能強化

•監査(Audit) – Firebird 2.5からのAudit log

– MySQL商用版のAudit plugin(MySQL5.6以降), McAfee MySQL Audit Plugin(MySQL 5.1以降)

•暗号化

–基本暗号化・複合化の関数

– PostgreSQL9.3: 透過的暗号化(TDE)モジュール(by NEC)

– MySQL 5.7.12: InnoDBテーブルスペース暗号化

Page 64: オープンソース・データベースの最新事情

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

クラウド

• MySQLやPostgreSQLはよく使われている –素のバージョンが使われていたが。。。。

• クラウドのメリットをいかすための、独自の拡張が行われている

• MySQL互換のRDS for Aurora –高可用性と耐久性、スケーラビリティ

–このセッションのあとAWSの方から直々に

• PostgreSQL互換のAmazon Redshift –ペタバイト級のデータを扱えるデータウエアハウス

Page 65: オープンソース・データベースの最新事情

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

OSS RDBMS御三家バージョン別機能

• Firebird : 3.0

• MySQL: 5.7

• PostgreSQL: 9.4/9.5

Page 66: オープンソース・データベースの最新事情

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

Firebird 3.0の新機能

•統一バイナリ(CS, SS, SC)

• SS(SuperServer)での真のSMPサポート

• オブジェクト指向C++ APIの提供

•新しいデータ型(BOOLEAN, IDENTITY)

• SQLパッケージ(一連のSPとファンクションをまとめたもの)のサポート

• DDLトリガー

• Window関数のサポート

66

Page 67: オープンソース・データベースの最新事情

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

MySQL 5.7新機能

• InnoDBパフォーマンス! –本体のパフォーマンスアップ

–一時テーブルのInnoDB化

•運用効率化 –オンラインでのデータベースバッファサイズ変更

–オンラインDDLの改善

• FTS (Full Text Search)

• GIS (Boostライブラリ)

• レプリケーションの柔軟な運用

67

Page 68: オープンソース・データベースの最新事情

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

PostgreSQL 9.4

• マテリアライズドビューの改善

• Logical Decoding

• Background Worker

• JSONB(バイナリ型JSON)のサポート

• postgresql.confへのSQLアクセス

• GIN Indexesのコンパクト化、高速化

• WALのパフォーマンス改善

• Streaming Replicationへのdelayオプション実装

68

Page 69: オープンソース・データベースの最新事情

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

PostgreSQL 9.5

• IMPORT FOREIGN SCHEMA構文

•行レベルのセキュリティポリシー

• BRINインデックス

•外部テーブルの継承

• GROUPING SETS, CUBE と ROLLUP

• JSONB更新用のオペレータと機能追加

• INSERT ... ON CONFLICT DO NOTHING/UPDATE (いわゆる"UPSERT")

• pg_rewind

69

Page 70: オープンソース・データベースの最新事情

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

Thanks !

• ご静聴ありがとうございました。

• OSS RDBMSは適材適所 – NoSQLとRDBMSも適材適所

• NoSQL !

– Redis

– Neo4J

• いろいろ使ってみてください!

Page 71: オープンソース・データベースの最新事情

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

宣伝

• おうちで学べるデータベースのきほん – DBの初心者はこちらをどうぞ。

–増刷出来(パチパチ)

–アマゾンでポチるか、じゃんけんに勝つ

–ハッシュタグは

#ouchidb 71

Page 72: オープンソース・データベースの最新事情

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

Page 73: オープンソース・データベースの最新事情

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. | 73

Page 74: オープンソース・データベースの最新事情

Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |

Page 75: オープンソース・データベースの最新事情