知恵をお貸し下さい。

2万件ほどの飲食店のデータを
店名や、住所などの条件で検索した結果を表示するような
Webサイトの構築を考えているのですが、
このような検索をする際に最も高速に検索できる方法は
どんな方法なのでしょうか?

私が考えられる方法としては、
1、データをテキストファイルにしてPHPを記述して検索する。
2、データをテキストファイルにしてPerlのCGIから検索する。
3、データベース(PostgreSQL)からPHPを記述して検索する。
4、データベース(PostgreSQL)からPerlのCGIから検索する。
と、これぐらいしか思い浮かばないです。

WEBサーバーの環境としては、
LINUX、Apache
Perl使用可
PHP使用可
PostgreSQL使用可

理由も添えて教えて頂けるとうれしいです。

以上、よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

テキストファイルをサーチするより、データベース化した方が検索は格段に速いですよね。


アプリケーションの動作もPerlなどのCGIよりPHPの方が高速です。
よって、おすすめは3の「データベース(PostgreSQL)からPHPを記述して検索する」です。
2万件程度ならデータ量としては大したことありません。
10万件ほどのレコードを持つデータベースを検索するシステムをPHPとPostgreSQLで作ったことがありますが、検索時間はほとんどかかりません。全く問題ないと思いますよ。
    • good
    • 0
この回答へのお礼

非常にすばやい&的確な回答をありがとうございます。
希望の光が見えてきました。

お礼日時:2000/12/31 09:54

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

QCGI/Perlという本はありますがCGI/PHPという本はないのはなぜですか?

アマゾンで調べると表題でCGI/Perlという本はありますがCGI/PHPという本はないのはなぜですか?

Aベストアンサー

なぜそのような書籍が無いのか結論から申し上げると「需要が無い」からです。
その理由はPHPとCGIの動作に起因し、PHP利用の最大のメリット(?なのでしょうか?)であるHTML組み込みなど利用できなくなるからです。

動作の概略(あくまで概略なので細かくするとキリがありません)を示しますと(右に長いのでテキストエディタなどにコピペしてみていただくと見やすいかと思います)

CGIの動作
 ブラウザ-[INTERNET]->Webサーバー -[CGI]-> システム:処理言語{Perl/C/Ruby...etc.}+プログラム:処理結果 -[CGI]-> Webサーバー -[INTERNET]->ブラウザ

PHPの動作
 ブラウザ-[INTERNET]->Webサーバー:PHP:処理結果 -[INTERNET]->ブラウザ

PHPを単体で処理できるようにインストール設定すればPHPをCGIとして利用することも可能です。当然、利用範囲がCGIの域を出なくなり、PHPとしてのメリットがなくなってしまいます。
そのような非効率的な運用利用をする方はほとんどいないので書籍にしても需要が無いと思います(何らかの事情で必要な方なら、WebサーバとCGIがしっかり理解できていれば簡単に実現できるかと思います)。

ちなみに、代表的なWebサーバApacheは外部組み込み機能を使ってPerlを「PHPの動作」と同じ動きをさせることができます。
そちらは「CGI」の範疇ではなく「Webサーバー構築」の分野ですのでそういった書籍を参考にしてください。

なぜそのような書籍が無いのか結論から申し上げると「需要が無い」からです。
その理由はPHPとCGIの動作に起因し、PHP利用の最大のメリット(?なのでしょうか?)であるHTML組み込みなど利用できなくなるからです。

動作の概略(あくまで概略なので細かくするとキリがありません)を示しますと(右に長いのでテキストエディタなどにコピペしてみていただくと見やすいかと思います)

CGIの動作
 ブラウザ-[INTERNET]->Webサーバー -[CGI]-> システム:処理言語{Perl/C/Ruby...etc.}...続きを読む

Qキーワード検索機能付きデータベースのCGIを探しています。

今度、仕事で、表題のようなCGIが必要になりました。
具体的には、求人情報をデータベース化して、検索出来るようにしたいのです。
出来きれば、PCはもちろん携帯からも利用出来るものが欲しいです。
あまり予算がないので、出来れば安い方がいいのですが、「高いけどこんなのあるよ」とかでも、情報があればよろしくお願いします。

Aベストアンサー

> 具体的には、求人情報をデータベース化して、検索出来るようにしたいのです。
PHPとPostgreSQL(他のRDBも可)の組み合わせがよくあるパターンだと思います。
無料で使えるという点で。

