SlideShare a Scribd company logo
1 of 47
Download to read offline
MySQLを拡張する Powered by Rabbit 2.1.9
MySQLを拡張する
MySQL User Conference 2015
とみたまさひろ
2015-12-15
MySQLを拡張する Powered by Rabbit 2.1.9
自己紹介
とみた まさひろ
http://tmtms.hatenablog.com
http://twitter.com/tmtms
https://github.com/tmtm
長野県北部在住プログラマー( Ruby & C )
長野ソフトウェア技術者グループ(NSEG)
MySQLを拡張する Powered by Rabbit 2.1.9
自己紹介
日本MySQLユーザ会代表
MySQL 3.21 の日本語対応 (1998)
MySQLのRubyバインディング作成 (1998)
OSS貢献者賞 2013
MySQLを拡張する Powered by Rabbit 2.1.9
MySQLは「世界でもっとも普及している
オープンソースデータベース」
https://www-jp.mysql.com/
MySQLを拡張する Powered by Rabbit 2.1.9
「伽藍とバザール」の「伽藍」
MySQLを拡張する Powered by Rabbit 2.1.9
フリーソフトウェア(GPL2)
MySQLを拡張する Powered by Rabbit 2.1.9
フリーソフトウェアでうれしいこと
MySQLを拡張する Powered by Rabbit 2.1.9
無料(フリー)
MySQLを拡張する Powered by Rabbit 2.1.9
無料でうれしい
個人ごとの開発環境
テスト環境
スケールアウトで台数増
MySQLを拡張する Powered by Rabbit 2.1.9
自由(フリー)
MySQLを拡張する Powered by Rabbit 2.1.9
自由でうれしい
ソースが公開されている
自分で調べられる
改変して再配布
MySQLを拡張する Powered by Rabbit 2.1.9
改変
MariaDB
AWS RDS
「多様性は善」
MySQLを拡張する Powered by Rabbit 2.1.9
仮に本家の開発が中断したとしても
第三者が継続できる
MySQLを拡張する Powered by Rabbit 2.1.9
拡張
MySQLを拡張する Powered by Rabbit 2.1.9
MySQLに機能を追加する
MySQLを拡張する Powered by Rabbit 2.1.9
UDF - ユーザー定義関数
一番簡単な拡張
独自の関数を MySQL に組み込む
通常の関数 / 集約関数
MySQLのソースを見なくてもマニュアルだけで作
成可能
http://dev.mysql.com/doc/refman/5.6/ja/adding-udf.html
MySQLを拡張する Powered by Rabbit 2.1.9
UDF
hoge_init()
クエリ実行前に呼び出される(引数チェックとか)
hoge()
関数本体
hoge_deinit()
クエリ実行後に呼び出される(メモリ解放とか)
MySQLを拡張する Powered by Rabbit 2.1.9
例: mysql-mruby
https://github.com/mattn/mysql-mruby
mysql> SELECT mrb_eval('ARGV.map(&:upcase).join(",")',
-> 'hoge', 'fuga') as a;
+-----------+
| a |
+-----------+
| HOGE,FUGA |
+-----------+
MySQLを拡張する Powered by Rabbit 2.1.9
プラグイン
MySQLを拡張する Powered by Rabbit 2.1.9
プラグイン(5.7.9)
mysql> show plugins;
+----------------------------+----------+--------------------+---------+---------+
| Name | Status | Type | Library | License |
+----------------------------+----------+--------------------+---------+---------+
| binlog | ACTIVE | STORAGE ENGINE | NULL | GPL |
| mysql_native_password | ACTIVE | AUTHENTICATION | NULL | GPL |
| sha256_password | ACTIVE | AUTHENTICATION | NULL | GPL |
| MyISAM | ACTIVE | STORAGE ENGINE | NULL | GPL |
| PERFORMANCE_SCHEMA | ACTIVE | STORAGE ENGINE | NULL | GPL |
| InnoDB | ACTIVE | STORAGE ENGINE | NULL | GPL |
| INNODB_TRX | ACTIVE | INFORMATION SCHEMA | NULL | GPL |
| INNODB_LOCKS | ACTIVE | INFORMATION SCHEMA | NULL | GPL |
| INNODB_LOCK_WAITS | ACTIVE | INFORMATION SCHEMA | NULL | GPL |
| INNODB_CMP | ACTIVE | INFORMATION SCHEMA | NULL | GPL |
| INNODB_CMP_RESET | ACTIVE | INFORMATION SCHEMA | NULL | GPL |
| INNODB_CMPMEM | ACTIVE | INFORMATION SCHEMA | NULL | GPL |
| INNODB_CMPMEM_RESET | ACTIVE | INFORMATION SCHEMA | NULL | GPL |
| INNODB_CMP_PER_INDEX | ACTIVE | INFORMATION SCHEMA | NULL | GPL |
| INNODB_CMP_PER_INDEX_RESET | ACTIVE | INFORMATION SCHEMA | NULL | GPL |
| INNODB_BUFFER_PAGE | ACTIVE | INFORMATION SCHEMA | NULL | GPL |
| INNODB_BUFFER_PAGE_LRU | ACTIVE | INFORMATION SCHEMA | NULL | GPL |
| INNODB_BUFFER_POOL_STATS | ACTIVE | INFORMATION SCHEMA | NULL | GPL |
| INNODB_TEMP_TABLE_INFO | ACTIVE | INFORMATION SCHEMA | NULL | GPL |
| INNODB_METRICS | ACTIVE | INFORMATION SCHEMA | NULL | GPL |
MySQLを拡張する Powered by Rabbit 2.1.9
プラグイン(5.7.9)
| INNODB_FT_DEFAULT_STOPWORD | ACTIVE | INFORMATION SCHEMA | NULL | GPL |
| INNODB_FT_DELETED | ACTIVE | INFORMATION SCHEMA | NULL | GPL |
| INNODB_FT_BEING_DELETED | ACTIVE | INFORMATION SCHEMA | NULL | GPL |
| INNODB_FT_CONFIG | ACTIVE | INFORMATION SCHEMA | NULL | GPL |
| INNODB_FT_INDEX_CACHE | ACTIVE | INFORMATION SCHEMA | NULL | GPL |
| INNODB_FT_INDEX_TABLE | ACTIVE | INFORMATION SCHEMA | NULL | GPL |
| INNODB_SYS_TABLES | ACTIVE | INFORMATION SCHEMA | NULL | GPL |
| INNODB_SYS_TABLESTATS | ACTIVE | INFORMATION SCHEMA | NULL | GPL |
| INNODB_SYS_INDEXES | ACTIVE | INFORMATION SCHEMA | NULL | GPL |
| INNODB_SYS_COLUMNS | ACTIVE | INFORMATION SCHEMA | NULL | GPL |
| INNODB_SYS_FIELDS | ACTIVE | INFORMATION SCHEMA | NULL | GPL |
| INNODB_SYS_FOREIGN | ACTIVE | INFORMATION SCHEMA | NULL | GPL |
| INNODB_SYS_FOREIGN_COLS | ACTIVE | INFORMATION SCHEMA | NULL | GPL |
| INNODB_SYS_TABLESPACES | ACTIVE | INFORMATION SCHEMA | NULL | GPL |
| INNODB_SYS_DATAFILES | ACTIVE | INFORMATION SCHEMA | NULL | GPL |
| INNODB_SYS_VIRTUAL | ACTIVE | INFORMATION SCHEMA | NULL | GPL |
| MRG_MYISAM | ACTIVE | STORAGE ENGINE | NULL | GPL |
| MEMORY | ACTIVE | STORAGE ENGINE | NULL | GPL |
| CSV | ACTIVE | STORAGE ENGINE | NULL | GPL |
| BLACKHOLE | ACTIVE | STORAGE ENGINE | NULL | GPL |
| partition | ACTIVE | STORAGE ENGINE | NULL | GPL |
| FEDERATED | DISABLED | STORAGE ENGINE | NULL | GPL |
| ARCHIVE | ACTIVE | STORAGE ENGINE | NULL | GPL |
| ngram | ACTIVE | FTPARSER | NULL | GPL |
+----------------------------+----------+--------------------+---------+---------+
MySQLを拡張する Powered by Rabbit 2.1.9
プラグイン
ストレージエンジンプラグイン
InnoDB, MyISAM, CSV, Blackhole, …
全文パーサープラグイン
全文検索用トークナイザ: ngram
デーモンプラグイン
mysqld プロセス空間内で動作
MySQLを拡張する Powered by Rabbit 2.1.9
プラグイン
INFORMATION_SCHEMA プラグイン
準同期レプリケーションプラグイン
監査プラグイン
認証プラグイン
パスワード検証プラグイン
MySQLを拡張する Powered by Rabbit 2.1.9
プラグインの作り方
リファレンスマニュアル 24.2.4 プラグインの作成
http://dev.mysql.com/doc/refman/5.6/ja/writing-plugins.html
MySQLを拡張する Powered by Rabbit 2.1.9
ストレージエンジンプラグイン
MySQLを拡張する Powered by Rabbit 2.1.9
ストレージエンジンプラグイン
InnoDB, MyISAM, Archive, Blackhole, …
標準のストレージエンジンは全部プラグイン
MySQLを拡張する Powered by Rabbit 2.1.9
巷のストレージエンジンプラグイン
mroonga
http://mroonga.org/ja/
日本語全文検索エンジン Groonga を MySQL から
使う
MySQLを拡張する Powered by Rabbit 2.1.9
ストレージエンジンの作り方
ドキュメントあり
MySQL Internals Manual
Chapter 22 Writing a Custom Storage Engine
http://dev.mysql.com/doc/internals/en/custom-engine.html
でもソースみないと厳しいかも
フリーソフトウェアだから見放題!
MySQLを拡張する Powered by Rabbit 2.1.9
デーモンプラグイン
MySQLを拡張する Powered by Rabbit 2.1.9
デーモンプラグイン
mysqld プロセス空間内で何かを動かす
通常とは異なる TCP/IP の口を開けて何かすると
か
起動直後から定期的に何かするとか
MySQLを拡張する Powered by Rabbit 2.1.9
巷のデーモンプラグイン
HandlerSocket
https://github.com/DeNA/HandlerSocket-Plugin-for-MySQL
Transactd
http://www.bizstation.jp/ja/transactd/
MySQLを拡張する Powered by Rabbit 2.1.9
デーモンプラグインの作り方
リファレンスマニュアル 24.2.4.5 デーモンプラグイ
ンの作成
http://dev.mysql.com/doc/refman/5.6/ja/writing-daemon-plugins.html
init() と deinit() 関数だけ
結構簡単
MySQLを拡張する Powered by Rabbit 2.1.9
以上綺麗な拡張
(mysqldのコンパイル不要)
MySQLを拡張する Powered by Rabbit 2.1.9
綺麗じゃない拡張
(mysqldのコンパイル必要)
MySQLを拡張する Powered by Rabbit 2.1.9
改造
MySQLを拡張する Powered by Rabbit 2.1.9
Charset/Collation
リファレンスマニュアル 10.3 文字セットの追加
http://dev.mysql.com/doc/refman/5.6/ja/adding-character-set.html
実は1バイト文字セットはコンパイル要らず
/usr/local/mysql/share/charsets/
マルチバイト文字は要コンパイル
mysql-5.x.x/strings/CHARSET_INFO.txt
どうしても ハハ=パパ=ババ と 🍣=🍺 問題を解決
したい人は改造してみるのもいいかも
MySQLを拡張する Powered by Rabbit 2.1.9
ネットワークプロトコル
MySQL Internals Manual
Chapter 14 MySQL Client/Server Protocol
http://dev.mysql.com/doc/internals/en/client-server-protocol.html
MySQLのプロトコル解説
http://slide.rabbit-shocker.org/authors/tommy/mysql-protocol/
MySQLクライアントライブラリが無い処理系で実
装
Ruby/MySQL - pure Ruby 実装
https://github.com/tmtm/ruby-mysql
MySQLを拡張する Powered by Rabbit 2.1.9
クエリ
クライアントからのコマンド振り分け
mysql-5.x.x/sql/sql_parse.cc
クエリ構文解析
mysql-5.x.x/sql/sql_yacc.yy
独自のクエリを組み込める
「予約語書き換えればSQLインジェクション対
策!」
MySQLを拡張する Powered by Rabbit 2.1.9
まとめ
MySQLを拡張する Powered by Rabbit 2.1.9
まとめ
プラグイン機構でコンパイルせずに結構拡張でき
る
ソースが見れるからプラグインも作りやすい
mysqld 自体を改造することもできる
無料もいいけど自由重要
フリーソフトウェア万歳!
MySQLを拡張する Powered by Rabbit 2.1.9
おまけ
MySQLを拡張する Powered by Rabbit 2.1.9
アドベントカレンダー
元はクリスマスまでの期間を数える
ために使われていたカレンダーのこ
とで
〜中略〜
近年、インターネット上において、こ
のカレンダーにならい、定められた
テーマに従い、参加者が持ち回りで
自身のブログやサイトに記事を投稿
する企画が多く実施されています。
http://blog.qiita.com/post/132928437279/adcal2015
MySQLを拡張する Powered by Rabbit 2.1.9
MySQL 関連のアドベントカレンダー
12/1〜25 まで開催中
MySQL Casual Advent Calendar 2015
http://qiita.com/advent-calendar/2015/mysql-casual
MySQL Fabric&Routerつらくない Advent
Calendar 2015
http://qiita.com/advent-calendar/2015/mysql_fabric
MySQL 5.7の「罠」に狙われてもやられないため
の Advent Calendar 2015
http://qiita.com/advent-calendar/2015/mysql57-yoku0825-traps
MySQLマニュアルを読む Advent Calendar 2015
http://qiita.com/advent-calendar/2015/mysql_manual
MySQLを拡張する Powered by Rabbit 2.1.9
MySQLだけで4つもある!
MySQLを拡張する Powered by Rabbit 2.1.9
4つのうち3つが
「独りアドベントカレンダー」
MySQLを拡張する Powered by Rabbit 2.1.9
MySQLの人たちちょっとおかしい
MySQLを拡張する Powered by Rabbit 2.1.9
おわり

