Mais conteúdo relacionado
Semelhante a オープンソース・データベースの最新事情 (20)
オープンソース・データベースの最新事情
- 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
- 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