SlideShare una empresa de Scribd logo
1 de 75
Descargar para leer sin conexión
オープンソース・データベースの
最新事情@JustTechTalk#06
2016年05月27日
日本オラクル株式会社
MySQL Global Business Unit
テクニカルアナリスト 木村明治(KIMURA, Meiji)
Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |
免責事項
• 本プレゼンテーションにおいて示されている見解は、私自身の見解であっ
て、私の所属する会社・団体の見解を必ずしも反映したものではありませ
ん。ご了承ください。
Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |
アジェンダ
• 自己紹介
• 私とRDBMS, 私と??
• オープンソースRDBMS御三家の紹介
• 都市伝説
• イマドキ! の機能
– VLDB、NoSQL、GIS、便利なSQL、HA、組込、ツール、セキュリティ、クラウド、etc
• オープンソースRDBMS御三家の次期版
Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |
自己紹介
• 日本オラクルにてMySQL技術サポートを行っています。
– 漢と書いてオトコの同僚。
– 漢は「理論から学ぶデータベース実践入門 ~
リレーショナルモデルによる効率的なSQL」の著者
• DB関連のブログや書籍を書いてます。
– キムラデービーブログ
– 「おうちで学べるデータベースのきほん」
• ミックさんの知り合い。外人じゃないよ。
• MyNA会員、Neo4Jユーザ会会員
• Firebird日本ユーザ会の理事長
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への移行。
Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |
私と某氏(同級生)
• 実は小学生くらいからゲームがやりたくてマイコンを独学
• 高校生になったタイミングでNEC-PC6001(愛称パピコン)を購入、遊びはじ
める。とりあえずゲームをつくる。
• あまりプログラミングは得意ではなかったので、同級生にプログラミングを
押し付けて、主にグラフィックと音楽を担当。
• 結局ゲームで一攫千金できなかったため、まともな社会人にもどる。
• 社会人になってプログラミングするも、やはり得意ではなかったため中間
管理職になる。もっとむいてなかったので、無職のあと自営業、MySQL AB
日本支社に参加→サンマイクロシステムズ,Oracleによる統合により現職。
Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |
同級生と昔作った代表的なゲーム
7
Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | 8
Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |
OSS RDBMS御三家の紹介
• 日本ではPostgreSQL, MySQLが有名ですが、ロシア・ヨーロッパ・南米では
Firebirdも有名です。
• P M F でオープンソースRDBMS御三家と呼びましょう。(と私が提唱してまし
た 
• 詳しく話しているとそれだけで一時間かかるので「オープンソースDBの成
熟度を計る」で検索してみてください。
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
Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |
都市伝説
• MySQL都市伝説
– バイナリカラムのバックアップがとれない。
– サブクエリがない。トランザクションがない
– MyISAMがInnoDBよりはやい、機能が多い。
• PostgreSQL都市伝説
– Windows版がない。
– バキューム必要で動作時「世界が止まる」。
– MySQLより遅い
• Firebird 都市伝説
– ブラウザ
– なにそれおいしいの?
Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |
イマドキ! の機能
• 都市伝説はすでに解消され、オープンソースRDBMSはイマドキ!の機能を
実装・提供しはじめる。
• イマドキ! の機能
– VLDB、NoSQL、GIS、便利なSQL、HA、組込、ツール、クラウド
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から
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
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)
– 拡張ではなく本体組み込み
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
Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |
便利なSQL
• もともとMySQLでは便利な独自SQLが多々ある
– 他のRDBMSやSQL標準にも影響
• PostgreSQLはもともと積極的にSQL標準をサポートしてきた。
– 最近は他のRDBMSの便利な機能も実装
• FirebirdもSQL標準には追随している
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
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
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
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
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
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
Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |
SQL:2012/RPR
• RPR: Row Pattern Recognition
– 2008年に提出されたプロポーザルの規格化
• MATCH_RECOGNIZE句
• Oracle Database 12cのみ実装
• 詳細や利用例はこれから順に日本語になっていくと思います。
24
Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |
近年SQL標準の最大の功績といえば
•CASE式
と
•ウインドウ関数
25
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/RP
R
(SQL:2016 策
定中?)
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
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)
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 小笠原
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)を使ってください。
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からサポート)もしくはトリガ
で。。。
Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | 32
レコードを差分追加する
(重複は無視)
• 対象表 差分表
1 みやはら
2 きむら
3 かまたき
id name id name
2 加藤
4 小笠原
1 みやはら
2 きむら
3 かまたき
4 小笠原
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)
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では明
示的に指定する必要有り。
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;
Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | 36
CTE(共通表式)
• 共通表式は、ひとつのSQL文中に限り「何回でも」参照可能なローカルな
表のことです。例えば、以下のようなSQLがあるとします。
– SELECT ID, NAME FROM (副問い合わせ);
• 共通表式で書き直すと以下のようになります。
WITH 副問い合わせ名 AS
(
副問い合わせ内容
)
SELECT ID, NAME FROM 副問い合わせ名
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
Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | 38
再帰クエリ
• 共通表形式を使う一番の利点は、これを用いて再帰的なSQL文を実行で
きること。
• 次ページのような社員表があるとすると、各社員はユニークな社員番号を
持ち、mgridに直属の上司の社員番号が格納されている。社長‘みやはら’
は上司がいないため、mgridはNULLとなる。
• このような形式は隣接リスト(Adjacency List)モデルといい階層構造をRDB
で利用するのによく使われます。
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);
Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | 40
階層構造を隣接リストで表現
1 みやはら
2 きむら 3 かまたき
4 加藤 5 林
6 三浦
Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | 41
再帰クエリ
• 通常のSQL文では、直属の部下を求めるのは簡単ですが、直接、間接(部
下の部下)を一度に求めるのは困難でした。これを再帰的なSQL文で検索
できます。再帰的なSQL文は以下のように記述できます。
WITH RECURSIVE 共通表名 AS (
初期集合を求めるSELECT
UNION ALL
再帰集合を求めるSELECT
) SELECT * FROM 共通表名
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
====================
きむら
加藤
林
三浦
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;
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
Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |
CTE・再帰クエリ(Firebird/MySQL)
• Firebirdは2.1からCTE・再帰クエリをサポート
• MySQL
– CTEやCTEを使った再帰クエリの機能はない。
– 次に紹介するウインドウ関数的なものもない。
45
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で対応(現在アルファ版)
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で対応。
– 参照の負荷分散や、マスターがダウンしたときのスレーブ昇格など。
Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |
MySQLのレプリケーション
• MySQL 3.xの頃から標準搭載
• ユーザの自由度が高く柔軟な構成が可能
• 基本非同期、文ベースのレプリケーションだったが、行ベースや準同期の
機能がつき、GTIDトランザクション、クラッシュセーフのレプリケーション、ス
レーブでのマルチスレッドでの実行、遅延レプリケーション、マルチマスタ
など、想像力の限り(?) の構成が可能。。。。
Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |
レプリケーションとは?
• レプリケーションは一つのMySQLデータベースサーバ(マスター)から一つ
以上のMySQLデータベースサーバにデータを複製(レプリケート)します。
Master Slave
binlog relay log
Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |
バイナリログ
• マスターで複数の接続で並列で行われた更新をcommit順にシリアルに
並べています。
Master Slave
binlog relay log
time
↑
SQLスレッドでシリアルに実行
commit
commit
commit
rollback
Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |
タイプとフォーマット
• タイプ:
– 非同期 – マスターから更新を受け取るために、スレーブはずっと接続しておく必要が
ない。
– 準同期 – マスターからスレーブのうち最低一つがコミットをリレーログに書き込んだ
ことを確認する。
– (完全)同期 –全てのスレーブがコミットをデータベースにまで書込んだことを確認す
る->MySQLにはない。
• フォーマット:
– 文ベース – SQL文をマスターからスレーブに伝搬する
– 行ベース – 各行の変更をマスターからスレーブに伝搬
– Mixed – 文ベースと行ベースの混合
Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |
MySQLレプリケーションの短所?
• 真の高可用性(High Availability)ではない – システムダウンの際データが
ロストする
 一つ以上のスレーブのフェイルオーバー/フェイルバックが複雑
 リカバリしたマスターはバイナリログ(binlog)に記録されなかった変更が
