OpenPNE MySQLデータ 容量が・・・・すごく・・・ | WEB系技術電脳日記

OpenPNE MySQLデータ 容量が・・・・すごく・・・

仕事でもプライベートでも設置してあるOpenPNEがMySQL容量問題いくつか出てくる。
専用サーバーでも、レンタルでも・・いつかはこうなるとは予想はしているが、
参加人数は累乗して画像やデータが増えていく。
加速してデータ量が増えるのは、予想はしていたが、
時期までは誰も予想はつかないし、無駄に次フェーズを増やしても問題がある。

業務では対応してくれる方がいるので良いが、自分の趣味のサイトはそうはいかないので
自分で、対応する。

以下記録
;---------------------------------------------------------------------
趣味的なPNEは、昨夜にMYSQLデータオーバー発生

”対応しないと垢戻さない(´・ω・) ス”・・・という段階まで。

50MBぐらいのMySQLデータ量なのに、既に1GB。
1000MBじゃ当たり前か。

そもそも、DBにバイナリ格納ってのが、セキュアにはいいが、
運営にはハードウェアの支援なしでは無理。
仕方なしで、会員情報は取得して移管、カスタムの必要となる。

OpenPNE内の会員情報は、ハックやらインジェクション対策もあろうけど、
他から見えないようにPearのCrypt_Blowfishとbase64_encodeで暗号化+テキスト化して
MySQL内のc_member_secureあたり、、

データ格納が、
Crypt_Blowfishで暗号化・・・データはバイナリ(表示不可能)
文字列として処理するのに都合のよいbase64_encode で表示可能な文字に変換
MySQL DBにBLOBで格納
BLOB・・・Binary Large Object

上記。戻しは逆でキーだけ取得して、新たに抽出用のスクリプトをCRONで出せるようにしておく。

以下参照

すごくありがとうです。
BlueeyesBlue
http://bluenotes.justblog.jp/technote/2007/04/pearblowfish_42ed.html

ん?シナトラ?
+-------------------------------------------------------------------------------
define('ENCRYPT_KEY', 'キーワード'); // OpenPNE/config.phpに指定した値
$path="OpenPNE/lib/includeへのパス";
set_include_path(get_include_path() . PATH_SEPARATOR . $path); //ライブラリパスを追加
include_once 'Crypt/Blowfish.php';
$blowfish = new Crypt_Blowfish(ENCRYPT_KEY);
$bindata = '復号化するデータ'; // DBからselectした結果など
$decoded = base64_decode($bindata); // バイナリに戻す
$decrypted = $blowfish->decrypt($decoded);
echo $decrypted;
?>
+-------------------------------------------------------------------------------

Crypt_Blowfish関連のファイルはOpenPNEのソースにバンドルされているため、
Pearで追加インストールする必要はない。

注意)暗号化モードとして、CBC、ECBモードがある。
キーと暗号化する内容が同一の場合、ECBモードでは暗号化の度に同じバイナリを返すが、
CBCモードでは暗号化の度に結果を変えることができる。
頻繁に使用するデータの場合、CBCモードを使ったほうが推測されにくい。
http://pear.php.net/package/Crypt_Blowfish/docs/latest/Crypt_Blowfish/Crypt_Blowfish.html

http://www.phppro.jp/qa/159?sort=desc