MySQL::Partition has been released!
MySQL::Partitionをリリースしていたのでお知らせです。パーティションを切る用のSQLを生成してくれるクエリビルダーです。
Webサービスでは如何にデータを増やさないか、DBを分割しないで一系統に抑えるか、DBをメモリに如何に載せきるかってのがゆるふわサービス運用をしていく上で重要です。MySQLを使っている場合、そのために非常に有用なのがパーティションで、適切にパーティションを切り、古いデータを随時Dropしていける運用に落としこむのが非常に大切なわけです。
社内のプロジェクトでもPartitionを活用しているわけですが、いまいち仕組み化されておらず、古いプロジェクトからコピペを重ねて秘伝のタレ化しており、例えばデイリーでパーティションを切る場合、MySQL5.5からはRANGE COLUMNS
パーティションが使えるにも関わらず、TO_DAYS()
とかを未だにコピペして使い続けていたり、逆にパーティションに馴染みのないエンジニアがパーティションを敬遠すると言った状況にあったので、これは良くないと一念発起してモジュールに起こした次第です。
今やってるプロジェクトでもかつて無いほどアグレッシブにパーティションを活用しているので、もうちょっと管理しやすい仕組みにしたいと思いその一環としてモジュール化したというのがあります。
パーティションが切れるようにテーブル定義されているかどうかのチェックなどはしていません。そういうのはプロジェクトでちゃんとテストを書けばよいのではないかと思います。MySQL::Partition自体のテストが参考になるでしょう。
最近思うのは、ある程度社内のコードの共通化と基盤整備をしようとするとCPANに上げでもしないと社内の人に使ってもらえないし、どうせ社外の人はほとんど使ってくれないので気にしないで好きにCPANに上げればいいということです。
また、ゲームとかだと、古いデータをガツンガツン消して、データ量を抑えこむのが一つの肝ですが、消しづらいが、データ量的にも厳しいものもあったりするわけです。チャットなどはその典型で、某サービスだと「Tから始まるAPI」が大変だという話を聞いたりするわけです。
そういうのは積極的に外部サービスに出してしまうのがひとつの手で、ゲームであれば、Lobiという便利なチャットサービスがあるのでそれを活用すると良いと思います。というステ(ry