Shardingしているdatabaseを跨いでselectとかできるツールを作った
Shardingって何?なんでこんなツール必要なの?
というのは以下の素晴らしいエントリに全て書かれているので省略。
techblog.kayac.com
この記事は本当に分かりみが深い。
Shardingはとにかくダルくて、これは経験した人じゃないと分からないと思う。
shardingされたレコードを探す時、手動だとこんな感じ。
- どこのshardにあるの?というのを確認する
- 確認した情報をもとに、DBに接続する
2段階踏まないとならないのがまず面倒で、更に接続するshardごとにhost違うとこんな有様に。。
mysql -u root -h db01 shard1 mysql -u root -h db02 shard2 mysql -u root -h db03 shard3 : :
最初は`alias`で乗り切ろうと思ったけど、乗り切れないよこんなの・・・ 😂
そこで、「Shardingしているdatabaseを跨いでselectとかできるツール」の出番です。
MySQL::Sharding::Clientを使わないで作り直した理由
https://github.com/ken39arg/p5-MySQL-Sharding-Client
もうこれがあるのだから、車輪の再開発では?という感じではあるのだけど、
- コマンドの履歴使いたかった(↑押してidだけ書き換えて実行したい)
- `exit`でpromptを抜けたかった
- SELECTだけじゃなくてALTERもやりたい(開発環境で全shardにALTERするのが本当に面倒)
- perlの環境構築しなくても使える
ツールっていつも使ってるのと同じ感じに使いたくて、
クエリのヒストリーを使いたいというのが最大のモチベーションだった。