欠損する
 スレーブはマスターからのタイムラグがある
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)
Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |
レプリケーションの利用法
• 高可用性(High Availability) (フェイルオーバー)
• スケーラビリティ – スケールアウト
• データセキュリティ/バックアップ
• 分析
• 長距離間のデータ配布
• MySQLのより新しいバージョンをスレーブとして追加して新バージョンの既
存データでの動作確認
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
Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |
構成例: マスターと三つのスレーブ
Master
App/Web
Server
SlavesClients
Writes
Reads
Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |
レプリケーションのトポロジ
Single
Multiple
Chain Circular
Multi - CircularMulti - Master
Multi-MasterやCircular構成は運用や障害の対処が難しい
事に注意が必要
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は….聞かないでください。。。。
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
• インメモリデータベース + ディスクデータ
• 非常に低いレイテンシ、短いアクセス時間リアルタイム
Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | 60
OSSDBの二つのグループ
組み込みから
ミドルレンジまでの機能強化
Firebird
エンタープライズ向けの
機能強化
MySQL, PostgreSQL
商用データベースエンタープライズ
規
模
大
小
ミドルレンジは用途により
どちらのグループでもOK
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
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)
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テーブルスペース暗号化
Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |
クラウド
• MySQLやPostgreSQLはよく使われている
– 素のバージョンが使われていたが。。。。
• クラウドのメリットをいかすための、独自の拡張が行われている
• MySQL互換のRDS for Aurora
– 高可用性と耐久性、スケーラビリティ
– このセッションのあとAWSの方から直々に
• PostgreSQL互換のAmazon Redshift
– ペタバイト級のデータを扱えるデータウエアハウス
Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |
OSS RDBMS御三家バージョン別機能
• Firebird : 3.0
• MySQL: 5.7
• PostgreSQL: 9.4/9.5
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
Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |
MySQL 5.7新機能
• InnoDBパフォーマンス!
– 本体のパフォーマンスアップ
– 一時テーブルのInnoDB化
• 運用効率化
– オンラインでのデータベースバッファサイズ変更
– オンラインDDLの改善
• FTS (Full Text Search)
• GIS (Boostライブラリ)
• レプリケーションの柔軟な運用
67
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
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
Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |
Thanks !
• ご静聴ありがとうございました。
• OSS RDBMSは適材適所
– NoSQLとRDBMSも適材適所 
• NoSQL !
– Redis
– Neo4J
• いろいろ使ってみてください!
Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |
宣伝
• おうちで学べるデータベースのきほん
– DBの初心者はこちらをどうぞ。
– 増刷出来(パチパチ)
– アマゾンでポチるか、じゃんけんに勝つ
– ハッシュタグは
#ouchidb
71
Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. | 73
Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |
オープンソース・データベースの最新事情

Más contenido relacionado

La actualidad más candente

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
 
20160929 inno db_fts_jp
20160929 inno db_fts_jp20160929 inno db_fts_jp
20160929 inno db_fts_jpyoyamasaki
 
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
 
[db tech showcase Tokyo 2015] C15:DevOps MySQL in カカクコム~ OSSによる可用性担保とリアルタイムパフ...
[db tech showcase Tokyo 2015] C15:DevOps MySQL in カカクコム~ OSSによる可用性担保とリアルタイムパフ...[db tech showcase Tokyo 2015] C15:DevOps MySQL in カカクコム~ OSSによる可用性担保とリアルタイムパフ...
[db tech showcase Tokyo 2015] C15:DevOps MySQL in カカクコム~ OSSによる可用性担保とリアルタイムパフ...Insight Technology, Inc.
 
