Submit Search
MySQLを拡張する
•
2 likes
•
5,249 views
Masahiro Tomita
Follow
1 of 47
Download now
Downloaded 14 times
More Related Content
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 おわり
Download