MySQLのVIEWについて

2009/11/30 | MySQL

教えてもらったことをメモ。

とりあえず「単なるデータの格納庫」として、データベースを使っている。MySQLはバージョン5からVIEWが使えるようになった。作り方や使い方はわかっているが「実際のところVIEWって何」と根本的なことが気になった。MySQLのVIEWについて人に教えてもらった。

MySQLのVIEWは大きく2タイプに分かれる(作成時に指定でき、未指定の場合は自動選択される)。

  • MERGE
    SQLを記述する際にVIEWを呼び出すと、VIEWを定義したSQL文が、当該VIEWを記述した部分に割り当てられて実行される。つまりSQL文に仮の名前をつけておくような感じ。
  • TEMPTABLE
    TEMPTABLEを作成して、そこにVIEWで定義したSQL文の結果を展開し、それがテーブルとして扱われる。

TEMPTABLEもイメージとしてはわかっていたのだが、よく理解していなかったので調べてみた。当たり前だがマニュアルに書いてあった。

MySQL バージョン 3.23 以降では、テーブルの作成時に TEMPORARY キーワードを指定することができます。テンポラリテーブルは現在の接続の間のみ有効で、接続が閉じると自動で削除されます。そのため、異なる 2 つの接続が同じテンポラリテーブル名を使用できます。この場合、それぞれの接続のテンポラリテーブル間でコンフリクトが発生したり、同名の既存のテーブルとの間でコンフクリトが発生したりすることはありません(既存のテーブルはテンポラリテーブルが削除されるまで表示されません)。

現在の接続の間のみ有効ね。ということはpconnectすれば、結構な時間使えるということになるのかな。って・・・pconnectもイメージでしかわかっていない。これも調べておくか。

なにはともあれ、VIEWを使う1番のメリットはSQL文の可読性をあげることのようだ。またTEMPTABLEの場合は、場合によっては速くなることもあれば遅くなることもあるようだ。

mb_send_mailの第5引数のことで

mail関数でもmb_send_mail関数でも同じだが、第5引数があれば、それはMTAにコマンドラインパラメータとして渡される。これにより受信するメールヘッダにReturn-Pathがセットされ正しくエラーメールが届くようになったり、スパムと判断されにくくなったりする。書式はメールアドレスの前に「-f」とつけるだけ。

ただ、第5引数を与えても、Return-Pathが環境によって付加されないことがわかった。おそらくメール転送に起因するようだ。

現在メインのメールアカウントとしてgmailを使用している。会社ドメインやその他独自ドメインは種々のレンタルサーバで運用しており、メールアドレスはレンタルサーバ内でアカウントを作成しておいて、すべてgmailに転送するよう設定している。

例えばサーバAにメールアカウントを設定してgmailに転送し、以下のスクリプトを流すと、受信したメールには適切にReturn-Pathに値が設定されている。

mb_send_mail(‘Aサーバ上のメールアドレス’,’タイトル’,’本文’,’From: 適当なメールアドレス’,’-f適当なメールアドレス’);

ここで「Aサーバ上のメールアドレス」を「Bサーバ上のメールアドレス」に変更する。A同様Bでもgmailに転送するよう設定している。こちらの場合はReturn-Pathに値が未設定の状態でメールが届いた。以下のような感じ。

Return-Path: <>

mb_send_mail(‘kitao@komamono.com’,’試験’,’テスト’,’From: info@fishup.net’,’-finfo@fishup.net’);

どうやら、レンタルサーバの各種設定(おそらくはMTAの設定)によって、挙動が変わるようだ。これは多分転送設定した場合に現れるようで、転送なしの場合はどのサーバでも問題なく動作するようだ(上記のサーバでも直接gmailのメールアドレスを指定した場合は両方とも問題なかった)。レンタルサーバも、特にココ、というわけではなく複数のレンタルサーバで同様の問題が出ることを確認した。

でも、これ。レンタルサーバのMTAの問題だからどうにもならなさそう。

PHPとSQLiteでブログを開発する

昨今レンタルサーバは安価になった。以前は「独自ドメインはオプション」みたいなのもあったけど、今は独自ドメインが当たり前。それどころか月額1000円そこそこでマルチドメイン無制限、サブドメイン無制限、メールアドレス無制限なんてレンタルサーバもよく見るようになった。今はXserverがそこそこ安定しているように思う。

エックスサーバー

マルチドメイン無制限なレンタルサーバは他にもたくさんあるみたいだが、データベース数無制限とかデータベース容量無制限なんてサービスは、有名どころのサービスでは見たことがない。「ドメインやサブドメインを複数作ったら、その数だけデータベースも使いたい」というのが人情だと思うのだが・。

そんなときにSQLiteがいい。SQLiteは単なるファイルを設置するだけだから、数に制限もない。データベースに格納する容量もウェブ容量を超えなければ問題ない。だから最近自分のサイトを作るときはSQLiteを最大限活用するようにしている。

しかし、ブログ、PHPで動くブログでSQLiteを採用しているものってほとんど見かけない。Googleで検索してもうまく見つけられない。海外では存在するようだが、日本での知名度はほとんどないに等しいようだ。がんばって使ってみようかとも思ったけど、どうせなら自分好みのブログを、ということで自分で開発してみることにした(車輪の再発明とは言われたくない)。

ということで現在開発中。初版は最低限の機能だけ実装して、超簡単お手軽ブログソフトとして公開する予定。今のところ簡易CMS的な用途で使えるようなレベルにはなっているので、これを充実させていきたい。とりあえず正月明けにリリースしたいと思っている。本当はゆっくり開発したい気もするが、重たい案件を抱えてしまっていて、その息抜きのために自分の開発をしたい、ということが根底にある。現実逃避の手段として、本業と同じことをするって・・・不健康極まりないな。

jpFormバグフィックス

2009/11/26 | その他

無料アンケートフォームレンタル「jpForm.net」を自分でも実際に使っている。使ってみて初めて、使い勝手のよしあしとか小さなバグの発見とかがある。開発者視点と利用者視点の違いを改めて思い知らされるしだいだ(っていうか見切り発車で公開しているから仕方ないといえば仕方ないのだが)。

それに欲しい機能も見えてくる。欲しい機能を全て実装するとなると作業も大変だし、「誰でも使える」システムではなくなってしまう可能性もある。少し検討しなくてはいけない。

現状実際にアンケートを実施し、一通り試してバグもつぶして、だいたい大丈夫。あと、広告の表示だけ。来週には広告を復活させる予定なので、広告なしアンケートを実施されたい方は今のうちにどうぞ。

無料アンケートレンタルフォーム「jpForm.net」

jpForm広告削除

2009/11/22 | その他

無料アンケートフォームレンタル「jpForm.net」の回答フォーム(PC画面)の広告をいったん削除した。テスト不足。CSSが崩れていた。

広告はいずれ復活するけど、当面時間が取れるまでは放置。広告なしでのアンケートフォームの利用は今がチャンス(汗)。

無料アンケートレンタルフォーム「jpForm.net」


守谷市(まちの情報ポータル) 無料アンケートレンタルjpForm.net