Oracle Database Cloud Service を使ってみよう! 株式会社コーソル 守田 典男
Oracle Database Cloud Service を使ってみよう! 株式会社コーソル 守田 典男Oracle Database Cloud Service を使ってみよう! 株式会社コーソル 守田 典男
Oracle Database Cloud Service を使ってみよう! 株式会社コーソル 守田 典男CO-Sol for Community
 
SQL+NoSQL!? それならMySQL Clusterでしょ。
SQL+NoSQL!? それならMySQL Clusterでしょ。SQL+NoSQL!? それならMySQL Clusterでしょ。
SQL+NoSQL!? それならMySQL Clusterでしょ。yoyamasaki
 
MySQL 5.7 Technical Update (日本語)
MySQL 5.7 Technical Update (日本語)MySQL 5.7 Technical Update (日本語)
MySQL 5.7 Technical Update (日本語)Shinya Sugiyama
 
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
 
最近始めたあなたも今日から語れるようになるMySQLの{概要と最新情報}入門@
最近始めたあなたも今日から語れるようになるMySQLの{概要と最新情報}入門@最近始めたあなたも今日から語れるようになるMySQLの{概要と最新情報}入門@
最近始めたあなたも今日から語れるようになるMySQLの{概要と最新情報}入門@sakaik
 
Oracle SQL Developerを使い倒そう! 株式会社コーソル 守田 典男
Oracle SQL Developerを使い倒そう! 株式会社コーソル 守田 典男Oracle SQL Developerを使い倒そう! 株式会社コーソル 守田 典男
Oracle SQL Developerを使い倒そう! 株式会社コーソル 守田 典男CO-Sol for Community
 
MySQL 5.7 InnoDB 日本語全文検索
MySQL 5.7 InnoDB 日本語全文検索MySQL 5.7 InnoDB 日本語全文検索
MySQL 5.7 InnoDB 日本語全文検索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.
 
