BuddyPressのマルチサイトのデータベースを分離したい! ITかあさん

ITかあさん

BuddyPressのマルチサイトのデータベースを分離したい!

BuddyPressのマルチサイトのデータベースを分離したい!

BuddyPressのマルチサイト データベースの分離をしたい
ここ数週間、ずっとBuddyPressで作ったマルチサイトもとい、WordPressでのマルチサイト化に伴いデータベースの肥大化に対応するにはどうしたらよいものかとずっと考えてきましたが、やはり

マルチサイトをある程度の個数で、データベースを分離させる

ということを考えたほうがいいという結論を自分の中で出しました。

なぜデータベースを分離させるのか

実際にマルチサイトごとのデータベースの分離の手順に説明する前に、なぜマルチサイトをある程度のところでデータベースを分離させたほうがよいのか、熱く語ってもよいでしょうか?

理由 テーブル数が超やばい

マルチサイトをどんどん展開させていくといずれヤバくなるのがこのテーブル数の問題です。
下の画像は、一つのマルチサイトで生成されるテーブルです。

マルチサイトを一つつくると9個のテーブルが生成される

ということを頭いいれてほしいのですが、ではこれが仮に100個マルチサイトが出来ると、900個のテーブルが生成されるわけです。
1000個のマルチサイトで9000個のテーブルが出来るわけ
ですね。

だからどうした? と、今思いましたね?

え?別に何個作ったって、マルチサイトが出来ればそれでいいじゃん!

そう思っていませんか?でも、データベースのテーブルの正体を知ると、そうもいえなくなりますよ。

データベースに1テーブルで一つのファイル

データベースに1つテーブルを作ると、1つのファイルが生成されるのはご存知ですか?プログラムをがっつりやっていないとあまり気にしないかもしれませんね。

Mysqlのdataディレクトリには、データベースごとのディレクトリが用意され、そしてその中にテーブルごとのファイルが生成されていきます。

1つのマルチサイトで9つのファイルが生成され、マルチサイトがどんどん増えていくと、いずれこのフォルダはいっぱいになりますね。

システムファイル数の限界

多くはLinuxをWEBサーバーにしてサイトを作られていることでしょうが、システムファイル数の限界をご存知でしょうか?
1つのフォルダに何個のファイルを置くことが出来るかと言う問題です。

この件に関しては、こちらの掲示板での議論を参考にされるとよいかもしれません。

1つのディレクトリではいつか限界が・・・

どこで1つのデータベースでテーブルを複数作るのをストップさせるかは考えたほうがいいですが、どこで止めたほうがいいかというと、
私の個人的な意見も交えますと

2000~3000くらいでストップ

させるのがいいかと。

これはどのようなプログラムを作っていても、ある程度システムファイルや、ログファイル、キャッシュファイルはいくつかのディレクトリに分散させるのがプログラムの常識です。(あるいは、ある程度でキャッシュを削除するなど)

1つのディレクトリでウン万単位のファイルがあったら、見るだけでぞっとしませんか?

それに、ウン万のテーブルがあるデータベースをphpMyadminで開けると思いますか?無理です。

phpMyadminでも管理しきれない、ディレクトリに作れるファイル数にも限界があるということで、私ならマルチサイトは一つのデータベースでは最高でも

200~300くらいでストップ

が限界だと思うし、phpMyadminで管理させたければ100くらいで止めるべきです。

ただし、細かく分散させすぎると、それはそれで重たくなってしまうため、注意が必要です。

管理が大変面倒になる
ファイル数の限界が来る

大きくわけて2つの理由でマルチサイトはデータベースの分離をさせたほうがよいよ、ということをITかあさんは熱く あつく提案したいと思います。

あとは、うっかりデータベースを削除した時も(あまりないけど) リスクの分散も出来ますしね。

前置きが長くなりましたが、マルチサイトによるデータベースの肥大化に対抗するべく、

について説明したいと思います。

初夏のJavaScript祭 in サーキュレーションビル ForPro

ページ: 1 2