先週のJava Day Tokyoに引き続き、Oracle絡みのイベントです。
※東京のイベント告知&申込ページは既にリンクを外されているようなので、ここにリンクは付けません。
※↑SNSで公開されていましたが、マズそうなら引っ込めます。
また、いつものように気になったポイントと感想などを中心に箇条書きします。長丁場で通訳のレシーバに混信があったせいもあり、勘違いもあると思います。
※公開資料はこちらで確認してください。
Keynote: MySQL | State of the Dolphin / What's new in MySQL 8.0(稲垣 大助さん)
- 全体の概要
- Mobile First / Developer First / Data Driven / 24x7
- 機能強化について
- utf8mb4デフォルト化
- utf8mb4でMySQL 5.7より40%高速化
- 性能 16x
- MySQL MLE:GraalVM in MySQL 8
- 最初はJSだけ
- トランザクショナルなデータ・ディクショナリ
- セキュリティ強化
- ROLE(ROLES_GRAPHML関数) / パスワード強化 / キャッシュ付きSHA-256 / 暗号化(テーブルスペース & REDO / UNDOログ)
- バージョンアップ
- アップグレードチェッカー / Shellのユーティリティ(JS / Python) / Manual 2.11.1.1参照
- InnoDB Cluster
- Enterprise Edition
- Enterprise Monitor 4.0(UI改善 / NDB CLusterサポート強化 / 日本語対応改善)
- このキーノートを聞いただけで全体の把握は可能
MySQL 8.0: What’s new in the Optimizer(Manyi Luさん)
- CTE(再帰 / 非再帰)とWindow関数
- 文字コードと照合順序
- sijs、eucjpなどを使ってる人手挙げて!
- JSON
- SELECT(参照)用に最適化
- JSON_TABLE以外の関数を5.7にもバックポート
- INDEX作成可
- 不可視INDEX
- メモリバッファ(バッファプール)を意識したコスト見積もり
- ヒストグラム(値の分布)
- JOINの例
- JSON_TABLE関数では実行時に一時テーブルを作る
- CTE / Window関数 / コスト見積もり / ヒストグラムについては自分でも試して記事化した(後述)
- 「JOINでヒストグラム」はうまくいかなかった(当時)
MySQL Enterprise Security & Regulatory Compliance(Mike Frankさん)
- GDPR / PCI(-DSS) / HIPAAなどへの対応
- 具体的なセキュリティ管理手法はGDPRに規定されていないが、4つのコア領域(アセスメント / 防止 / 検出 / 復旧)がある
- MySQLが提供しているもの
- 製品 / 特徴(Feature) / ベストプラクティス / ホワイトペーパー / 技術資料
- 3rd party製品との統合・連携
- Enterprise Security Architecture
- 暗号化(通信 / データの透過的暗号化)
- 認証(台数多い場合、統合化)
- Thread Pool(可用性確保)
- Workbench(セキュリティ評価機能あり) / Enterprise Monitor(アラートを出せる)
- LDAPなど認証 / 認可の連携
- Enterprise Backup
- Enterprise Firewall
- KMIP(鍵管理)
- ROLE
- AtomicなACLステートメント
- OpenSSLにダイナミックリンク(MySQLのアップグレードなしでパッチ適用可能)
- FIPSモジュールサポート(ハードウェア)
- パスワードポリシー設定
- キャッシュ付きSHA-256(高速性を保ちつつハッシュ強化)
- データのマスキング
- 透過的暗号化とヒストグラム(前述)の併用、RC時点でNGだったので試してみたらやっぱりNGだった
mysql> USE sample_db; Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed mysql> show tables; +---------------------+ | Tables_in_sample_db | +---------------------+ | sample_tbl | +---------------------+ 1 row in set (0.00 sec) mysql> show create table sample_table\G ERROR 1146 (42S02): Table 'sample_db.sample_table' doesn't exist mysql> show create table sample_tbl\G *************************** 1. row *************************** Table: sample_tbl Create Table: CREATE TABLE `sample_tbl` ( `id` int(10) NOT NULL AUTO_INCREMENT, `value` varchar(100) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ENCRYPTION='Y' 1 row in set (0.00 sec) mysql> select count(*) from sample_tbl; +----------+ | count(*) | +----------+ | 4 | +----------+ 1 row in set (0.00 sec) mysql> ANALYZE TABLE sample_tbl UPDATE HISTOGRAM ON value WITH 10 BUCKETS; +----------------------+-----------+----------+------------------------------------------------------------+ | Table | Op | Msg_type | Msg_text | +----------------------+-----------+----------+------------------------------------------------------------+ | sample_db.sample_tbl | histogram | Error | Cannot create histogram statistics for an encrypted table. | +----------------------+-----------+----------+------------------------------------------------------------+ 1 row in set (0.00 sec)
- 暗号鍵管理は重要、でもどれだけ意識されてる?
- PCI-DSS対応なら嫌でもやらなきゃいけないけど
- mysqldump / pumpの出力先などとして使うファイルシステムの暗号化を忘れてると意味がなかったり
- ツールでbinlogから一部を抜き出してうっかり非暗号化領域に置いたりとか
昼食
- 今半のすき焼弁当(うまかった)
- アンケート項目あり
Voice from customers and community(浜平 仁さん、とみた まさひろさん、yoku0825さん)
- 事情により1つ目は紹介NG
- とみたさん、utf8(utf8mb3)とGAでのパラメータ初期値の変化へのツッコミと、utf8mb4での照合順序の注意点など(JIS順とか渋い)
- yokuさん、罠について語る(--innodb-log-write-max-size=-1で無限に落ち続けるなど)
- 罠以外にも「events_errors_summary_by_account_by_errorでアカウントまでアタリを付けて監視できるの便利」など
MySQL Analytics Service(Nipun Agarwalさん)
- MySQLをベースとした大規模データ分析サービスへの取り組みの話
- Labsなので提供時期未定
- 略称:RAPID
- インメモリ / 1TB超え / 電力性能比を考えスケールアップ&スケールアウトのハイブリッド型に
- 単一RAPIDノードで15x以上の電力性能比 / 8ノードで27x / 512ノードまでスケールを確認(もっと行ける)
- パーティション指向
- 計算と通信をオーバーラップして処理(時間短縮)
- 非SQL分析への汎用化
- MySQLリアルタイム分析クラウドサービス向けに開発
- Redshiftとの比較(リアルタイム分析できる、など)
- Machine Learningを活用(自律型)
- 意見ちょうだい
- 話だけ聞いてるとOracle(Datadase)での取り組みと似通っている気がするが、Oracle梶山さんによると「全くの別物」
Developing Applications with MySQL Document Store & NodeJS(Frederic Descamps)
- ブログ等でお馴染みのlefredさん
- JSON型でスキーマレス(高速な初期開発 / 手間削減 / 非リレーショナルモデル / ORM使わない場合)
- ORMはDBAの敵!
- RDBMS と NoSQLの片方だけを選択する必要はない
- 1GBまでのDocumentに対応可能(MongoDBは16MBまで)
- SQLは必須ではない
- X DevAPI Connectorが必要
- MySQL Shell
- MongoDBからのマイグレーション
- プログラムなしでデータを引き出せる
- 強み:ACID準拠!
- さすがにこのあたりから疲れてきた…
MySQL 8.0: What’s New in Replication(Luis Soaresさん)
- From ポルトガル
- レプリケーション機能の多くは5.7にバックポート
- 急成長するWebでのスケールアップ / ダウンの文脈で説明
- グループレプリケーションで動的増減
- binlogは他の技術との連携にも使える(Hadoop、Kafka、Solr等)
- マルチソースレプリケーションはDB統合に使える
- 障害発生時等のPrimary選択は以前はランダムだった→ルール化された
- 処理が追い付かないときのフローコントロール
- 「なにその忖度機能」(参加者の感想)
- モニタリングはマイクロ秒の精度
- 高速リカバリ
MySQL 8.0: InnoDB Cluster(Frederic Descampsさん)
- Group Replication
- 1st commitがとにかく勝つアルゴリズム
- Paxosベース
- Paxos:分散システム全体にメッセージを配信する
- マニュアルフェイルオーバ不要に
- クラッシュ、失敗、再接続等を自動処理
- MySQL Router
- L4ルーティング
- ProxySQLとも協力
- MySQL Shell
- Admin API
- 5.7と比べてもより簡単に
Q&A
- Routerの配置場所について
- Group ReplicationでXAは?
- サポートしてる
- Group Replicationで多段レプリケーションは?
- 可能。非同期レプリケーションとの組み合わせでDRなどもやりやすい
- 8.0の品質はいかほど?
- 某B社やF社なんかはGA前から一部で使ってるよ!
- CHECK制約、エラーにならないのに効かないんですけど…
- そういう仕様
- でもCHECK制約サポートはロードマップに入ってる
- 透過的暗号化とヒストグラムの併用は?
- データディクショナリがまだ暗号化できてない
- データディクショナリとbinlogの透過的暗号化も年内にはできるよ!(たぶん)
- 「GAとは」に対し「継続的リリースモデルですから」
- InnoDB Clusterでは「小さなトランザクション」を推奨しないの?
- マルチマスタならその通り
- シングルマスタならあまり気にしなくて良い
その他
- スクリーン前に巨大Sakila(イルカ)のぬいぐるみが鎮座し、会場後方からの視界を遮る罠
- 休憩中に(プロジェクタのすぐ横の席にいた)某氏がプロジェクターの向きを調整していたOracle山﨑さんに「本当はココ(Sakilaが置いてある場所)にプロジェクタを置くんですよね」と指摘するも、山﨑さんスルー
- みんながSakilaの「ORACLE面」の写真を撮ろうとするとなぜかOracleの方々はしきりに「そっちじゃない」「反対」だと
- アンケートと引き換えのおみやげはMySQL 8.0 Tシャツ
- Mサイズだったけど、人を見て渡してる?見てない?(私はMサイズで着れるが無理な人は…?)
- 初めて参加したので知らなかったが、Java Day Tokyoのような物販はなかった
- 「意地でもPaxosを使わない」AWSに対し、Oracleは「使えるものは遣う」スタンス?
- 某所で噂されていた「重大発表」はなかった模様
- MySQL 8.0の新機能については事前に色々試していたので大体知ってた
- Oracleよりもむしろyokuさんの話のほうが初見
- なお、書いた記事は以下を参照