[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
 
[D31] PostgreSQLでスケールアウト構成を構築しよう by Yugo Nagata
[D31] PostgreSQLでスケールアウト構成を構築しよう by Yugo Nagata[D31] PostgreSQLでスケールアウト構成を構築しよう by Yugo Nagata
[D31] PostgreSQLでスケールアウト構成を構築しよう by Yugo NagataInsight Technology, Inc.
 
MySQL Clusterを運用して10ヶ月間
MySQL Clusterを運用して10ヶ月間MySQL Clusterを運用して10ヶ月間
MySQL Clusterを運用して10ヶ月間hiroi10
 
パフォーマンスタブ見れないんですけど!! 株式会社コーソル 河野 敏彦
パフォーマンスタブ見れないんですけど!! 株式会社コーソル 河野 敏彦パフォーマンスタブ見れないんですけど!! 株式会社コーソル 河野 敏彦
パフォーマンスタブ見れないんですけど!! 株式会社コーソル 河野 敏彦CO-Sol for Community
 
dimSTATから見るベンチマーク
dimSTATから見るベンチマークdimSTATから見るベンチマーク
dimSTATから見るベンチマークhiroi10
 

La actualidad más candente (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
 
20160929 inno db_fts_jp
20160929 inno db_fts_jp20160929 inno db_fts_jp
20160929 inno db_fts_jp
 
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勉強会
 
[db tech showcase Tokyo 2015] C15:DevOps MySQL in カカクコム~ OSSによる可用性担保とリアルタイムパフ...
[db tech showcase Tokyo 2015] C15:DevOps MySQL in カカクコム~ OSSによる可用性担保とリアルタイムパフ...[db tech showcase Tokyo 2015] C15:DevOps MySQL in カカクコム~ OSSによる可用性担保とリアルタイムパフ...
[db tech showcase Tokyo 2015] C15:DevOps MySQL in カカクコム~ OSSによる可用性担保とリアルタイムパフ...
 
Oracle Database Cloud Service を使ってみよう! 株式会社コーソル 守田 典男
Oracle Database Cloud Service を使ってみよう! 株式会社コーソル 守田 典男Oracle Database Cloud Service を使ってみよう! 株式会社コーソル 守田 典男
Oracle Database Cloud Service を使ってみよう! 株式会社コーソル 守田 典男
 
SQL+NoSQL!? それならMySQL Clusterでしょ。
SQL+NoSQL!? それならMySQL Clusterでしょ。SQL+NoSQL!? それならMySQL Clusterでしょ。
SQL+NoSQL!? それならMySQL Clusterでしょ。
 
MySQL 5.7 Technical Update (日本語)
MySQL 5.7 Technical Update (日本語)MySQL 5.7 Technical Update (日本語)
MySQL 5.7 Technical Update (日本語)
 
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勉強会)
 
最近始めたあなたも今日から語れるようになるMySQLの{概要と最新情報}入門@
最近始めたあなたも今日から語れるようになるMySQLの{概要と最新情報}入門@最近始めたあなたも今日から語れるようになるMySQLの{概要と最新情報}入門@
最近始めたあなたも今日から語れるようになるMySQLの{概要と最新情報}入門@
 
Oracle SQL Developerを使い倒そう! 株式会社コーソル 守田 典男
Oracle SQL Developerを使い倒そう! 株式会社コーソル 守田 典男Oracle SQL Developerを使い倒そう! 株式会社コーソル 守田 典男
Oracle SQL Developerを使い倒そう! 株式会社コーソル 守田 典男
 
MySQL 5.7 InnoDB 日本語全文検索
MySQL 5.7 InnoDB 日本語全文検索MySQL 5.7 InnoDB 日本語全文検索
MySQL 5.7 InnoDB 日本語全文検索
 
[C21] MySQL Cluster徹底活用術 by Mikiya Okuno
[C21] MySQL Cluster徹底活用術 by Mikiya Okuno[C21] MySQL Cluster徹底活用術 by Mikiya Okuno
[C21] MySQL Cluster徹底活用術 by Mikiya Okuno
 
[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
 
[D31] PostgreSQLでスケールアウト構成を構築しよう by Yugo Nagata
[D31] PostgreSQLでスケールアウト構成を構築しよう by Yugo Nagata[D31] PostgreSQLでスケールアウト構成を構築しよう by Yugo Nagata
[D31] PostgreSQLでスケールアウト構成を構築しよう by Yugo Nagata
 
MySQL Clusterを運用して10ヶ月間
MySQL Clusterを運用して10ヶ月間MySQL Clusterを運用して10ヶ月間
MySQL Clusterを運用して10ヶ月間
 
パフォーマンスタブ見れないんですけど!! 株式会社コーソル 河野 敏彦
パフォーマンスタブ見れないんですけど!! 株式会社コーソル 河野 敏彦パフォーマンスタブ見れないんですけど!! 株式会社コーソル 河野 敏彦
パフォーマンスタブ見れないんですけど!! 株式会社コーソル 河野 敏彦
 
dimSTATから見るベンチマーク
dimSTATから見るベンチマークdimSTATから見るベンチマーク
dimSTATから見るベンチマーク
 

Destacado

集合演算を真っ向から否定するアレの話
集合演算を真っ向から否定するアレの話集合演算を真っ向から否定するアレの話
集合演算を真っ向から否定するアレの話Kouhei Aoyagi
 
NULLとの戦い RDBMS実装編
NULLとの戦い RDBMS実装編NULLとの戦い RDBMS実装編
NULLとの戦い RDBMS実装編Meiji Kimura
 
MySQL 5.7の次のMySQLは
MySQL 5.7の次のMySQLはMySQL 5.7の次のMySQLは
MySQL 5.7の次のMySQLはyoku0825
 
MySQL Clusterのトラブル事例
MySQL Clusterのトラブル事例MySQL Clusterのトラブル事例
MySQL Clusterのトラブル事例hiroi10
 
[D26] データハブとしてのPostgreSQL~9.3で進化した外部テーブル~ by Shigeru Hanada
[D26] データハブとしてのPostgreSQL~9.3で進化した外部テーブル~ by Shigeru Hanada[D26] データハブとしてのPostgreSQL~9.3で進化した外部テーブル~ by Shigeru Hanada
[D26] データハブとしてのPostgreSQL~9.3で進化した外部テーブル~ by Shigeru HanadaInsight Technology, Inc.
 
「Delphiで作るデータベースツール。その開発のポイントは・・」
「Delphiで作るデータベースツール。その開発のポイントは・・」「Delphiで作るデータベースツール。その開発のポイントは・・」
「Delphiで作るデータベースツール。その開発のポイントは・・」Embarcadero Technologies
 
9.3で進化した外部テーブル
9.3で進化した外部テーブル9.3で進化した外部テーブル
9.3で進化した外部テーブルShigeru Hanada
 
MySQLメインの人がPostgreSQLのベンチマークをしてみた話
MySQLメインの人がPostgreSQLのベンチマークをしてみた話MySQLメインの人がPostgreSQLのベンチマークをしてみた話
MySQLメインの人がPostgreSQLのベンチマークをしてみた話hiroi10
 
ClubDB2 第197回 DBセキュリティを一緒に考えよう
ClubDB2 第197回 DBセキュリティを一緒に考えようClubDB2 第197回 DBセキュリティを一緒に考えよう
ClubDB2 第197回 DBセキュリティを一緒に考えようaiichiro
 
なぜ、いまリレーショナルモデルなのか
なぜ、いまリレーショナルモデルなのかなぜ、いまリレーショナルモデルなのか
なぜ、いまリレーショナルモデルなのかMikiya Okuno
 
どこよりも早い Spring Boot 1.2 解説 #渋谷Java
どこよりも早い Spring Boot 1.2 解説 #渋谷Javaどこよりも早い Spring Boot 1.2 解説 #渋谷Java
どこよりも早い Spring Boot 1.2 解説 #渋谷JavaToshiaki Maki
 
Database Security for PCI DSS
Database Security for PCI DSSDatabase Security for PCI DSS
Database Security for PCI DSSOhyama Masanori
 
SpringOne 2GX 2014 参加報告 & Spring 4.1について #jsug
SpringOne 2GX 2014 参加報告 & Spring 4.1について #jsugSpringOne 2GX 2014 参加報告 & Spring 4.1について #jsug
SpringOne 2GX 2014 参加報告 & Spring 4.1について #jsugToshiaki Maki
 
ペパボ de MySQL
ペパボ de MySQLペパボ de MySQL
ペパボ de MySQLyoku0825
 
PostgreSQL 10: What to Look For
PostgreSQL 10: What to Look ForPostgreSQL 10: What to Look For
PostgreSQL 10: What to Look ForAmit Langote
 
Dockerコミュニティ近況
Dockerコミュニティ近況Dockerコミュニティ近況
Dockerコミュニティ近況Akihiro Suda
 
Spiderストレージエンジンのご紹介
Spiderストレージエンジンのご紹介Spiderストレージエンジンのご紹介
Spiderストレージエンジンのご紹介Kentoku
 

Destacado (20)

MySQL 監査システムを作った話 #mysqlcasual
MySQL 監査システムを作った話 #mysqlcasualMySQL 監査システムを作った話 #mysqlcasual
MySQL 監査システムを作った話 #mysqlcasual
 
集合演算を真っ向から否定するアレの話
集合演算を真っ向から否定するアレの話集合演算を真っ向から否定するアレの話
集合演算を真っ向から否定するアレの話
 
NULLとの戦い RDBMS実装編
NULLとの戦い RDBMS実装編NULLとの戦い RDBMS実装編
NULLとの戦い RDBMS実装編
 
MySQL 5.7の次のMySQLは
MySQL 5.7の次のMySQLはMySQL 5.7の次のMySQLは
MySQL 5.7の次のMySQLは
 
MySQL Clusterのトラブル事例
MySQL Clusterのトラブル事例MySQL Clusterのトラブル事例
MySQL Clusterのトラブル事例
 
[D26] データハブとしてのPostgreSQL~9.3で進化した外部テーブル~ by Shigeru Hanada
[D26] データハブとしてのPostgreSQL~9.3で進化した外部テーブル~ by Shigeru Hanada[D26] データハブとしてのPostgreSQL~9.3で進化した外部テーブル~ by Shigeru Hanada
[D26] データハブとしてのPostgreSQL~9.3で進化した外部テーブル~ by Shigeru Hanada
 
「Delphiで作るデータベースツール。その開発のポイントは・・」
「Delphiで作るデータベースツール。その開発のポイントは・・」「Delphiで作るデータベースツール。その開発のポイントは・・」
「Delphiで作るデータベースツール。その開発のポイントは・・」
 
9.3で進化した外部テーブル
9.3で進化した外部テーブル9.3で進化した外部テーブル
9.3で進化した外部テーブル
 
MySQLメインの人がPostgreSQLのベンチマークをしてみた話
MySQLメインの人がPostgreSQLのベンチマークをしてみた話MySQLメインの人がPostgreSQLのベンチマークをしてみた話
MySQLメインの人がPostgreSQLのベンチマークをしてみた話
 
Activ.2 mod ii
Activ.2 mod iiActiv.2 mod ii
Activ.2 mod ii
 
ClubDB2 第197回 DBセキュリティを一緒に考えよう
ClubDB2 第197回 DBセキュリティを一緒に考えようClubDB2 第197回 DBセキュリティを一緒に考えよう
ClubDB2 第197回 DBセキュリティを一緒に考えよう
 
なぜ、いまリレーショナルモデルなのか
なぜ、いまリレーショナルモデルなのかなぜ、いまリレーショナルモデルなのか
なぜ、いまリレーショナルモデルなのか
 
どこよりも早い Spring Boot 1.2 解説 #渋谷Java
どこよりも早い Spring Boot 1.2 解説 #渋谷Javaどこよりも早い Spring Boot 1.2 解説 #渋谷Java
どこよりも早い Spring Boot 1.2 解説 #渋谷Java
 
Database Security for PCI DSS
Database Security for PCI DSSDatabase Security for PCI DSS
Database Security for PCI DSS
 
SpringOne 2GX 2014 参加報告 & Spring 4.1について #jsug
SpringOne 2GX 2014 参加報告 & Spring 4.1について #jsugSpringOne 2GX 2014 参加報告 & Spring 4.1について #jsug
SpringOne 2GX 2014 参加報告 & Spring 4.1について #jsug
 
ペパボ de MySQL
ペパボ de MySQLペパボ de MySQL
ペパボ de MySQL
 
NTT Tech Conference #1 Opening Keynote
NTT Tech Conference #1 Opening KeynoteNTT Tech Conference #1 Opening Keynote
NTT Tech Conference #1 Opening Keynote
 
PostgreSQL 10: What to Look For
PostgreSQL 10: What to Look ForPostgreSQL 10: What to Look For
PostgreSQL 10: What to Look For
 
Dockerコミュニティ近況
Dockerコミュニティ近況Dockerコミュニティ近況
Dockerコミュニティ近況
 
Spiderストレージエンジンのご紹介
Spiderストレージエンジンのご紹介Spiderストレージエンジンのご紹介
Spiderストレージエンジンのご紹介
 

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

MySQLインストールのお作法
MySQLインストールのお作法MySQLインストールのお作法
MySQLインストールのお作法Meiji Kimura
 
20150131 ChugokuDB-Shimane-MySQL
20150131 ChugokuDB-Shimane-MySQL20150131 ChugokuDB-Shimane-MySQL
20150131 ChugokuDB-Shimane-MySQLRyusuke Kajiyama
 
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
 
第九回中国地方DB勉強会 in 米子 MySQL 5.7+
第九回中国地方DB勉強会 in 米子 MySQL 5.7+第九回中国地方DB勉強会 in 米子 MySQL 5.7+
第九回中国地方DB勉強会 in 米子 MySQL 5.7+Ryusuke Kajiyama
 
5分で作るMySQL Cluster環境
5分で作るMySQL Cluster環境5分で作るMySQL Cluster環境
5分で作るMySQL Cluster環境yoyamasaki
 
5分で作るMySQL Cluster環境
5分で作るMySQL Cluster環境5分で作るMySQL Cluster環境
5分で作るMySQL Cluster環境yoyamasaki
 
MySQL 5.7 & 最新開発状況 @ オープンソースカンファレンス20
MySQL 5.7 & 最新開発状況 @ オープンソースカンファレンス20MySQL 5.7 & 最新開発状況 @ オープンソースカンファレンス20
MySQL 5.7 & 最新開発状況 @ オープンソースカンファレンス20Ryusuke Kajiyama
 
20190530 osc hokkaido_public
20190530 osc hokkaido_public20190530 osc hokkaido_public
20190530 osc hokkaido_publicDAISUKE INAGAKI
 
今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise
今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise
今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC EnterpriseYusukeKuramata
 
もうSQLとNoSQLを選ぶ必要はない!? ~両者を備えたスケールアウトデータベースGridDB~
もうSQLとNoSQLを選ぶ必要はない!? ~両者を備えたスケールアウトデータベースGridDB~もうSQLとNoSQLを選ぶ必要はない!? ~両者を備えたスケールアウトデータベースGridDB~
もうSQLとNoSQLを選ぶ必要はない!? ~両者を備えたスケールアウトデータベースGridDB~griddb
 
Lambda: A Peek Under The Hood [Java Day Tokyo 2015 6-3]
Lambda: A Peek Under The Hood [Java Day Tokyo 2015 6-3]Lambda: A Peek Under The Hood [Java Day Tokyo 2015 6-3]
Lambda: A Peek Under The Hood [Java Day Tokyo 2015 6-3]David Buck
 
[db tech showcase Tokyo 2015] D23:MySQLはドキュメントデータベースになり、HTTPもしゃべる - MySQL Lab...
[db tech showcase Tokyo 2015] D23:MySQLはドキュメントデータベースになり、HTTPもしゃべる - MySQL Lab...[db tech showcase Tokyo 2015] D23:MySQLはドキュメントデータベースになり、HTTPもしゃべる - MySQL Lab...
[db tech showcase Tokyo 2015] D23:MySQLはドキュメントデータベースになり、HTTPもしゃべる - MySQL Lab...Insight Technology, Inc.
 
A13 MySQL & NoSQL~Best of both world~ by Philip Antoniades & Ryusuke Kajiyama
A13 MySQL & NoSQL~Best of both world~ by Philip Antoniades & Ryusuke Kajiyama A13 MySQL & NoSQL~Best of both world~ by Philip Antoniades & Ryusuke Kajiyama
A13 MySQL & NoSQL~Best of both world~ by Philip Antoniades & Ryusuke Kajiyama Insight Technology, Inc.
 
MySQL Cluster 7.4で楽しむスケールアウト @DB Tech Showcase 2015/06
MySQL Cluster 7.4で楽しむスケールアウト @DB Tech Showcase 2015/06MySQL Cluster 7.4で楽しむスケールアウト @DB Tech Showcase 2015/06
MySQL Cluster 7.4で楽しむスケールアウト @DB Tech Showcase 2015/06Mikiya Okuno
 
MySQLドキュメントストアとCTE
MySQLドキュメントストアとCTEMySQLドキュメントストアとCTE
MySQLドキュメントストアとCTEyoyamasaki
 
[中国地方DB勉強会] 第22回 Webアプリ開発をデータベース側から変革していく - MySQL 8.0新機能
[中国地方DB勉強会] 第22回 Webアプリ開発をデータベース側から変革していく - MySQL 8.0新機能[中国地方DB勉強会] 第22回 Webアプリ開発をデータベース側から変革していく - MySQL 8.0新機能
[中国地方DB勉強会] 第22回 Webアプリ開発をデータベース側から変革していく - MySQL 8.0新機能Ryusuke Kajiyama
 
MySQL InnoDB Clusterによる高可用性構成(DB Tech Showcase 2017)
MySQL InnoDB Clusterによる高可用性構成(DB Tech Showcase 2017)MySQL InnoDB Clusterによる高可用性構成(DB Tech Showcase 2017)
MySQL InnoDB Clusterによる高可用性構成(DB Tech Showcase 2017)Shinya Sugiyama
 

Similar a オープンソース・データベースの最新事情 (20)

MySQLインストールのお作法
MySQLインストールのお作法MySQLインストールのお作法
MySQLインストールのお作法
 
20150131 ChugokuDB-Shimane-MySQL
20150131 ChugokuDB-Shimane-MySQL20150131 ChugokuDB-Shimane-MySQL
20150131 ChugokuDB-Shimane-MySQL
 
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の最新機能!
 
第九回中国地方DB勉強会 in 米子 MySQL 5.7+
第九回中国地方DB勉強会 in 米子 MySQL 5.7+第九回中国地方DB勉強会 in 米子 MySQL 5.7+
第九回中国地方DB勉強会 in 米子 MySQL 5.7+
 
5分で作るMySQL Cluster環境
5分で作るMySQL Cluster環境5分で作るMySQL Cluster環境
5分で作るMySQL Cluster環境
 
5分で作るMySQL Cluster環境
5分で作るMySQL Cluster環境5分で作るMySQL Cluster環境
5分で作るMySQL Cluster環境
 
MySQL 5.7 & 最新開発状況 @ オープンソースカンファレンス20
MySQL 5.7 & 最新開発状況 @ オープンソースカンファレンス20MySQL 5.7 & 最新開発状況 @ オープンソースカンファレンス20
MySQL 5.7 & 最新開発状況 @ オープンソースカンファレンス20
 
20190530 osc hokkaido_public
20190530 osc hokkaido_public20190530 osc hokkaido_public
20190530 osc hokkaido_public
 
今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise
今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise
今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise
 
もうSQLとNoSQLを選ぶ必要はない!? ~両者を備えたスケールアウトデータベースGridDB~
もうSQLとNoSQLを選ぶ必要はない!? ~両者を備えたスケールアウトデータベースGridDB~もうSQLとNoSQLを選ぶ必要はない!? ~両者を備えたスケールアウトデータベースGridDB~
もうSQLとNoSQLを選ぶ必要はない!? ~両者を備えたスケールアウトデータベースGridDB~
 
Lambda: A Peek Under The Hood [Java Day Tokyo 2015 6-3]
Lambda: A Peek Under The Hood [Java Day Tokyo 2015 6-3]Lambda: A Peek Under The Hood [Java Day Tokyo 2015 6-3]
Lambda: A Peek Under The Hood [Java Day Tokyo 2015 6-3]
 
[db tech showcase Tokyo 2015] D23:MySQLはドキュメントデータベースになり、HTTPもしゃべる - MySQL Lab...
[db tech showcase Tokyo 2015] D23:MySQLはドキュメントデータベースになり、HTTPもしゃべる - MySQL Lab...[db tech showcase Tokyo 2015] D23:MySQLはドキュメントデータベースになり、HTTPもしゃべる - MySQL Lab...
[db tech showcase Tokyo 2015] D23:MySQLはドキュメントデータベースになり、HTTPもしゃべる - MySQL Lab...
 
A13 MySQL & NoSQL~Best of both world~ by Philip Antoniades & Ryusuke Kajiyama
A13 MySQL & NoSQL~Best of both world~ by Philip Antoniades & Ryusuke Kajiyama A13 MySQL & NoSQL~Best of both world~ by Philip Antoniades & Ryusuke Kajiyama
A13 MySQL & NoSQL~Best of both world~ by Philip Antoniades & Ryusuke Kajiyama
 
MySQLとオープンソースビジネスの10年、そして未来へ
MySQLとオープンソースビジネスの10年、そして未来へMySQLとオープンソースビジネスの10年、そして未来へ
MySQLとオープンソースビジネスの10年、そして未来へ
 
Oracle設計
Oracle設計Oracle設計
Oracle設計
 
Oracle GoldenGate入門
Oracle GoldenGate入門Oracle GoldenGate入門
Oracle GoldenGate入門
 
MySQL Cluster 7.4で楽しむスケールアウト @DB Tech Showcase 2015/06
MySQL Cluster 7.4で楽しむスケールアウト @DB Tech Showcase 2015/06MySQL Cluster 7.4で楽しむスケールアウト @DB Tech Showcase 2015/06
MySQL Cluster 7.4で楽しむスケールアウト @DB Tech Showcase 2015/06
 
MySQLドキュメントストアとCTE
MySQLドキュメントストアとCTEMySQLドキュメントストアとCTE
MySQLドキュメントストアとCTE
 
[中国地方DB勉強会] 第22回 Webアプリ開発をデータベース側から変革していく - MySQL 8.0新機能
[中国地方DB勉強会] 第22回 Webアプリ開発をデータベース側から変革していく - MySQL 8.0新機能[中国地方DB勉強会] 第22回 Webアプリ開発をデータベース側から変革していく - MySQL 8.0新機能
[中国地方DB勉強会] 第22回 Webアプリ開発をデータベース側から変革していく - MySQL 8.0新機能
 
MySQL InnoDB Clusterによる高可用性構成(DB Tech Showcase 2017)
MySQL InnoDB Clusterによる高可用性構成(DB Tech Showcase 2017)MySQL InnoDB Clusterによる高可用性構成(DB Tech Showcase 2017)
MySQL InnoDB Clusterによる高可用性構成(DB Tech Showcase 2017)
 

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

  • 2. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | 免責事項 • 本プレゼンテーションにおいて示されている見解は、私自身の見解であっ て、私の所属する会社・団体の見解を必ずしも反映したものではありませ ん。ご了承ください。
  • 3. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | アジェンダ • 自己紹介 • 私とRDBMS, 私と?? • オープンソースRDBMS御三家の紹介 • 都市伝説 • イマドキ! の機能 – VLDB、NoSQL、GIS、便利なSQL、HA、組込、ツール、セキュリティ、クラウド、etc • オープンソースRDBMS御三家の次期版
  • 4. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | 自己紹介 • 日本オラクルにてMySQL技術サポートを行っています。 – 漢と書いてオトコの同僚。 – 漢は「理論から学ぶデータベース実践入門 ~ リレーショナルモデルによる効率的なSQL」の著者 • DB関連のブログや書籍を書いてます。 – キムラデービーブログ – 「おうちで学べるデータベースのきほん」 • ミックさんの知り合い。外人じゃないよ。 • MyNA会員、Neo4Jユーザ会会員 • Firebird日本ユーザ会の理事長
  • 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への移行。
  • 6. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | 私と某氏(同級生) • 実は小学生くらいからゲームがやりたくてマイコンを独学 • 高校生になったタイミングでNEC-PC6001(愛称パピコン)を購入、遊びはじ める。とりあえずゲームをつくる。 • あまりプログラミングは得意ではなかったので、同級生にプログラミングを 押し付けて、主にグラフィックと音楽を担当。 • 結局ゲームで一攫千金できなかったため、まともな社会人にもどる。 • 社会人になってプログラミングするも、やはり得意ではなかったため中間 管理職になる。もっとむいてなかったので、無職のあと自営業、MySQL AB 日本支社に参加→サンマイクロシステムズ,Oracleによる統合により現職。
  • 7. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | 同級生と昔作った代表的なゲーム 7
  • 8. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | 8
  • 9. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | OSS RDBMS御三家の紹介 • 日本ではPostgreSQL, MySQLが有名ですが、ロシア・ヨーロッパ・南米では Firebirdも有名です。 • P M F でオープンソースRDBMS御三家と呼びましょう。(と私が提唱してまし た  • 詳しく話しているとそれだけで一時間かかるので「オープンソースDBの成 熟度を計る」で検索してみてください。
  • 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
  • 11. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | 都市伝説 • MySQL都市伝説 – バイナリカラムのバックアップがとれない。 – サブクエリがない。トランザクションがない – MyISAMがInnoDBよりはやい、機能が多い。 • PostgreSQL都市伝説 – Windows版がない。 – バキューム必要で動作時「世界が止まる」。 – MySQLより遅い • Firebird 都市伝説 – ブラウザ – なにそれおいしいの?
  • 12. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | イマドキ! の機能 • 都市伝説はすでに解消され、オープンソースRDBMSはイマドキ!の機能を 実装・提供しはじめる。 • イマドキ! の機能 – VLDB、NoSQL、GIS、便利なSQL、HA、組込、ツール、クラウド
  • 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から
  • 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
  • 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) – 拡張ではなく本体組み込み
  • 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
  • 17. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | 便利なSQL • もともとMySQLでは便利な独自SQLが多々ある – 他のRDBMSやSQL標準にも影響 • PostgreSQLはもともと積極的にSQL標準をサポートしてきた。 – 最近は他のRDBMSの便利な機能も実装 • FirebirdもSQL標準には追随している
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 25. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | 近年SQL標準の最大の功績といえば •CASE式 と •ウインドウ関数 25
  • 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/RP R (SQL:2016 策 定中?)
  • 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
  • 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)
  • 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 小笠原
  • 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)を使ってください。
  • 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からサポート)もしくはトリガ で。。。
  • 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 小笠原
  • 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)
  • 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では明 示的に指定する必要有り。
  • 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;
  • 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 副問い合わせ名
  • 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
  • 38. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | 38 再帰クエリ • 共通表形式を使う一番の利点は、これを用いて再帰的なSQL文を実行で きること。 • 次ページのような社員表があるとすると、各社員はユニークな社員番号を 持ち、mgridに直属の上司の社員番号が格納されている。社長‘みやはら’ は上司がいないため、mgridはNULLとなる。 • このような形式は隣接リスト(Adjacency List)モデルといい階層構造をRDB で利用するのによく使われます。
  • 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);
  • 40. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | 40 階層構造を隣接リストで表現 1 みやはら 2 きむら 3 かまたき 4 加藤 5 林 6 三浦
  • 41. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | 41 再帰クエリ • 通常のSQL文では、直属の部下を求めるのは簡単ですが、直接、間接(部 下の部下)を一度に求めるのは困難でした。これを再帰的なSQL文で検索 できます。再帰的なSQL文は以下のように記述できます。 WITH RECURSIVE 共通表名 AS ( 初期集合を求めるSELECT UNION ALL 再帰集合を求めるSELECT ) SELECT * FROM 共通表名
  • 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 ==================== きむら 加藤 林 三浦
  • 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;
  • 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
  • 45. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | CTE・再帰クエリ(Firebird/MySQL) • Firebirdは2.1からCTE・再帰クエリをサポート • MySQL – CTEやCTEを使った再帰クエリの機能はない。 – 次に紹介するウインドウ関数的なものもない。 45
  • 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で対応(現在アルファ版)
  • 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で対応。 – 参照の負荷分散や、マスターがダウンしたときのスレーブ昇格など。
  • 48. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | MySQLのレプリケーション • MySQL 3.xの頃から標準搭載 • ユーザの自由度が高く柔軟な構成が可能 • 基本非同期、文ベースのレプリケーションだったが、行ベースや準同期の 機能がつき、GTIDトランザクション、クラッシュセーフのレプリケーション、ス レーブでのマルチスレッドでの実行、遅延レプリケーション、マルチマスタ など、想像力の限り(?) の構成が可能。。。。
  • 49. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | レプリケーションとは? • レプリケーションは一つのMySQLデータベースサーバ(マスター)から一つ 以上のMySQLデータベースサーバにデータを複製(レプリケート)します。 Master Slave binlog relay log
  • 50. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | バイナリログ • マスターで複数の接続で並列で行われた更新をcommit順にシリアルに 並べています。 Master Slave binlog relay log time ↑ SQLスレッドでシリアルに実行 commit commit commit rollback
  • 51. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | タイプとフォーマット • タイプ: – 非同期 – マスターから更新を受け取るために、スレーブはずっと接続しておく必要が ない。 – 準同期 – マスターからスレーブのうち最低一つがコミットをリレーログに書き込んだ ことを確認する。 – (完全)同期 –全てのスレーブがコミットをデータベースにまで書込んだことを確認す る->MySQLにはない。 • フォーマット: – 文ベース – SQL文をマスターからスレーブに伝搬する – 行ベース – 各行の変更をマスターからスレーブに伝搬 – Mixed – 文ベースと行ベースの混合
  • 52. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | MySQLレプリケーションの短所? • 真の高可用性(High Availability)ではない – システムダウンの際データが ロストする  一つ以上のスレーブのフェイルオーバー/フェイルバックが複雑  リカバリしたマスターはバイナリログ(binlog)に記録されなかった変更が 欠損する  スレーブはマスターからのタイムラグがある
  • 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)
  • 54. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | レプリケーションの利用法 • 高可用性(High Availability) (フェイルオーバー) • スケーラビリティ – スケールアウト • データセキュリティ/バックアップ • 分析 • 長距離間のデータ配布 • MySQLのより新しいバージョンをスレーブとして追加して新バージョンの既 存データでの動作確認
  • 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
  • 56. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | 構成例: マスターと三つのスレーブ Master App/Web Server SlavesClients Writes Reads
  • 57. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | レプリケーションのトポロジ Single Multiple Chain Circular Multi - CircularMulti - Master Multi-MasterやCircular構成は運用や障害の対処が難しい 事に注意が必要
  • 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は….聞かないでください。。。。
  • 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 • インメモリデータベース + ディスクデータ • 非常に低いレイテンシ、短いアクセス時間リアルタイム
  • 60. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | 60 OSSDBの二つのグループ 組み込みから ミドルレンジまでの機能強化 Firebird エンタープライズ向けの 機能強化 MySQL, PostgreSQL 商用データベースエンタープライズ 規 模 大 小 ミドルレンジは用途により どちらのグループでもOK
  • 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
  • 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)
  • 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テーブルスペース暗号化
  • 64. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | クラウド • MySQLやPostgreSQLはよく使われている – 素のバージョンが使われていたが。。。。 • クラウドのメリットをいかすための、独自の拡張が行われている • MySQL互換のRDS for Aurora – 高可用性と耐久性、スケーラビリティ – このセッションのあとAWSの方から直々に • PostgreSQL互換のAmazon Redshift – ペタバイト級のデータを扱えるデータウエアハウス
  • 65. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | OSS RDBMS御三家バージョン別機能 • Firebird : 3.0 • MySQL: 5.7 • PostgreSQL: 9.4/9.5
  • 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
  • 67. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | MySQL 5.7新機能 • InnoDBパフォーマンス! – 本体のパフォーマンスアップ – 一時テーブルのInnoDB化 • 運用効率化 – オンラインでのデータベースバッファサイズ変更 – オンラインDDLの改善 • FTS (Full Text Search) • GIS (Boostライブラリ) • レプリケーションの柔軟な運用 67
  • 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
  • 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
  • 70. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | Thanks ! • ご静聴ありがとうございました。 • OSS RDBMSは適材適所 – NoSQLとRDBMSも適材適所  • NoSQL ! – Redis – Neo4J • いろいろ使ってみてください!
  • 71. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. | 宣伝 • おうちで学べるデータベースのきほん – DBの初心者はこちらをどうぞ。 – 増刷出来(パチパチ) – アマゾンでポチるか、じゃんけんに勝つ – ハッシュタグは #ouchidb 71
  • 72. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |
  • 73. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. | 73
  • 74. Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |