Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.

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

2 055 vues

Publié le

JustTechTalk#06でお話したスライドの公開版です。Firebird 3.0, MySQL 5.7, PostgreSQL 9.5を紹介しています。

Publié dans : Logiciels
  • Soyez le premier à commenter

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

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

×