More Related Content

What's hot

イマドキの現場で使えるJavaライブラリ事情
イマドキの現場で使えるJavaライブラリ事情イマドキの現場で使えるJavaライブラリ事情
イマドキの現場で使えるJavaライブラリ事情takezoe
 
Add PLEASE clause to Oracle Database
Add PLEASE clause to Oracle DatabaseAdd PLEASE clause to Oracle Database
Add PLEASE clause to Oracle DatabaseNoriyoshi Shinoda
 
わかった気になるMySQL
わかった気になるMySQLわかった気になるMySQL
わかった気になるMySQLyoku0825
 
MySQL ガチBeginnerがやってみたことと反省したこと
MySQL ガチBeginnerがやってみたことと反省したことMySQL ガチBeginnerがやってみたことと反省したこと
MySQL ガチBeginnerがやってみたことと反省したことSatoshi Suzuki
 
Scalaで行うマイグレーション ~Flyway~
Scalaで行うマイグレーション ~Flyway~Scalaで行うマイグレーション ~Flyway~
Scalaで行うマイグレーション ~Flyway~Yuto Suzuki
 
Ansible2.9 ネットワーク対応のアップデート #ansiblejp
Ansible2.9 ネットワーク対応のアップデート #ansiblejpAnsible2.9 ネットワーク対応のアップデート #ansiblejp
Ansible2.9 ネットワーク対応のアップデート #ansiblejpakira6592
 
