Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

オープンソースRDBMS新機能ランダウンOSC2017TokyoSpring

510 views

Published on

オープンソースRDBMSの最新版(Firebird3.0, MySQL5.7, PostgreSQL9.6)新機能をご紹介します。

Published in: Software
  • Be the first to comment

オープンソースRDBMS新機能ランダウンOSC2017TokyoSpring

  1. 1. 1 オープンソースRDBMS新機能 ランダウン(Firebird3.0/ MySQL 5.7/PostgreSQL 9.6) OSC2017TokyoSpring セミナー Firebird日本ユーザ会 木村明治(@meijik)
  2. 2. 免責事項 • 本プレゼンテーションにおいて示されている 見解は、私自身の見解であって、私の所属す る会社・団体の見解を必ずしも反映したもの ではありません。ご了承ください。 2
  3. 3. アジェンダ • 自己紹介 • オープンソースRDBMS御三家の紹介 • 都市伝説 • イマドキ! の機能 – VLDB、NoSQL、GIS、便利なSQL、HA、組込、 ツール、セキュリティ、クラウド、etc • オープンソースRDBMS御三家最新版、バー ジョン別機能
  4. 4. 自己紹介 • 日本オラクルでMySQLサポートをしています。 – 漢と書いてオトコの同僚。 – 漢は「理論から学ぶデータベース実践入門 ~ リレーショナルモデルによる効率的なSQL」の著者 • DB関連のブログや書籍を書いてます。 – キムラデービーブログ – 「おうちで学べるデータベースのきほん(共著)」 • ミックさんの知り合い。外人じゃないよ。 • MyNA会員、Neo4Jユーザ会会員 • Firebird日本ユーザ会の理事長
  5. 5. 私とRDBMS • 新卒にて日立関連会社に就職。HiRDBの開 発にチョット関わる。 • 転職して独立系ソフトウエアベンダーに – デスクトップRDBMSの開発に関わる。 OCI/ODBCを利用したOracle/SQL Server, Accessドライバを作成。 – 製品バンドル用のRDBMSとして PostgreSQL/MySQL/InterBase Open Edition(Firebirdの前身)を評価。InterBase採用。 – 製品PMとして、独自DBからMySQLへの移行。
  6. 6. OSS RDBMS御三家の紹介 • 日本ではPostgreSQL, MySQLが有名です が、ロシア・ヨーロッパ・南米ではFirebirdも有 名です。 • P M F でオープンソースRDBMS御三家と呼 びましょう。(と私が提唱してました  • 詳しく話しているとそれだけで一時間かかる ので「オープンソースDBの成熟度を計る」で 検索してみてください。
  7. 7. オープンソース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
  8. 8. 都市伝説 • MySQL都市伝説 – バイナリカラムのバックアップがとれない。 – サブクエリがない。トランザクションがない – MyISAMがInnoDBよりはやい、機能が多い。 • PostgreSQL都市伝説 – Windows版がない。 – バキューム必要で動作時「世界が止まる」。 – MySQLより遅い • Firebird 都市伝説。自体がない。。。
  9. 9. イマドキ! の機能 • 都市伝説はすでに解消され、オープンソース RDBMSはイマドキ!の機能を実装・提供しは じめる。 • イマドキ! の機能 – VLDB、NoSQL、GIS、便利なSQL、HA、組込、 ツール、クラウド
  10. 10. VLDB • VLDB(Very Large Data Base) – どのくらいがVery Largeなのかは時代による。 • パーティショニング機能 – 巨大な表をキーを元に水平分割する – PostgreSQLは8.0から。ただしテーブルの継承 やトリガを利用する「なんちゃって」なもの。 • 専用構文・実装は9.6の次(10.0予定)から – MySQL は5.1から。 • マテリアライズドビュー – PostgreSQL9.3から
  11. 11. 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
  12. 12. GIS • GIS(Geographic Information System:地理 情報システム) • PostgreSQL拡張のPostGISがデファクト。 – PostGIS リリース1.0.0RC1(2005)->1.5.0(2010) – 現在は2.3 が最新。2.4を開発中 • MySQLは4.xで初期実装したものの、その後 長い間進展なし。 – MySQL 5.7で生まれ変わった(re-born) – 拡張ではなく本体組み込み
  13. 13. 便利なSQL • もともとMySQLでは便利な独自SQLが多々 ある – 他のRDBMSやSQL標準にも影響 • PostgreSQLはもともと積極的にSQL標準を サポートしてきた。 – 高塚さんによるとSQL:2008準拠相当  – 最近は他のRDBMSの便利な機能も実装 • FirebirdもSQL標準には追随している
  14. 14. SQL標準(SQL:1999より後) • SQL:2003, 2008, 2011, 2016 – SQL:2003 • XML関連機能 (SQL/XML) • ウインドウ関数 • シーケンスジェネレータ • 新しいカラム型: auto-generated values と identity- columns • MERGE ステートメント • SQL/MED, SQL/MM • TABLESAMPLE • 等々 14
  15. 15. 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により開発。 15
  16. 16. SQL:2003 SQL/MM • 全文検索(日本語) • PostgreSQL/MySQL(5.6まで)/Firebird – 本体にはなし。 • MySQL 5.7からInnoDBのFTS(Full Text Search) • Groonga – MySQLバインディング: Mroonga(むるーんが) – PostgreSQLバインディング: PGroonga(ぴー じーるんが) 16
  17. 17. SQL: 2008 • MERGE と DIAGNOSTIC の拡張 • TRUNCATE TABLE ステートメント • CASEのカンマ区切りWHEN句 • INSTEAD OF データベーストリガー • partitioned JOINテーブル, • いろいろなXQuery regular expression/pattern- matching 機能のサポート • 導出カラム名の拡張 17
  18. 18. SQL: 2011 • Temporal データベース • その他しみじみとした機能改善 – MERGE内でのDELETE – パイプラインDML – CALL文の拡張 – Limited fetch – Collection type拡張 – Non-enforcedテーブル制約 – ウインドウ関数の拡張、等 18
  19. 19. 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にて利用できます。 19
  20. 20. SQL:2016 • 行間パターン認識機能「Row pattern recognition」 • 「JSON」への対応 • 外部ソースにアクセスし、表形式で出力する 「Polymorphic table functions」 20
  21. 21. 行間パターン認識(RPR) • RPR: Row Pattern Recognition – 2008年に提出されたプロポーザルの規格化 • MATCH_RECOGNIZE句 • Oracle Database 12cのみ実装 • 詳細や利用例はこれから順に日本語になっ ていくと思います。 21
  22. 22. 近年SQL標準の最大の功績 •CASE式 •ウインドウ関数 22
  23. 23. 最近のロードマップ 2010 2011 2012 2013 2014 2015 2016 PostgreS QL 9.0 9.1 9.2 9.3 9.4 9.5 9.6 (10.0) MySQL 5.5 5.6 5.7 DMR 5.7 8.0 DMR Firebird 2.5 3.0 Beta1 3.0 SQL標準 SQL:201 1 SQL:201 1/Cor1 2013 SQL:20 16
  24. 24. 24 安定版 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ロードマップ Firebird 1.0 2008年 Firebird 2.5 2010年 現在最新 版 Firebird 2.1
  25. 25. 25 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)
  26. 26. 26 対照表と差分表をMERGE • 対象表 差分表 1 みやはら 2 きむら 3 かまたき id name id name 2 加藤 4 小笠原 1 みやはら 2 きむら 3 かまたき 2 加藤 4 小笠原
  27. 27. 27 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;
  28. 28. 28 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からサポート)もしくはトリガで。。。
  29. 29. 29 レコードを差分追加する (重複は無視) • 対象表 差分表 1 みやはら 2 きむら 3 かまたき id name id name 2 加藤 4 小笠原 1 みやはら 2 きむら 3 かまたき 4 小笠原
  30. 30. 30 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)
  31. 31. 31 MySQLの場合 • INSERT IGNOREを使う。 • INSERT IGNORE shain(id, name) select id, name FROM m_shain; • すごーく古いMySQLではINSERTのデフォル ト動作がIGNORE(!)だったが、最新の MySQLでは明示的に指定する必要有り。
  32. 32. 32 PostgreSQLの場合 • これも9.5以降 • “DO アクション”でアクションにNOTHING • INSERT INTO shain(id, name) select id, name FROM m_shain ON CONFLICT ON CONSTRAINT 制約名 DO NOTHING;
  33. 33. 33 CTE(共通表式) • 共通表式は、ひとつのSQL文中に限り「何回でも」 参照可能なローカルな表のことです。例えば、以下 のようなSQLがあるとします。 – SELECT ID, NAME FROM (副問い合わせ); • 共通表式で書き直すと以下のようになります。 WITH 副問い合わせ名 AS ( 副問い合わせ内容 ) SELECT ID, NAME FROM 副問い合わせ名
  34. 34. 34 共通表式の例 WITH T AS ( SELECT B.部署名, E.社員名, E.給与 FROM 部署 B, 社員 E WHERE B.ID = E.ID ) SELECT * FROM T WHERE T.給与 > 200000
  35. 35. 35 再帰クエリ • 共通表形式を使う一番の利点は、これを用い て再帰的なSQL文を実行できること。 • 次ページのような社員表があるとすると、各 社員はユニークな社員番号を持ち、mgridに 直属の上司の社員番号が格納されている。 社長‘みやはら’は上司がいないため、mgrid はNULLとなる。 • このような形式は隣接リスト(Adjacency List) モデルといい階層構造をRDBで利用するの によく使われます。
  36. 36. 36 再帰クエリ 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);
  37. 37. 37 階層構造を隣接リストで表現 1 みやはら 2 きむら 3 かまたき 4 加藤 5 林 6 三浦
  38. 38. 38 再帰クエリ • 通常のSQL文では、直属の部下を求めるのは簡単 ですが、直接、間接(部下の部下)を一度に求めるの は困難でした。これを再帰的なSQL文で検索できま す。再帰的なSQL文は以下のように記述できます。 WITH RECURSIVE 共通表名 AS ( 初期集合を求めるSELECT UNION ALL 再帰集合を求めるSELECT ) SELECT * FROM 共通表名
  39. 39. 39 再帰クエリ • 例) きむら自身と直接・間接の部下を求める。 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 ==================== きむら 加藤 林 三浦
  40. 40. 40 再帰クエリ • このような階層的なデータを扱うSQL拡張は、 各商用データベースでは必要に応じて行わ れてきました。 • 例えば、Oracleの場合、CONNECT BYとい う独自拡張で、上記と同様の内容を以下の SQL文で得ることができます。 – SELECT name FROM shain START WITH name = 'きむら' CONNECT BY PRIOR empid = mgrid;
  41. 41. CTE・再帰クエリ(PostgreSQL) • 8.4でサポート • 9.1で拡張。WITH (...) の中や末尾のクエリに て INSERT/UPDATE/DELETE ができるよう に。 – MERGE 文はPostgreSQLは未サポートですが、 UPDATE できなかったキーを持つ行のみ後から INSERT を行うと、他DBの MERGE や REPLACE 文と同等の機能をCTEでも実現でき ます。 41
  42. 42. CTE・再帰クエリ (Firebird/MySQL) • Firebirdは2.1からCTE・再帰クエリをサポート • MySQL – CTEやCTEを使った再帰クエリの機能はない。 • 8.0 lab版には実装済み – 次に紹介するウインドウ関数的なものも(本家に は)ない。。。 42
  43. 43. 43 順位の簡単な求め方 • SQLパズル的なものはいろいろあれど。 • ウインドウ関数 – RANK()やDENSE_RANK() • オープンソースRDBMSではPostgreSQL以 外(8.4以降で対応)まだ対応が遅れ気味 「だった」 – Firebirdは3.0で対応 ! – MariaDB(MySQLからのフォーク)は、次期版 10.2で対応(現在RC版)
  44. 44. HA(High Availability) • レプリケーション – MySQLの代名詞。バージョン3.xよりサポート • 5.5で準同期。5.6でGTID対応。 – PostgreSQLは外部ツール(pg-pool, slony)で従 来対応していたが、バージョン9.0から本体にレプ リケーションの機能が実装された(ストリーミング・ レプリケーション) – Firebirdは有償のIB-Replicatorで対応。 • 次期4.0で本体に組み込み予定(from Red Database) – 参照の負荷分散や、マスターがダウンしたときの スレーブ昇格など。
  45. 45. MySQLのレプリケーション • MySQL 3.xの頃から標準搭載 • ユーザの自由度が高く柔軟な構成が可能 • 基本非同期、文ベースのレプリケーションだっ たが、行ベースや準同期の機能がつき、GTID トランザクション、クラッシュセーフのレプリケー ション、スレーブでのマルチスレッドでの実行、 遅延レプリケーション、マルチマスタなど、想像 力の限り(?) の構成が可能。。。。
  46. 46. レプリケーションとは? • レプリケーションは一つのMySQLデータベー スサーバ(マスター)から一つ以上のMySQL データベースサーバにデータを複製(レプリ ケート)します。 Master Slave binlog relay log
  47. 47. バイナリログ • マスターで複数の接続で並列で行われた更 新をcommit順にシリアルに並べています。 Master Slave binlog relay log time ↑ SQLスレッドでシリアルに実行 commit commit commit rollback
  48. 48. タイプとフォーマット • タイプ: – 非同期 – マスターから更新を受け取るために、スレーブ はずっと接続しておく必要がない。 – 準同期 – マスターからスレーブのうち最低一つがコミット をリレーログに書き込んだことを確認する。 – (完全)同期 –全てのスレーブがコミットをデータベースに まで書込んだことを確認する->MySQLにはない。 • フォーマット: – 文ベース – SQL文をマスターからスレーブに伝搬する – 行ベース – 各行の変更をマスターからスレーブに伝搬 – Mixed – 文ベースと行ベースの混合
  49. 49. 古いMySQLレプリケーションの短所 • 真の高可用性(High Availability)ではない – システ ムダウンの際データがロストする  一つ以上のスレーブのフェイルオーバー/フェイル バックが複雑  リカバリしたマスターはバイナリログ(binlog)に記録 されなかった変更が欠損する  スレーブはマスターからのタイムラグがある
  50. 50. 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)
  51. 51. レプリケーションの利用法 • 高可用性(High Availability) (フェイルオーバー) • スケーラビリティ – スケールアウト • データセキュリティ/バックアップ • 分析 • 長距離間のデータ配布 • MySQLのより新しいバージョンをスレーブとして追加 して新バージョンの既存データでの動作確認
  52. 52. レプリケーションアーキテクチャの基本 Master Slave binlog relay log Clients I/O Thread SQL Thread 1 2 dump thread 3 4 5
  53. 53. 構成例: マスターと三つのスレーブ Master App/Web Server SlavesClients Writes Reads
  54. 54. レプリケーションのトポロジ Singleスレーブ Multipleスレーブ Chain, Cascade Circular Multi - CircularMulti - Master Multi-MasterやCircular構成は運用や障害 の対処が難しい事に注意が必要
  55. 55. PostgreSQLレプリの歩み 2010 2011 2012 2013 2014 2015 2016 PostgreS QL 9.0 9.1 9.2 9.3 9.4 9.5 9.6 非同 期 同期 カス ケード スタンバイ サーバへ の高速切 替 レプリケー ションス ロット, ロジ カルデコー ディング 高速フェ イルオー バー マルチ同 期レプリ ケーショ ン MySQL 5.5 5.6 5.7 ・準同期 ・ハートビート ・GTID ・クラッシュセーフ スレーブ ・マルチソース ・マルチスレッドス レーブ
  56. 56. HA(Cluster) • クラッシュセーフであれば市販のクラスタソフ トウエアで対応できる – 共有ディスクでActive/Standby – DRBDでActive/Standby • MySQLではストレージエンジンとしてNDBを 利用し、NDB用に拡張したMySQL本体 (mysqld)を含めてMySQL Clusterとして提供 • PostgreSQLではPostgre-XC, Postgre-XL, Postgre-XC2などの開発が続く。。。 • Firebirdは….聞かないでください。。。。
  57. 57. MySQL Cluster: Overview • 自動シャーディング、マルチマスター • ACID 準拠のトランザクション, OLTP + Real-Time Analytics 読込み/書込み処理 に対する高い拡張性 • シェアードナッシング、単一障害点無し • 自動修復 + オンラインオペレーション99.999% の高可用性 • オープンソース + 商用版 • コモディディハードウェア + 充実した管理ツール、監視ツール低い TCO • Key/Value + SQL の柔軟性 • SQL + Memcached + JavaScript + Java + JPA + HTTP/REST & C++SQL + NoSQL • インメモリデータベース + ディスクデータ • 非常に低いレイテンシ、短いアクセス時間リアルタイム
  58. 58. 58 OSSDBの二つのグループ 組み込みから ミドルレンジまでの機能強化 Firebird エンタープライズ向けの 機能強化 MySQL, PostgreSQL 商用データベースエンタープライズ 規 模 大 小 ミドルレンジは用途 によりどちらのグ ループでもOK
  59. 59. 組み込み • FirebirdとMySQLは組み込み用の Embedded libraryが提供されている • FirebirdはDBが単一ファイル、ライセンスも緩 やかなので組み込みやすい。 59
  60. 60. 組み込み(Firebird/LibreOffice) • Base4.2からFirebirdのEmbedded版が使え るようになり、4.3からは単純にBaseを起動す るとDBウィザードが起動し指定できるように! • Base5.2まではFirebird 2.5, Base5.3以降は Firebird 3.0が利用される。 • 次バージョンのBase5.4ではFirebirdがデフォ ルトのデータベースエンジンになる? – http://www.firebirdnews.org/firebird-3-by- default-in-libreoffice-5-4-base/ – 60
  61. 61. ツール(1) • Firebird – 市販のGUIツール。IBExpert , Database Workbench。無償のFlameRobin • MySQL – MySQL Utilities, MySQL Fabric, MySQL Workbench – MySQL商用版にのみ含まれるものもあり – Percona Tools for MySQL, MHA – Visual StudioとTools, Connector/Netでストアド プロシジャのデバッグが可能
  62. 62. ツール(2) • PostgreSQL – Contribに含まれるツール。PotgreSQL Toolkit – PL/pgSQLデバッガー(Enterprise DB)
  63. 63. セキュリティ(1) • 権限の強化・細分化 – PostgreSQLのSE-PostgreSQL(contribの sepgsqlモジュール)や本体の機能強化 • 監査(Audit) – Firebird 2.5からのAudit log – MySQL商用版のAudit plugin(MySQL5.6以降), McAfee MySQL Audit Plugin(MySQL 5.1以降, MariaDB 5.5以降)
  64. 64. セキュリティ(2) • 暗号化 – 基本暗号化・複合化の関数 – PostgreSQL9.3: 透過的暗号化(TDE)モジュー ル(by NEC) – MySQL 5.7.12以降: InnoDBテーブルスペース 暗号化
  65. 65. クラウド(1) • MySQLやPostgreSQLはよく使われている – 素のバージョンが使われていたが。。。。 • クラウドのメリットをいかすための、独自の拡 張が行われている
  66. 66. クラウド(2) • MySQL互換 – Amazon Aurora • 高可用性と耐久性、スケーラビリティ • MySQL 5.6互換 • PostgreSQL互換 – Amazon Redshift • ペタバイト級のデータを扱えるデータウエアハウス – Amazon Aurora with PostgreSQL Compatibility • プレビューで利用可能。PostgreSQL 9.6互換
  67. 67. OSS RDBMS 御三家最新版バージョン別機能 • Firebird : 3.0 • MySQL: 5.7 • PostgreSQL: 9.5/9.6
  68. 68. Firebird 3.0の新機能 • 統一バイナリ(CS, SS, SC) • SS(SuperServer)での真のSMPサポート • オブジェクト指向C++ APIの提供 • 新しいデータ型(BOOLEAN, IDENTITY) • SQLパッケージ(一連のSPとファンクションを まとめたもの)のサポート • DDLトリガー • ウインドウ関数のサポート 68
  69. 69. MySQL 5.7新機能 • InnoDBパフォーマンス! – 本体のパフォーマンスアップ – 一時テーブルのInnoDB化 • 運用効率化 – オンラインでのデータベースバッファサイズ変更 – オンラインDDLの改善 • FTS (Full Text Search) • GIS (Boostライブラリ) • レプリケーションの柔軟な運用 69
  70. 70. MySQL 8.0新機能(?) • 本日17:15-18:00 同じ506教室にて、 yoku0825さんによる以下のセッションあり。 – ここで聞けるかも  • 「MySQL 5.7の次のMySQL 8.0はどんなも のになるだろう」 70
  71. 71. PostgreSQL 9.5 • IMPORT FOREIGN SCHEMA構文 • 行レベルのセキュリティポリシー • BRINインデックス • 外部テーブルの継承 • GROUPING SETS, CUBE と ROLLUP • JSONB更新用のオペレータと機能追加 • INSERT ... ON CONFLICT DO NOTHING/UPDATE (いわゆる"UPSERT") • pg_rewind 71
  72. 72. PostgreSQL 9.6 • パラレルクエリ(シーケンシャルスキャン、Nested Loop 結合、ソート・集約のパラレル実行)に対応。 • VACUUM で XID凍結済みの部分を省略して実行 可能に(XID周回対策) • 同期スタンバイサーバを同時に複数持てるように。 (9.5までは一台まで) • 全文検索でフレーズ(隣接した複数語)検索に対応 • postgres_fdw がリモートでの結合、ソート、 UPDATE、DELETE に対応。 多CPUサーバでの性能スケーラビリティが改善。 72
  73. 73. PostgreSQLパラレルクエリ進捗 2013 2014 2015 2016 2017 PostgreSQL 9.3 9.4 9.5 9.6 10.0(予定) 独自の ワーカプ ロセス定 義・起動 可能 ワーカプロセ スの動的起 動。共有メモ リを動的確保。 ワーカプロ セスで一 貫した情報 が見られる 機能 【完成】 並列処理 結果をまと める機能。 並列処理 を意識した 実行計画 の立案機 能 【改善】 インデック ススキャン、 マージ結 合・ハッ シュ結合 対応、サブ クエリ対応
  74. 74. Thanks ! • ご静聴ありがとうございました。 – PotgreSQLは高塚さんや澤田さん、ぬこさんの 資料を参考にさせていただきました。 – SQL標準は土田さんの資料を参考にしました。 • OSS RDBMSは適材適所 – NoSQLとRDBMSも適材適所  • NoSQL ! – Redis – Neo4J • いろいろ使ってみてください!

×