かみぽわーる

kamipo's blog

#mysqlcasual vol.4 でLTしてきました

4/17 に日本オラクルで開催された MySQL Casual #04 で話して来ました。

当日のスライドは以下になります。

SQLがむずかしくて生きるのがつらい

ちょいとまだ作り始めたばっかりで微妙なところも多々あるんですが、mruby_storage_engine のレポジトリは以下になります。

kamipo/mruby_storage_engine · GitHub

発表について

けっこう時間なくて準備にテンパってたので、あとで言及されてるのをみると説明たりてなかったなー(絞り込めないってLIMIT OFFSETの話じゃないの?的な)というところもあったけど、それがわかってる人は大丈夫な人なので大丈夫です!補足ありがとうございます!

mruby_storage_engine について

構想自体は一年前ぐらいからあって、よく同僚に「こういうことできたらうれしいとおもわへん?(でもめんどくさいので実装はしない)」というのを繰り返していたんですが、勉強会ドリブンで実装するチャンスをのがすとまた一年ぐらいめんどくさくてやらない病に陥るので、前日の晩に@さんに発表枠もらって後に引けない状態に追い込んでから徹夜でなんとかデモできるレベルまでもっていきました。

既存技術の組み合わせなんでやる気だせばすぐできると思ったんですが、なんかMySQL 5.6でうごかすことに変にこだわったせいで5.6から変わったところにけっこう苦しむことになって、いちばんやばかったのが、すでにテーブルをlockしてるクエリ内でさらに追加で他のテーブルもlockしようとするとassartに引っかかって落ちること。言い換えると、SELECT文とかのSQLはまず参照するテーブルのlockを取ってからテーブルを呼びにいくわけですが、そのテーブルの中からSQL側が知らない別のテーブルを参照しにいくことができなくなっていた。僕はMySQLの中の人でも開発者でもないので詳しいことはわからないが、作者の気持ちを考えなさいといわれるならば、これはおそらく、いままでは一貫性に問題のある使い方もすることができたけどこれからはAPIとしてはそういう使い方はしないでねってメッセージだと僕は思いました。

時間がなかったので発表のデモではかなり強引な方法で回避しているし、もともとやりたかったことの1割ほども実現できていないので、またやる気が出たタイミングでがんばりたいと思います。ぜんぜん作りかえちゃってもいいのでpullreqウェルカムです。

おわりに

@++, Oracle++
そして @++ (たい焼き的な意味で)

今回はかなり挑戦的なイベント運営でしたが、入れなかったひとが 1人だけど言う奇跡的な流れでした。

ただし、やはり水曜というだけあって飲みに行く人がぜんぜんいなくて、いろいろ話しできなかったのが残念やも!

というわけで、次回は @ さんの成果報告を楽しみにしております。

SEE ALSO

にひりずむ::しんぷる - MySQL Casual #04 で mysqlenv 作った的な話をしてきました