わたしを支える技術
わたしを支える技術わたしを支える技術
わたしを支える技術yoku0825
 
20140518 JJUG MySQL Clsuter as NoSQL
20140518 JJUG MySQL Clsuter as NoSQL20140518 JJUG MySQL Clsuter as NoSQL
20140518 JJUG MySQL Clsuter as NoSQLRyusuke Kajiyama
 
Scala EE 7 Essentials
Scala EE 7 EssentialsScala EE 7 Essentials
Scala EE 7 Essentialstnoda
 
Oracle Database Connect 2017 / JPOUG#1
Oracle Database Connect 2017 / JPOUG#1Oracle Database Connect 2017 / JPOUG#1
Oracle Database Connect 2017 / JPOUG#1Noriyoshi Shinoda
 
MySQL Fabricでぼっこぼこにされたはなし
MySQL FabricでぼっこぼこにされたはなしMySQL Fabricでぼっこぼこにされたはなし
MySQL Fabricでぼっこぼこにされたはなしyoku0825
 
DBスキーマもバージョン管理したい!
DBスキーマもバージョン管理したい!DBスキーマもバージョン管理したい!
DBスキーマもバージョン管理したい!kwatch
 
Java Batch 仕様 (Public Review時点)
Java Batch 仕様 (Public Review時点) Java Batch 仕様 (Public Review時点)
Java Batch 仕様 (Public Review時点) Norito Agetsuma
 
20160215 04 java ee7徹底入門 jbatch
20160215 04 java ee7徹底入門 jbatch20160215 04 java ee7徹底入門 jbatch
20160215 04 java ee7徹底入門 jbatchJun Inose
 
Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜
Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜
Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜JustSystems Corporation
 
Spring3.1概要 データアクセスとトランザクション処理
Spring3.1概要 データアクセスとトランザクション処理Spring3.1概要 データアクセスとトランザクション処理
Spring3.1概要 データアクセスとトランザクション処理土岐 孝平
 
Androidで使えるJSON-Javaライブラリ
Androidで使えるJSON-JavaライブラリAndroidで使えるJSON-Javaライブラリ
Androidで使えるJSON-JavaライブラリYukiya Nakagawa
 
MySQLおじさんの逆襲
MySQLおじさんの逆襲MySQLおじさんの逆襲
MySQLおじさんの逆襲yoku0825
 
光のMySQL 5.7
光のMySQL 5.7光のMySQL 5.7
光のMySQL 5.7yoku0825
 

What's hot (20)

イマドキの現場で使えるJavaライブラリ事情
イマドキの現場で使えるJavaライブラリ事情イマドキの現場で使えるJavaライブラリ事情
イマドキの現場で使えるJavaライブラリ事情
 
Add PLEASE clause to Oracle Database
Add PLEASE clause to Oracle DatabaseAdd PLEASE clause to Oracle Database
Add PLEASE clause to Oracle Database
 
わかった気になるMySQL
わかった気になるMySQLわかった気になるMySQL
わかった気になるMySQL
 
MySQL ガチBeginnerがやってみたことと反省したこと
MySQL ガチBeginnerがやってみたことと反省したことMySQL ガチBeginnerがやってみたことと反省したこと
MySQL ガチBeginnerがやってみたことと反省したこと
 