ただ、「求人情報」となるとレアなCGIなので、そのまま使える公開スクリプトは存在しない気がします。従って、業務に合わせて作り込む必要があります。

・・・RDBとJavaの組み合わせもありますが、コストが大きいため今回は対象から外しました。

Qperlのcgiで-wTを記述するとエラーに

http://oshiete.goo.ne.jp/qa/7451675.html

まだcgiについてわからないことが多く、
色々質問させてもらっているのですが、致命的な?問題がわかりました。

perlにてcgiを作成し、ローカルPCにてコードのチェックのため、

コマンドプロンプトにてC:\adress\test>perl -c encoding

とするとエラーが出ます。
ソースを下の行から順にコメントアウトして調べたところ、
一番最初の行の

#!/usr/bin/perl -wT

で、エラーが出ているということらしいです。
"-T" is on the #! line, it must also be used on the command line at enncoding.cg
i line 1.
この1文が出てしまいます。

-wTを消すとエラーが出なくなります。

エラーを見つけるための-wT記述だと思っていたのですが、-wT自体がエラーになっているということは、一体どういうことなのでしょうか?
書き方が違うのでしょうか?

詳しく教えて頂きたいです。

http://oshiete.goo.ne.jp/qa/7451675.html

まだcgiについてわからないことが多く、
色々質問させてもらっているのですが、致命的な?問題がわかりました。

perlにてcgiを作成し、ローカルPCにてコードのチェックのため、

コマンドプロンプトにてC:\adress\test>perl -c encoding

とするとエラーが出ます。
ソースを下の行から順にコメントアウトして調べたところ、
一番最初の行の

#!/usr/bin/perl -wT

で、エラーが出ているということらしいです。
"-T" is on the #! line, it must also be used on the c...続きを読む

Aベストアンサー

#!で始まる行は、そのファイルを単独で実行するときの引数指定です。

「perl -c encoding.cgi」というように、明示的にperlインタプリタを起動してファイル指定した場合は、#!の行は基本的に意味を持ちません。

その上で、perlインタプリタが「#!行では -T オプション付になっているのに、-Tオプションなしで実行しようとしている」ということでエラーにしているのです。

チェックの時も、「perl -cwT encoding.cgi」のように、-Tオプションを付けてください。
そうすればエラーにならなくなります。

QPerlとPhpのクッキーの記述方法

現在Perlで掲示板などをつくっているのですが
クッキーの記述はPHPも同じなのでしょうか?

Aベストアンサー

 PHPは使ったことがないんですが、基本的には同じはずです。もちろん言語差の部分は別ですが。
 これらの言語をインターネットで使う場合、言語はすべて「CGI」という環境下で動かすことになります。
 クッキーの仕様はこのCGIのものですので、やり方自体は同じはずです。

 具体的には、下記のURLをご参照のこと。

参考URL:http://tohoho.wakusei.ne.jp/wwwcook.htm

Qperl使用のCGIでのデータファイルの取り扱いについて

こんにちは、
perlでCGIを動かしているんですが
掲示板やアクセスログなどのデータファイルの置き場所についてこまっています
perlのopen関数などでファイルを開くことはできても、直接URLを指定すれば
見ることができてしまいまます。
内部の実行からは読み書きできて、直接URLを指定したら、アクセス拒否にする
というパーミッションの設定or.htaccessなどの設定方法があれば教えてください。

Aベストアンサー

えっと、パーミッションは 606 で良いはずです。

一般的な場合として apache を見ますと、apache は各プロセスを指定のユーザ
権限で実行します。nobody や www といった名前を持つものだったりしますが
これは、一般のユーザではないです。で、660 がいけない理由ですが、
CGIの実行権限はステッキービットなどがセットされない限りは other 権限。
つまり最後の部分です。よって、 705 のCGIファイルを実行すると 660 ファイルは
読み込めません。other 権限では パーミッションは 0 であるからです。

でぇ、アクセスの制限で一般的なのは、プロバのユーザの場合、
public_html のような公開用ディレクトリと同じ位置に置けば(普通はpublic_html以下)、
アクセスできません。(CGIからは覗けます。)

.htaccess も良い方法です。設定例も結構あるので検索すれば普通に出ますよね。


このカテゴリの人気Q&Aランキング

おすすめ情報