PostgreSQLカンファレンス2014

ということで、2014/12/05に開催された、PostgreSQLカンファレンス2014 | 日本PostgreSQLユーザ会へ今年も行ってきましたよ。
今回は聞くだけでなく、1枠もらって喋ることになった。(`・ω・´)シャキーン

概要


超要約

  • 今回、私が聞いたのは、keynote1, keynote2, A1, C2, B3, B4。5つ目のセッション(B5)は私が喋ったセッション。
  • 他にも聞きたいセッションは一杯あったんだよねー。
keynote1:Open Source, Open Engineering and PostgreSQL
  • PostgreSQLコミュニティの良さ、そしてコミュニティへもっと参加しようというメッセージ。
keynote2:NTT データと PostgreSQL が挑んだ総力戦 〜 PostgreSQL を極限まで使い切ったそ
  • インフラ系大規模プロジェクトにおけるPostgreSQL+各種拡張を組み合わせた事例紹介。
  • PostgreSQL単体で難しくても拡張でカバー、欲しい機能がなければ作る!
  • ソースレベルでサポートできる技術者がいる体制がないとツラい。
A1:PostgreSQL 9.4 の概要
  • タイトルどおりPostgreSQL 9.4の新規機能の紹介。
  • 結構JSONB推してた。
B2:Web で変わったクラウドPostgreSQL の今と昔
C3:O/R マッパーによるトラブルを未然にふせぐ
  • O/Rマッパーを嫌ってもいいけど、きちんと理解してほしいという話。
  • O/Rマッパーの基礎、O/Rマッパーでよく起きるトラブルと対処策の紹介。
B4:あらためて、データベースのセキュリティを考える
  • DBAへのアンケート結果の紹介。
  • 攻撃手段は異なれ、攻撃者が欲しがるものは常にデータ。データベースもしっかり保護しよう。
B2:PostgreSQL 9.4 の新機能 JSONB 型を使ってみよう
  • ぬこの発表。
  • 聴いた人が、JSON/JSONB便利そう!⇒PostgreSQL便利そう!と思ってくれれば幸いです。


keynote1:Open Source, Open Engineering and PostgreSQL

  • PostgreSQLコアメンバの一人、Simon Riggsさんの発表。
  • 前半、MySQLとMongoDBにちょっと喧嘩売ってたw
  • 後半はPostgreSQLコミュニティの良さの説明と、コミュニティへの参加の呼びかけ。
    • 「今までパッチを投げたことがある人、手を上げてください」
    • パッチレビューアが不足してるから、ここでもレビューアを募集。

keynote2:NTT データと PostgreSQL が挑んだ総力戦 〜 PostgreSQL を極限まで使い切ったその先に見たものとは? 〜

  • 講師は笠原さんと澤田さん。
  • インフラ系大規模プロジェクトでPostgreSQLを適用する上で使ったツールや、トラブル対応などの話。
    • いろんなEXTENSIONを巧く使ってるなー。他の人のツイートにあったけど、逆に言えば素のPostgreSQLでは色々足りないという見方もできるのかも。
  • VACUUM設計のポイント:大規模(数百GB)テーブルはautovacuumではなく、手動で実施。VACUUMできないときはpg_reorg/並列インデックス作成で対応。
  • DR検討のポイント:SRを採用、藤井さんのサポート(ずるいw)、アーカイブ圧縮&転送
  • pg_dbms_statによる大規模データ用統計情報の擬似、統計情報の固定化。
  • PostgreSQLだけでなく、OSの有識者もいないと大規模案件は怖いなー。
  • QA
    • NTTデータではOracleも使ってると思うけど、PostgreSQLとの使い分けは?⇒実は明確なガイドラインはない。個々のPJ/顧客の要望しだい。今回はコスト削減がメインだった。
    • 大量の動作テストはどうやった?⇒1つ1つ堅実にやってる。特にトリッキーなことはしてない。Javaクラスからクエリを実行させて試していた。
    • 1インスタンス10TB、ストレージの工夫やバックアップは?⇒高速なディスクと低速なディスクを表領域で分散させた。バックアップはHWスナップショットを使った。
    • SQLチェックツールでJOIN数の問題など引っかかったらどうする?DB設計の体制などは?⇒チェックツールは全部適用したわけではない。内容によっては例外も認めた。
    • HWサイジングなどはどう考えた?PostgreSQL文書などのノウハウとおおまかな業務要件から検討。ディスク量もWeb等で公開されている情報から概算は可能。

A1:PostgreSQL 9.4 の概要

  • 講師はMichael Paquierさん。
  • 最初に自己紹介&Planet PostgreSQLの紹介。ミカエルさん、あそこに色々書いてるからなー。
  • FILTER and aggregates、WITH IN句、mode関数、pecentile系の関数、WITH ORDINALITY。
  • GINインデックス、JSONB。JSONBはさらっと流してくれたので助かったw
    • MongoDBに喧嘩を売るミカエルさんw
  • ビューまわりの改善。VIEW更新改善(自動更新ビューの改善、WITH CHECK)、マテビュー改善の話。コンカレントリフレッシュが可能に。
  • テーブルスペースの改善、pg_stat_statementsの改善、ALTER SYSTEM、
  • session_preload_libraries, pg_prewarm, pl/pgsqlスタックトレース
  • レプリケーションスロット、time delayed standbys
  • 今後のPostgreSQL拡張に向けた話。ロジカルでコーディング
  • バックアップ関連:pg_basebackupもいろいろ機能追加されてる

B2:Web で変わったクラウドPostgreSQL の今と昔

  • 講師は曽根壮大さん。
  • クラウド=インフラの抽象化
  • 前半はHeroku便利だよーという話。
    • HerokuはEC2上にPostgreSQLのインストールするとこまでやってくれる。他のバックアップ等のアドオン追加も簡単に可能。
    • Herokuは最小モデルの範囲で使っている限りは無料!(重要)
  • Web開発で変わってきたこと。環境の自動化、分散化・並列化
    • テストの自動化、デプロイの自動化。フレームワークによってはテーブル定義の変更も自動的にやってくれる。そして環境構築(Update含む)の自動化。
    • 分散化と並列化。ブラウザでの非同期処理、大量のリクエストをデータベースの分散化で対応。NoSQLの台頭。PostgreSQLだとJSONで対応可能。
  • DevOps。運用が属人化しない、運用コストが激減。DBAがこの先生きのこるには。
    • クラウドの使い方を理解していればスタートアップにはデータベースエンジニアの需要がなくなる!逆に言えばスペシャリストはサービスが大規模にならないと必要ない。
    • データのスケールに長けている、データの分析が得意、データからビジネスを生める人が生き延びる?
  • データの寿命>アプリケーションの寿命
    • アプリは書き換えるけど、データは変更したがらない。
      • AWS RDSなどのサービスはデータ移行のしずらさからくる、ベンダロックインの一つの手段だよねー。確かに。
    • DBAエンジニアも生き残るチャンスはある。

C3:O/R マッパーによるトラブルを未然にふせぐ

  • 講師は桑田誠さん。
  • アプリ開発者 vs データベース管理者
    • 会場内、意外と(?)ORマッパー嫌いな人が多いw
    • しかし、DBA側もORM/アプリケーション開発を知らずに対立しているという前置き。
  • 最初はO/Rマッパー(ORM)の基礎。
    • テンプレート方式とクエリオブジェクト方式
    • SQLテンプレート方式シンプルだが、SQLの欠点をそのまま受け継いでしまう。似たようなSQLを複数書く必要がある。DRYではない。
    • クエリオブジェクト方式:ORMによっては、構文木の元になる式を指定可能。コードから構文木を実行時に生成し、それを渡してSQLを生成するってこと?確かに、これはテンプレート方式ではできない。 言語的にはRuby, Python, Scalaなどでは可能。
  • 後半はORMトラブルの代表例と対処。
    • N+1問題、クエリ発行箇所が特定できない問題、インデックスつけ忘れ問題、select *問題
  • ORMと折り合いをつける:先手を打つ、ORM/アプリ開発を知る、SQLを教える、心を広く持つ(最高速度・最高品質を求めない)、金を積む(!) #pgcon14j うぅ、最後の項目は真理だけどコワイ!

B4:あらためて、データベースのセキュリティを考える

  • 講師は北野さん。元○racleの人らしい。
  • ペーパーはなし。欲しい人は事務局に個別に連絡とのこと。
  • DBA1000人に聞きました
    • DBAが関心をもってるのは、SQLインジェクション、権限管理。
    • 権限管理は実際にはそんなに真面目にやってない?DBAでないのにDBA権限を付与しているケースが(一部も含め)3割くらい。
    • 操作ログの取得はそれなりに浸透してる・・・?
    • 暗号化機能。米国は暗号化ソリューションを使っているところが多い。日本はまだ少ない。使わない理由はニーズがない、性能、AP改修ができないなど。
    • DBAの不正に対する意識。持ち出し&売却、データベース破壊、改竄、ユーザ/パスワード漏洩について聞いてみた。⇒10%くらい「ひょっとしたら不正しちゃうかも」な人がいる!?なかなかスリリングな結果だなあ。
  • 経産省個人情報保護ガイドラインの話。
    • 5月の改正でガイドライン上に「データベース」という用語が明示されるようになった。
    • 努力義務:管理者権限の分権。そして、ここで海外さんのSE-Postgresの話もw
    • ガイドライ改正:セキュリティパッチに関しても、DBMSという文言が明確に追加されるようになった。
  • ここからデータベースセキュリティに関する話。脅威の内容は変わる、情報の価値は変わらない。
    • 2010年頃からは標的型攻撃が始まった。実際の攻撃パターンが、世間一般に認知されるまでは数年かかる。
    • 攻撃方法は変われど、盗もうとする情報は「機密情報」「個人情報」。盗もうとするものは、あまり変わっていない。
    • 盗もうとするものは、ファイルかDBMSに置かれているというのも、10年前と変わってはない。
  • 分析・解析などデータがより活用されるのは良いことではあるが、反面リスクも高くなる。データサイエンティストが雇えなくて、他の会社に委託するケースなどはそれだよなあ。
  • 現状は?
    • 特権ユーザの管理が適切でないケースはまだ結構多い。というか、PostgreSQL(だけの仕組み)では厳しいなあ。PostgreSQLのログも監査ログ向きってわけではないだろうし。
    • 暗号化:PostgreSQLだと富士通の商用製品でないと透過的暗号化はやってないのよね。pgcrypoは関数呼び出しで性能の問題がやっぱりある。ストレージやOS側の機能をうまくつかうなどの工夫が必要だと。
    • ISO15408(セキュリティ関係)の話。官公庁の入札案件などでは要件に含むものがある。
  • お願いしたいこと。
    • DBにアクセスするルート、誰がアクセスするのかを把握しておく。設計段階からセキュリティ要件をきちんと考えてくださいと。DB設計にも可能なら盛り込んで欲しいと。
    • ビッグデータとデータベースセキュリティ。ビッグデータと言ってもNoSQLだけではなくRDBMSにもやっぱりデータは入っているはずなので、やっぱりRDBMS側での防御も大事。

B2:PostgreSQL 9.4 の新機能 JSONB 型を使ってみよう

懇親会

  • LTイベントあり。パイ投げ娘さんもいた。
    • JPUGの理事長も、某SRA OSS.の社長さんも、某バックアップ姫(とその上司)も容赦なく顔面にパイをぶつけられる。コワイ!
  • 懇親会会場で3名の方から「内部構造から学ぶPostgreSQL 設計・運用計画の鉄則 」へのサインを求められました。お買い上げ、ありがとうございますっ!
  • 懇親会席上の成り行きで、来月末の中国DB勉強会で話すことになってしまいましたw
    • MongoDB vs PostgreSQL JSONBの話かなあ・・・冬休み\(^o^)/オワタ

懇親会2次会

  • 某コミッターがものすごい発言(内容自粛)をしてたw
    • 私とは属性が正反対であるw