Scalaで行うマイグレーション ~Flyway~
Scalaで行うマイグレーション ~Flyway~Scalaで行うマイグレーション ~Flyway~
Scalaで行うマイグレーション ~Flyway~
 
Ansible2.9 ネットワーク対応のアップデート #ansiblejp
Ansible2.9 ネットワーク対応のアップデート #ansiblejpAnsible2.9 ネットワーク対応のアップデート #ansiblejp
Ansible2.9 ネットワーク対応のアップデート #ansiblejp
 
わたしを支える技術
わたしを支える技術わたしを支える技術
わたしを支える技術
 
20140518 JJUG MySQL Clsuter as NoSQL
20140518 JJUG MySQL Clsuter as NoSQL20140518 JJUG MySQL Clsuter as NoSQL
20140518 JJUG MySQL Clsuter as NoSQL
 
Scala EE 7 Essentials
Scala EE 7 EssentialsScala EE 7 Essentials
Scala EE 7 Essentials
 
Oracle Database Connect 2017 / JPOUG#1
Oracle Database Connect 2017 / JPOUG#1Oracle Database Connect 2017 / JPOUG#1
Oracle Database Connect 2017 / JPOUG#1
 
MySQL Fabricでぼっこぼこにされたはなし
MySQL FabricでぼっこぼこにされたはなしMySQL Fabricでぼっこぼこにされたはなし
MySQL Fabricでぼっこぼこにされたはなし
 
DBスキーマもバージョン管理したい!
DBスキーマもバージョン管理したい!DBスキーマもバージョン管理したい!
DBスキーマもバージョン管理したい!
 
Babelfish Compatibility
Babelfish CompatibilityBabelfish Compatibility
Babelfish Compatibility
 
Java Batch 仕様 (Public Review時点)
Java Batch 仕様 (Public Review時点) Java Batch 仕様 (Public Review時点)
Java Batch 仕様 (Public Review時点)
 
20160215 04 java ee7徹底入門 jbatch
20160215 04 java ee7徹底入門 jbatch20160215 04 java ee7徹底入門 jbatch
20160215 04 java ee7徹底入門 jbatch
 
Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜
Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜
Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜
 
Spring3.1概要 データアクセスとトランザクション処理
Spring3.1概要 データアクセスとトランザクション処理Spring3.1概要 データアクセスとトランザクション処理
Spring3.1概要 データアクセスとトランザクション処理
 
Androidで使えるJSON-Javaライブラリ
Androidで使えるJSON-JavaライブラリAndroidで使えるJSON-Javaライブラリ
Androidで使えるJSON-Javaライブラリ
 
MySQLおじさんの逆襲
MySQLおじさんの逆襲MySQLおじさんの逆襲
MySQLおじさんの逆襲
 
光のMySQL 5.7
光のMySQL 5.7光のMySQL 5.7
光のMySQL 5.7
 

Viewers also liked

Which is your favorite mysqld
Which is your favorite mysqldWhich is your favorite mysqld
Which is your favorite mysqldyoku0825
 
Handlersocket 20140218
Handlersocket 20140218Handlersocket 20140218
Handlersocket 20140218akirahiguchi
 
HandlerSocket plugin for MySQL
HandlerSocket plugin for MySQLHandlerSocket plugin for MySQL
HandlerSocket plugin for MySQLakirahiguchi
 
Handlerさんコンニチワ
HandlerさんコンニチワHandlerさんコンニチワ
Handlerさんコンニチワyoku0825
 
MySQL 5.7が魅せる新しい運用の形
MySQL 5.7が魅せる新しい運用の形MySQL 5.7が魅せる新しい運用の形
MySQL 5.7が魅せる新しい運用の形yoku0825
 
MySQLやSSDとかの話 前編
MySQLやSSDとかの話 前編MySQLやSSDとかの話 前編
MySQLやSSDとかの話 前編Takanori Sejima
 

Viewers also liked (6)

Which is your favorite mysqld
Which is your favorite mysqldWhich is your favorite mysqld
Which is your favorite mysqld
 
Handlersocket 20140218
Handlersocket 20140218Handlersocket 20140218
Handlersocket 20140218
 
HandlerSocket plugin for MySQL
HandlerSocket plugin for MySQLHandlerSocket plugin for MySQL
HandlerSocket plugin for MySQL
 
Handlerさんコンニチワ
HandlerさんコンニチワHandlerさんコンニチワ
Handlerさんコンニチワ
 
MySQL 5.7が魅せる新しい運用の形
MySQL 5.7が魅せる新しい運用の形MySQL 5.7が魅せる新しい運用の形
MySQL 5.7が魅せる新しい運用の形
 
MySQLやSSDとかの話 前編
MySQLやSSDとかの話 前編MySQLやSSDとかの話 前編
MySQLやSSDとかの話 前編
 

Similar to MySQLを拡張する

MySQL 開発最新動向
MySQL 開発最新動向MySQL 開発最新動向
MySQL 開発最新動向yoyamasaki
 
MySQL最新情報  ※2016年12月
MySQL最新情報  ※2016年12月MySQL最新情報  ※2016年12月
MySQL最新情報  ※2016年12月yoyamasaki
 
ML2/OVN アーキテクチャ概観
ML2/OVN アーキテクチャ概観ML2/OVN アーキテクチャ概観
ML2/OVN アーキテクチャ概観Yamato Tanaka
 
[中国地方DB勉強会] 第22回 Webアプリ開発をデータベース側から変革していく - MySQL 8.0新機能
[中国地方DB勉強会] 第22回 Webアプリ開発をデータベース側から変革していく - MySQL 8.0新機能[中国地方DB勉強会] 第22回 Webアプリ開発をデータベース側から変革していく - MySQL 8.0新機能
[中国地方DB勉強会] 第22回 Webアプリ開発をデータベース側から変革していく - MySQL 8.0新機能Ryusuke Kajiyama
 
20170622_MySQL最新情報 ~MySQL 8.0 開発状況、MySQL InnoDB Cluster、などのご紹介~ by 日本オラクル株式会社...
20170622_MySQL最新情報 ~MySQL 8.0 開発状況、MySQL InnoDB Cluster、などのご紹介~ by 日本オラクル株式会社...20170622_MySQL最新情報 ~MySQL 8.0 開発状況、MySQL InnoDB Cluster、などのご紹介~ by 日本オラクル株式会社...
20170622_MySQL最新情報 ~MySQL 8.0 開発状況、MySQL InnoDB Cluster、などのご紹介~ by 日本オラクル株式会社...Insight Technology, Inc.
 
