Category Archives: DB

Zend_Db_Table_AbstractでZend_Cacheを利用して負荷軽減

オデの日記@WEB系: Zend_Db_Table_AbstractでZend_Cacheを利用して負荷軽減

で、このZend_Db_Tableですが、生成する度にdiscribetable()というメソッドが呼ばれテーブル情報を取得します。とても便利なのですが、都度DB接続が行われ非効率すぎるのでZend_Cacheを利用してデータをキャッシュさせておきます。
discribeTable()が走るタイミングは
・insert()
・find()
・info()
を呼んだ時だそうです。

というわけでキャッシュを組み込みましょう。

[php]
$frontendOptions = array(
‘automatic_serialization’ => true
);
$backendOptions = array(
‘cache_dir’ => TMP_PATH
);

$cache = Zend_Cache::factory(
‘Core’,
‘File’,
$frontendOptions,
$backendOptions
);
Zend_Db_Table_Abstract::setDefaultMetadataCache($cache);
[/php]

さくらインターネットで MySQL のバージョンを 4 から 5 に移行

さくらインターネットで MySQL のバージョンを 4 から 5 に移行 – 転校生@Hatena

もう、まんま↑で私もMySQL4からMySQL5に移行しました。元々のデータがUTF-8で、mysqldump4をした際に出力されたSQLのエンコードがかな~り怪しかったですが、特に問題なくインポートできましたヨ。(たぶん)
かなりドキドキしましたが(^-^;

はてな流大規模データ処理

KOF 2008 の発表資料 – naoyaのはてなダイアリー

はてな流大規模データ処理の発表資料を見てたら、データベースのパーティショニングを前提とした設計、というのが載っていて興味を引きました。

普通にテーブルが分かれている場合、JOINを使って、

mysql> select url from entry INNER JOIN bookmark on entry.eid = bookmark.eid
-> where bookmark.uid = 169848 limit 5;

こんな感じでSQL文を発行しますが、テーブルがパーティショニングで分けられている場合、

mysql> select eid from bookmark where uid = 169848 limit 5;
+—–+
| eid |
+—–+
| 0 |
| 4 |
| 5 |
| 6 |
| 7 |
+—–+
5 rows in set (0.01 sec)

mysql> select url from entry where eid in (0, 4, 5, 6, 7);

こう、JOINせずに求めるという・・・。力業ですね(^_^;)
まだパーティショニングしたことないですが、こうなりますよねー。やはり。

php_sennaとは

php_sennaとは – Senna (非公式) PHPバインディング

php上からSennaを直接扱えるエクステンション、php_senna。

$index = new Senna_Index('/tmp/php_senna_sample');
$index->upd(‘key1′, NULL, ‘This is a sample.’);
$index->upd(‘key2′, NULL, ‘This is an another.’);
$index->update(‘key3′, 1, NULL, ‘php_senna sample’);
$index->update(‘key3′, 2, NULL, ‘binding’);
$index->update(‘key3′, 3, NULL, ‘sample code’);

$records = $index->query(‘sample’);
foreach ($records as $row) {
echo $row->getKey(), ‘ = ‘, $row->getScore(), “\n”;
}

Tritonなどを入れなくても、こんな感じでSennaを使えるらしいのです。
これは素晴らしいですね。

DataGrid for Zend Framework

CakePHP のおいしい食べ方: Zend FrameworkでCRUD

Zend FrameworkでやるDataGrid的な何か。

PDF
Office 2003
Offiee 2007
Excel
XML
CSV
OpenOffice spreadsheet
OpenOffice Document text
などの形式で出力できるそうです。Datagridより、こちらのほうに心ひかれてしまいました。

確かに心惹かれます!

ZendFramework SQL Debug View Helper

ZendFramework SQL Debug View Helper | ヲゾゾ wozozo blog

cakeとかsymfonyには画面下にSQLログみたいなのが表示されてる。これzfにも欲しい。

とのことで、Zend Framework用のを作られています。カコイイ!
cakeとかsymfonyはそんなのがあるんですねぇ。触ってみないとですね。

ZendでSQLのログを出力

ZendでSQLのログを出力する | mono-blog

Zend_Dbにprofilerが付いているので、それを使って最後に使ったクエリーをログに書き出す、といったことをやられています。
これは便利ですね。

Profilerもあったのは覚えてても、こういう具体的な使い方は思いつかない・・(^_^;)
でも、これでもう忘れません!たぶん!活用します!

O/Rマッピング関係の用語

ブログなんだよもん – O/Rマッピング関係の用語
PHPとは直接関係ありませんが、O/Rマッピング関係の用語の勉強ということで。確かにDAOとかよくわからなかったお。

データベースの項目を1回の操作で加算処理

TRASH-NEWS:ネットでは自明の理として書かれないプログラムの基本事項

データベースから何かしらのkeyを元にデータを持ってきて、それを加算して、アップデートして、みたいな流れではなく一度に処理してしまおう、というお話です。

データベースの項目を1回の操作で加算処理するSQL文

UPDATE `(テーブルの名前)` SET COUNTER = COUNTER + 1 WHERE ID=1

この例文だとID=1のCOUNTERを1加算します。

な、なるほどー。これは便利。さっそく取り入れるしかっ
使える時にこれを覚えているかどうかが問題だ。そのためのブログだけど。

phpMyBackupPro

phpMyBackupPro – the MySQL backup tool :: Features

WEB上からMySQLをバックアップするためのソフトです。スケジューリングや、ftp、メールにバックアップデータを転送できるのが特徴でしょうか。

インストール方法は、

・ダウンロード
・解凍
・アクセスできるディレクトリへコピー
・global_conf.phpとexportフォルダの権限を書き込み可能に
・ブラウザからアクセス

でmysqlの設定などをWEB画面から行ってください。
無事バックアップできましたでしょうか。
二度目以降のアクセスに必要なユーザ名とパスワードはDBへ接続する際のものとなります。