データベースにおいてパーティショニング(Partitioning)という負荷分散手法をご存知でしょうか。 先日のエントリ「JPAでマスター/スレーブ構成のMySQLを使うぞ」で紹介した方法ではスレーブをスケールアウトさせることでSELECTなど参照系のクエリに対してはある程度まで負荷分散ができました。しかしINSERTやUPDATE、DELETEなど更新系のクエリはスケールアウトすることができません。 パーティショニングはこのような問題を解決する手法の1つで、テーブルを一定のルールに基づいて複数のデータベースに分割し、データの格納先を分散させることで更新系のクエリの負荷を軽減させる仕組みです。シャーディング(Sharding)と呼ばれることもあります。 EclipseLinkはJPAの実装ですが、パーティショニングを簡単に扱うことができるように独自の拡張が施されています。今回はその方法をご