Participation report of data stax accelerate 2019
Participation report of data stax accelerate 2019Participation report of data stax accelerate 2019
Participation report of data stax accelerate 2019MKT-INTHEFOREST
 
Reco choku tech night #09 -reinvent2018報告会-
Reco choku tech night #09 -reinvent2018報告会-Reco choku tech night #09 -reinvent2018報告会-
Reco choku tech night #09 -reinvent2018報告会-recotech
 
ネットワーク自動化ツール紹介(Ansible・NAPALM編)
ネットワーク自動化ツール紹介(Ansible・NAPALM編)ネットワーク自動化ツール紹介(Ansible・NAPALM編)
ネットワーク自動化ツール紹介(Ansible・NAPALM編)akira6592
 
LINEのMySQL運用について
LINEのMySQL運用についてLINEのMySQL運用について
LINEのMySQL運用についてLINE Corporation
 
MySQLの文字コード事情
MySQLの文字コード事情MySQLの文字コード事情
MySQLの文字コード事情Masahiro Tomita
 
Index shotgun on mysql5.6
Index shotgun on mysql5.6Index shotgun on mysql5.6
Index shotgun on mysql5.6yoku0825
 
20160929 inno db_fts_jp
20160929 inno db_fts_jp20160929 inno db_fts_jp
20160929 inno db_fts_jpyoyamasaki
 
日本発オープンソース!! スケールアウト型データベース GridDB入門 ~ GitHubからダウンロードして使ってみましょう ~
日本発オープンソース!! スケールアウト型データベース GridDB入門 ~ GitHubからダウンロードして使ってみましょう ~日本発オープンソース!! スケールアウト型データベース GridDB入門 ~ GitHubからダウンロードして使ってみましょう ~
日本発オープンソース!! スケールアウト型データベース GridDB入門 ~ GitHubからダウンロードして使ってみましょう ~griddb
 
Ansible ネットワーク自動化チュートリアル (JANOG42)
Ansible ネットワーク自動化チュートリアル (JANOG42)Ansible ネットワーク自動化チュートリアル (JANOG42)
Ansible ネットワーク自動化チュートリアル (JANOG42)akira6592
 
Node-REDのノード開発容易化ツール Node generator
Node-REDのノード開発容易化ツールNode generatorNode-REDのノード開発容易化ツールNode generator
Node-REDのノード開発容易化ツール Node generatorBMXUG
 
States of Dolphin - MySQL最新技術情報2013秋 -
States of Dolphin - MySQL最新技術情報2013秋 -States of Dolphin - MySQL最新技術情報2013秋 -
States of Dolphin - MySQL最新技術情報2013秋 -yoyamasaki
 
Building Silverlight Large Scale Application Using MVVM
Building Silverlight Large Scale Application Using MVVMBuilding Silverlight Large Scale Application Using MVVM
Building Silverlight Large Scale Application Using MVVMShotaro Suzuki
 
Qlik TECH TALK 20210706 SAPデータ分析を加速するQlikのアクセレレーターパッケージご紹介
Qlik TECH TALK 20210706 SAPデータ分析を加速するQlikのアクセレレーターパッケージご紹介Qlik TECH TALK 20210706 SAPデータ分析を加速するQlikのアクセレレーターパッケージご紹介
Qlik TECH TALK 20210706 SAPデータ分析を加速するQlikのアクセレレーターパッケージご紹介QlikPresalesJapan
 
SAP Extractorのソースエンドポイントとしての利用
SAP Extractorのソースエンドポイントとしての利用SAP Extractorのソースエンドポイントとしての利用
SAP Extractorのソースエンドポイントとしての利用QlikPresalesJapan
 

Similar to MySQLを拡張する (20)

MySQL 開発最新動向
MySQL 開発最新動向MySQL 開発最新動向
MySQL 開発最新動向
 
MySQL最新情報  ※2016年12月
MySQL最新情報  ※2016年12月MySQL最新情報  ※2016年12月
MySQL最新情報  ※2016年12月
 
ML2/OVN アーキテクチャ概観
ML2/OVN アーキテクチャ概観ML2/OVN アーキテクチャ概観
ML2/OVN アーキテクチャ概観
 
[中国地方DB勉強会] 第22回 Webアプリ開発をデータベース側から変革していく - MySQL 8.0新機能
[中国地方DB勉強会] 第22回 Webアプリ開発をデータベース側から変革していく - MySQL 8.0新機能[中国地方DB勉強会] 第22回 Webアプリ開発をデータベース側から変革していく - MySQL 8.0新機能
[中国地方DB勉強会] 第22回 Webアプリ開発をデータベース側から変革していく - MySQL 8.0新機能
 
20170622_MySQL最新情報 ~MySQL 8.0 開発状況、MySQL InnoDB Cluster、などのご紹介~ by 日本オラクル株式会社...
20170622_MySQL最新情報 ~MySQL 8.0 開発状況、MySQL InnoDB Cluster、などのご紹介~ by 日本オラクル株式会社...20170622_MySQL最新情報 ~MySQL 8.0 開発状況、MySQL InnoDB Cluster、などのご紹介~ by 日本オラクル株式会社...
20170622_MySQL最新情報 ~MySQL 8.0 開発状況、MySQL InnoDB Cluster、などのご紹介~ by 日本オラクル株式会社...
 
Participation report of data stax accelerate 2019
Participation report of data stax accelerate 2019Participation report of data stax accelerate 2019
Participation report of data stax accelerate 2019
 
Reco choku tech night #09 -reinvent2018報告会-
Reco choku tech night #09 -reinvent2018報告会-Reco choku tech night #09 -reinvent2018報告会-
Reco choku tech night #09 -reinvent2018報告会-
 
ネットワーク自動化ツール紹介(Ansible・NAPALM編)
ネットワーク自動化ツール紹介(Ansible・NAPALM編)ネットワーク自動化ツール紹介(Ansible・NAPALM編)
ネットワーク自動化ツール紹介(Ansible・NAPALM編)
 
LINEのMySQL運用について
LINEのMySQL運用についてLINEのMySQL運用について
LINEのMySQL運用について
 
