OSS X UserMeeting #6 PostgreSQLとMySQL

ということでhttps://www.scsk.jp/event/2014/20140415.htmlへ行ってきましたよ。

最初の挨拶

  • 司会:OSS基盤センター かねざきさん

MySQLの優位性(池田さん@SCSK株式会社)

SCSKとMySQLの関わり
  • SCSKは2003年にOSS専門部隊を創設してかかわっていた。
    • 国内MySQLトップベンダと言われている。
    • 池田さんは11年くらいやってる。
  • 今日の客
    • A:ユーザ企業 3割
    • B:ITベンダ 他
    • 意思決定、提案販売、開発・構築、保守運用それなりにばらけている。
  • PostgreSQL vs MySQLどちらを採用すべきか?
MySQLを採用すべき10の理由

SCSKの実体験と全世界のMySQLユーザ事例から。

  • ソースコードの公開
    • バックトレース、関数コールグラフの例・・・実は少数の開発者しかメリットないかも。
    • 調査研究フェーズ、システム開発フェーズ、システム運用フェーズ別のメリットがある。
  • 拡張性
    • 全文検索、Mroonga開発
    • 監査ログ(audit_plugin)→現状はデフォルトで装備
    • 文字コードの追加(sjis, ujisのスーパセットで実装)
    • Ruby向けドライバ、Javaドライバ、Perlドライバ
    • CPUスケーラビリティの改善
  • 低コスト
    • MySQLSQLServerSybaseの比較グラフ
    • Airlines Analogy:乗り心地は違うが到達時間は同じ。
    • インストールが楽
    • チューニングも容易
    • ライセンス購入の必要がない。
  • 製品レベルの進化
    • MySQL 4.1-5.6までの拡張。今後のロードマップも豊富。
    • 破壊的イノベーションの話。年が経過していけばOSSでもニーズを満たせる。
  • 信頼性・安定性
    • mysqldが落ちることはほとんどない。MySQL以外のハード障害くらい。
    • 信頼性を高める機能
      • InnoDB Double Write
      • 破損チェック
      • メモリエラーのアサーション(関数呼び出し時に引数のチェック)
      • 自動再起動
  • PostgreSQLの信頼性に対する懸念
    • PostgreSQLの開発スタンス:OSバグ、HW障害はPostgreSQLの問題じゃない。
      • あー、この問題はなあ・・・
  • MySQL Clusterの話
    • ACT-ACTの構成がとれる。→PostgreSQLでは苦手なはず。
  • 高性能/拡張性
    • 秒間50万クエリ
      • 条件はなによ?
  • スケールアウト
    • 1マスター、N段Nスレーブ構成
    • Facebookの事例。
      • 秒間1120万行の更新
      • 秒間6060万回のSELECT
      • 秒間25億行→クラスタ構成を応用
  • 豊富な製品群
  • 周辺ツールも多い。
    • Oracleがいろいろ作っている。
    • Oracle Enterprise Manager, Query Analyzer
    • OSSのツールも多い。
  • 組込パッケージ多い
    • ガルーン、CloudStack、OpenStack、Redmine
  • DBMS人気
    • Oracle1位、MySQL2位、PostgreSQLは4位
    • 国内シェアもMySQLのほうがあるよ。
  • 数値で見るMySQLの絶大な人気
  • エコシステム
    • Oracle社を中心としたエコシステムの例
    • Oracleになってから50人→1000人規模の開発体制に
    • ヘビーユーザ企業(FacebookGoogle)からのフィードバック
    • MySQL卒業生との競争
      • Percona, Monty Program, SkyDB

PostgreSQLの優位性

  • 喜田さん@アシスト
  • クイズ「早いのはどれ?」
    • 喜田さんの絵、かわいいw
    • 答えは後で
  • 最適なもの
    • Oracle 高い可用性、更新負荷分散、自動管理機能
    • PostgreSQL 質実剛健、複雑なSQL、多彩な機能拡張
    • MySQL 軽量、高速、参照負荷分散、Webアプリバンドルが多い。
  • 質実剛健・グランドデザイン
    • 歴史の話
    • トランザクションの取り込みを早くから実施
    • 同時実行制御、読み取り一貫性
    • ユーザニーズに完全に応えられていない。監査や集約機能性能など。
      • OracleMySQLはユーザニーズよりオーバスペックな実装?
  • 複雑な処理もこなす優等生
    • トランザクション系はだいたいOK
    • 超大量データの集計はちょっと苦手・・・
    • 特殊なインデックスの実装(あとで)
  • 実行プランの話
    • 最適な結合方法を選択してくれる。
    • DBMSの中には入れ子結合しかサポートしていないものもあるから・・・
  • PostgreSQL固有の機能
    • PostGISの話。特殊な検索。地図情報ならPostgreSQL
    • 全文検索
      • pg_trgm, pg_bigm, textserach_ja
    • JSON
    • FDW
      • せっかくだから、列指向DBMS(MonetDB-FDWとか)のFDWを紹介して、集約演算の欠点をカバーみたいな話にしても良かった気はしたが・・・
  • 豊富な機能拡張
    • FDWなど
PostgreSQL都市伝説
  • 3つの都市伝説
    • VACUUM・・・
    • 情報系システム(集計)で使えるの?
    • ツールがない?
  • PostgreSQLはなるべく最新版を使いましょう
    • PostgreSQLは新しいバージョンほど性能が上がってる!
    • 集計向け:Index Only Scan
  • Vacuumは8.xの頃から改修されている。
    • 最近のバージョンは「追記型」であることの致命的な問題はなかった。
    • 自動バキューム、HOTなどの改善
  • 集計が苦手
    • パーティショニング
    • レプリケーションによる参照負荷分散
    • マテビュー
    • そして開発中のパラレル・クエリ
  • ツール
    • 運用管理ツール、開発ツール、監視ツールは揃いつつある
    • 自動メンテナンス系のツールは存在していない・・・ここが課題。
イマドキ構成
最後に

質疑応答

  • OracleからMySQL/PostgreSQLのストアド・プロシージャ移行ってできるの?
    • MySQLにもストアド・プロシージャはあるけどDB2ベースなのでOracleからの移行はほぼ書き直し。
    • PostgreSQLは関数しかないから、プロシージャやパッケージは書き直し。

懇親会&LT

  • 懇親会は隣の部屋で立食パーチー形式。
  • 懇親会の中でLTが2本。
    • せっかくなのでちょっと喋っておきました。
    • my sql-postgresql勉強会#6 LT 私的なPostgreSQLの楽しみ方
      • 今回の勉強会、意外にもMySQL派よりPostgreSQL派のほうが多かったことが判明。
      • MySQL派の人が多いだろうと思って、MySQL派の人を驚かせる(PostgreSQLってこんな拡張できるのか!)&笑わせる(技術の無駄遣いw)ネタで攻めようとしたんだけど・・・
      • 過去の寄せ集め&抜粋資料だけど、それなりに笑いがとれた気がするので満足w
    • もう一本は、やまさきさん(@yyamasaki1)のMySQLの管理コンソール MySQL Workbench の紹介。
      • MySQL Workbench 6.1 のご紹介 - SSSSLIDE
      • うーん、確かに今風の綺麗な画面だなー。
      • pgAdminの画面はちょっと今風じゃない気がするしなあ。
      • しかし、psqlのような良いCUIがあればそれで事足りる部分もあるしなー。
      • とはいえ、運用サイドからはこういうGUIツールが欲しい気持ちはわかる。