Upload
meiji-kimura
View
992
Download
5
Embed Size (px)
Citation preview
オープンソース・データベースの 最新事情@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/RPR
(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
Slaves Clients
Writes
Reads
Copyright © 2015 Oracle and/or its affiliates. All rights reserved. |
レプリケーションのトポロジ
Single
Multiple
Chain Circular
Multi - Circular Multi - 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. |