MySQLの文字コード事情
MySQLの文字コード事情MySQLの文字コード事情
MySQLの文字コード事情
 
Index shotgun on mysql5.6
Index shotgun on mysql5.6Index shotgun on mysql5.6
Index shotgun on mysql5.6
 
20160929 inno db_fts_jp
20160929 inno db_fts_jp20160929 inno db_fts_jp
20160929 inno db_fts_jp
 
日本発オープンソース!! スケールアウト型データベース GridDB入門 ~ GitHubからダウンロードして使ってみましょう ~
日本発オープンソース!! スケールアウト型データベース GridDB入門 ~ GitHubからダウンロードして使ってみましょう ~日本発オープンソース!! スケールアウト型データベース GridDB入門 ~ GitHubからダウンロードして使ってみましょう ~
日本発オープンソース!! スケールアウト型データベース GridDB入門 ~ GitHubからダウンロードして使ってみましょう ~
 
Ansible ネットワーク自動化チュートリアル (JANOG42)
Ansible ネットワーク自動化チュートリアル (JANOG42)Ansible ネットワーク自動化チュートリアル (JANOG42)
Ansible ネットワーク自動化チュートリアル (JANOG42)
 
Node-REDのノード開発容易化ツール Node generator
Node-REDのノード開発容易化ツールNode generatorNode-REDのノード開発容易化ツールNode generator
Node-REDのノード開発容易化ツール Node generator
 
New relic
New relicNew relic
New relic
 
States of Dolphin - MySQL最新技術情報2013秋 -
States of Dolphin - MySQL最新技術情報2013秋 -States of Dolphin - MySQL最新技術情報2013秋 -
States of Dolphin - MySQL最新技術情報2013秋 -
 
Building Silverlight Large Scale Application Using MVVM
Building Silverlight Large Scale Application Using MVVMBuilding Silverlight Large Scale Application Using MVVM
Building Silverlight Large Scale Application Using MVVM
 
Qlik TECH TALK 20210706 SAPデータ分析を加速するQlikのアクセレレーターパッケージご紹介
Qlik TECH TALK 20210706 SAPデータ分析を加速するQlikのアクセレレーターパッケージご紹介Qlik TECH TALK 20210706 SAPデータ分析を加速するQlikのアクセレレーターパッケージご紹介
Qlik TECH TALK 20210706 SAPデータ分析を加速するQlikのアクセレレーターパッケージご紹介
 
SAP Extractorのソースエンドポイントとしての利用
SAP Extractorのソースエンドポイントとしての利用SAP Extractorのソースエンドポイントとしての利用
SAP Extractorのソースエンドポイントとしての利用
 

More from Masahiro Tomita

お前の罪を数えろ
お前の罪を数えろお前の罪を数えろ
お前の罪を数えろMasahiro Tomita
 
本当はこわいMySQLプロトコル
本当はこわいMySQLプロトコル本当はこわいMySQLプロトコル
本当はこわいMySQLプロトコルMasahiro Tomita
 
ネットワークこわい
ネットワークこわいネットワークこわい
ネットワークこわいMasahiro Tomita
 
MySQLの文字コード事情 2017春版
MySQLの文字コード事情 2017春版MySQLの文字コード事情 2017春版
MySQLの文字コード事情 2017春版Masahiro Tomita
 
MySQLの文字コード事情 2017版
MySQLの文字コード事情 2017版MySQLの文字コード事情 2017版
MySQLの文字コード事情 2017版Masahiro Tomita
 
「理論から学ぶデータベース実践入門」読書会スペシャル
「理論から学ぶデータベース実践入門」読書会スペシャル「理論から学ぶデータベース実践入門」読書会スペシャル
「理論から学ぶデータベース実践入門」読書会スペシャルMasahiro Tomita
 
アジャイルジャパン長野サテライト
アジャイルジャパン長野サテライトアジャイルジャパン長野サテライト
アジャイルジャパン長野サテライトMasahiro Tomita
 
本当はこわいエンコーディングの話
本当はこわいエンコーディングの話本当はこわいエンコーディングの話
本当はこわいエンコーディングの話Masahiro Tomita
 

More from Masahiro Tomita (20)

お前の罪を数えろ
お前の罪を数えろお前の罪を数えろ
お前の罪を数えろ
 
Ruby 2.5
Ruby 2.5Ruby 2.5
Ruby 2.5
 
本当はこわいMySQLプロトコル
本当はこわいMySQLプロトコル本当はこわいMySQLプロトコル
本当はこわいMySQLプロトコル
 
ネットワークこわい
ネットワークこわいネットワークこわい
ネットワークこわい
 
CSV
CSVCSV
CSV
 
MySQLの文字コード事情 2017春版
MySQLの文字コード事情 2017春版MySQLの文字コード事情 2017春版
MySQLの文字コード事情 2017春版
 
MySQLの文字コード事情 2017版
MySQLの文字コード事情 2017版MySQLの文字コード事情 2017版
MySQLの文字コード事情 2017版
 
Ruby24
Ruby24Ruby24
Ruby24
 
進捗と品質
進捗と品質進捗と品質
進捗と品質
 
「理論から学ぶデータベース実践入門」読書会スペシャル
「理論から学ぶデータベース実践入門」読書会スペシャル「理論から学ぶデータベース実践入門」読書会スペシャル
「理論から学ぶデータベース実践入門」読書会スペシャル
 
MyNAができるまで
MyNAができるまでMyNAができるまで
MyNAができるまで
 
文字化け
文字化け文字化け
文字化け
 
Crystal
CrystalCrystal
Crystal
 
メールの暗号化
メールの暗号化メールの暗号化
メールの暗号化
 
文字化け
文字化け文字化け
文字化け
 
進捗と品質
進捗と品質進捗と品質
進捗と品質
 
アジャイルジャパン長野サテライト
アジャイルジャパン長野サテライトアジャイルジャパン長野サテライト
アジャイルジャパン長野サテライト
 
🍣=🍺
🍣=🍺🍣=🍺
🍣=🍺
 
本当はこわいエンコーディングの話
本当はこわいエンコーディングの話本当はこわいエンコーディングの話
本当はこわいエンコーディングの話
 
Sequelのすすめ
SequelのすすめSequelのすすめ
Sequelのすすめ
 

MySQLを拡張する

  • 1. MySQLを拡張する Powered by Rabbit 2.1.9 MySQLを拡張する MySQL User Conference 2015 とみたまさひろ 2015-12-15
  • 2. MySQLを拡張する Powered by Rabbit 2.1.9 自己紹介 とみた まさひろ http://tmtms.hatenablog.com http://twitter.com/tmtms https://github.com/tmtm 長野県北部在住プログラマー( Ruby & C ) 長野ソフトウェア技術者グループ(NSEG)
  • 3. MySQLを拡張する Powered by Rabbit 2.1.9 自己紹介 日本MySQLユーザ会代表 MySQL 3.21 の日本語対応 (1998) MySQLのRubyバインディング作成 (1998) OSS貢献者賞 2013
  • 4. MySQLを拡張する Powered by Rabbit 2.1.9 MySQLは「世界でもっとも普及している オープンソースデータベース」 https://www-jp.mysql.com/
  • 5. MySQLを拡張する Powered by Rabbit 2.1.9 「伽藍とバザール」の「伽藍」
  • 6. MySQLを拡張する Powered by Rabbit 2.1.9 フリーソフトウェア(GPL2)
  • 7. MySQLを拡張する Powered by Rabbit 2.1.9 フリーソフトウェアでうれしいこと
  • 8. MySQLを拡張する Powered by Rabbit 2.1.9 無料(フリー)
  • 9. MySQLを拡張する Powered by Rabbit 2.1.9 無料でうれしい 個人ごとの開発環境 テスト環境 スケールアウトで台数増
  • 10. MySQLを拡張する Powered by Rabbit 2.1.9 自由(フリー)
  • 11. MySQLを拡張する Powered by Rabbit 2.1.9 自由でうれしい ソースが公開されている 自分で調べられる 改変して再配布
  • 12. MySQLを拡張する Powered by Rabbit 2.1.9 改変 MariaDB AWS RDS 「多様性は善」
  • 13. MySQLを拡張する Powered by Rabbit 2.1.9 仮に本家の開発が中断したとしても 第三者が継続できる
  • 14. MySQLを拡張する Powered by Rabbit 2.1.9 拡張
  • 15. MySQLを拡張する Powered by Rabbit 2.1.9 MySQLに機能を追加する
  • 16. MySQLを拡張する Powered by Rabbit 2.1.9 UDF - ユーザー定義関数 一番簡単な拡張 独自の関数を MySQL に組み込む 通常の関数 / 集約関数 MySQLのソースを見なくてもマニュアルだけで作 成可能 http://dev.mysql.com/doc/refman/5.6/ja/adding-udf.html
  • 17. MySQLを拡張する Powered by Rabbit 2.1.9 UDF hoge_init() クエリ実行前に呼び出される(引数チェックとか) hoge() 関数本体 hoge_deinit() クエリ実行後に呼び出される(メモリ解放とか)
  • 18. MySQLを拡張する Powered by Rabbit 2.1.9 例: mysql-mruby https://github.com/mattn/mysql-mruby mysql> SELECT mrb_eval('ARGV.map(&:upcase).join(",")', -> 'hoge', 'fuga') as a; +-----------+ | a | +-----------+ | HOGE,FUGA | +-----------+
  • 19. MySQLを拡張する Powered by Rabbit 2.1.9 プラグイン
  • 20. MySQLを拡張する Powered by Rabbit 2.1.9 プラグイン(5.7.9) mysql> show plugins; +----------------------------+----------+--------------------+---------+---------+ | Name | Status | Type | Library | License | +----------------------------+----------+--------------------+---------+---------+ | binlog | ACTIVE | STORAGE ENGINE | NULL | GPL | | mysql_native_password | ACTIVE | AUTHENTICATION | NULL | GPL | | sha256_password | ACTIVE | AUTHENTICATION | NULL | GPL | | MyISAM | ACTIVE | STORAGE ENGINE | NULL | GPL | | PERFORMANCE_SCHEMA | ACTIVE | STORAGE ENGINE | NULL | GPL | | InnoDB | ACTIVE | STORAGE ENGINE | NULL | GPL | | INNODB_TRX | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | INNODB_LOCKS | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | INNODB_LOCK_WAITS | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | INNODB_CMP | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | INNODB_CMP_RESET | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | INNODB_CMPMEM | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | INNODB_CMPMEM_RESET | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | INNODB_CMP_PER_INDEX | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | INNODB_CMP_PER_INDEX_RESET | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | INNODB_BUFFER_PAGE | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | INNODB_BUFFER_PAGE_LRU | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | INNODB_BUFFER_POOL_STATS | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | INNODB_TEMP_TABLE_INFO | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | INNODB_METRICS | ACTIVE | INFORMATION SCHEMA | NULL | GPL |
  • 21. MySQLを拡張する Powered by Rabbit 2.1.9 プラグイン(5.7.9) | INNODB_FT_DEFAULT_STOPWORD | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | INNODB_FT_DELETED | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | INNODB_FT_BEING_DELETED | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | INNODB_FT_CONFIG | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | INNODB_FT_INDEX_CACHE | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | INNODB_FT_INDEX_TABLE | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | INNODB_SYS_TABLES | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | INNODB_SYS_TABLESTATS | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | INNODB_SYS_INDEXES | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | INNODB_SYS_COLUMNS | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | INNODB_SYS_FIELDS | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | INNODB_SYS_FOREIGN | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | INNODB_SYS_FOREIGN_COLS | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | INNODB_SYS_TABLESPACES | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | INNODB_SYS_DATAFILES | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | INNODB_SYS_VIRTUAL | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | MRG_MYISAM | ACTIVE | STORAGE ENGINE | NULL | GPL | | MEMORY | ACTIVE | STORAGE ENGINE | NULL | GPL | | CSV | ACTIVE | STORAGE ENGINE | NULL | GPL | | BLACKHOLE | ACTIVE | STORAGE ENGINE | NULL | GPL | | partition | ACTIVE | STORAGE ENGINE | NULL | GPL | | FEDERATED | DISABLED | STORAGE ENGINE | NULL | GPL | | ARCHIVE | ACTIVE | STORAGE ENGINE | NULL | GPL | | ngram | ACTIVE | FTPARSER | NULL | GPL | +----------------------------+----------+--------------------+---------+---------+
  • 22. MySQLを拡張する Powered by Rabbit 2.1.9 プラグイン ストレージエンジンプラグイン InnoDB, MyISAM, CSV, Blackhole, … 全文パーサープラグイン 全文検索用トークナイザ: ngram デーモンプラグイン mysqld プロセス空間内で動作
  • 23. MySQLを拡張する Powered by Rabbit 2.1.9 プラグイン INFORMATION_SCHEMA プラグイン 準同期レプリケーションプラグイン 監査プラグイン 認証プラグイン パスワード検証プラグイン
  • 24. MySQLを拡張する Powered by Rabbit 2.1.9 プラグインの作り方 リファレンスマニュアル 24.2.4 プラグインの作成 http://dev.mysql.com/doc/refman/5.6/ja/writing-plugins.html
  • 25. MySQLを拡張する Powered by Rabbit 2.1.9 ストレージエンジンプラグイン
  • 26. MySQLを拡張する Powered by Rabbit 2.1.9 ストレージエンジンプラグイン InnoDB, MyISAM, Archive, Blackhole, … 標準のストレージエンジンは全部プラグイン
  • 27. MySQLを拡張する Powered by Rabbit 2.1.9 巷のストレージエンジンプラグイン mroonga http://mroonga.org/ja/ 日本語全文検索エンジン Groonga を MySQL から 使う
  • 28. MySQLを拡張する Powered by Rabbit 2.1.9 ストレージエンジンの作り方 ドキュメントあり MySQL Internals Manual Chapter 22 Writing a Custom Storage Engine http://dev.mysql.com/doc/internals/en/custom-engine.html でもソースみないと厳しいかも フリーソフトウェアだから見放題!
  • 29. MySQLを拡張する Powered by Rabbit 2.1.9 デーモンプラグイン
  • 30. MySQLを拡張する Powered by Rabbit 2.1.9 デーモンプラグイン mysqld プロセス空間内で何かを動かす 通常とは異なる TCP/IP の口を開けて何かすると か 起動直後から定期的に何かするとか
  • 31. MySQLを拡張する Powered by Rabbit 2.1.9 巷のデーモンプラグイン HandlerSocket https://github.com/DeNA/HandlerSocket-Plugin-for-MySQL Transactd http://www.bizstation.jp/ja/transactd/
  • 32. MySQLを拡張する Powered by Rabbit 2.1.9 デーモンプラグインの作り方 リファレンスマニュアル 24.2.4.5 デーモンプラグイ ンの作成 http://dev.mysql.com/doc/refman/5.6/ja/writing-daemon-plugins.html init() と deinit() 関数だけ 結構簡単
  • 33. MySQLを拡張する Powered by Rabbit 2.1.9 以上綺麗な拡張 (mysqldのコンパイル不要)
  • 34. MySQLを拡張する Powered by Rabbit 2.1.9 綺麗じゃない拡張 (mysqldのコンパイル必要)
  • 35. MySQLを拡張する Powered by Rabbit 2.1.9 改造
  • 36. MySQLを拡張する Powered by Rabbit 2.1.9 Charset/Collation リファレンスマニュアル 10.3 文字セットの追加 http://dev.mysql.com/doc/refman/5.6/ja/adding-character-set.html 実は1バイト文字セットはコンパイル要らず /usr/local/mysql/share/charsets/ マルチバイト文字は要コンパイル mysql-5.x.x/strings/CHARSET_INFO.txt どうしても ハハ=パパ=ババ と 🍣=🍺 問題を解決 したい人は改造してみるのもいいかも
  • 37. MySQLを拡張する Powered by Rabbit 2.1.9 ネットワークプロトコル MySQL Internals Manual Chapter 14 MySQL Client/Server Protocol http://dev.mysql.com/doc/internals/en/client-server-protocol.html MySQLのプロトコル解説 http://slide.rabbit-shocker.org/authors/tommy/mysql-protocol/ MySQLクライアントライブラリが無い処理系で実 装 Ruby/MySQL - pure Ruby 実装 https://github.com/tmtm/ruby-mysql
  • 38. MySQLを拡張する Powered by Rabbit 2.1.9 クエリ クライアントからのコマンド振り分け mysql-5.x.x/sql/sql_parse.cc クエリ構文解析 mysql-5.x.x/sql/sql_yacc.yy 独自のクエリを組み込める 「予約語書き換えればSQLインジェクション対 策!」
  • 39. MySQLを拡張する Powered by Rabbit 2.1.9 まとめ
  • 40. MySQLを拡張する Powered by Rabbit 2.1.9 まとめ プラグイン機構でコンパイルせずに結構拡張でき る ソースが見れるからプラグインも作りやすい mysqld 自体を改造することもできる 無料もいいけど自由重要 フリーソフトウェア万歳!
  • 41. MySQLを拡張する Powered by Rabbit 2.1.9 おまけ
  • 42. MySQLを拡張する Powered by Rabbit 2.1.9 アドベントカレンダー 元はクリスマスまでの期間を数える ために使われていたカレンダーのこ とで 〜中略〜 近年、インターネット上において、こ のカレンダーにならい、定められた テーマに従い、参加者が持ち回りで 自身のブログやサイトに記事を投稿 する企画が多く実施されています。 http://blog.qiita.com/post/132928437279/adcal2015
  • 43. MySQLを拡張する Powered by Rabbit 2.1.9 MySQL 関連のアドベントカレンダー 12/1〜25 まで開催中 MySQL Casual Advent Calendar 2015 http://qiita.com/advent-calendar/2015/mysql-casual MySQL Fabric&Routerつらくない Advent Calendar 2015 http://qiita.com/advent-calendar/2015/mysql_fabric MySQL 5.7の「罠」に狙われてもやられないため の Advent Calendar 2015 http://qiita.com/advent-calendar/2015/mysql57-yoku0825-traps MySQLマニュアルを読む Advent Calendar 2015 http://qiita.com/advent-calendar/2015/mysql_manual
  • 44. MySQLを拡張する Powered by Rabbit 2.1.9 MySQLだけで4つもある!
  • 45. MySQLを拡張する Powered by Rabbit 2.1.9 4つのうち3つが 「独りアドベントカレンダー」
  • 46. MySQLを拡張する Powered by Rabbit 2.1.9 MySQLの人たちちょっとおかしい
  • 47. MySQLを拡張する Powered by Rabbit 2.1.9 おわり