http://www2.inforyoma.or.jp/~tokaji/cgitech/db.htm
を見てperlで簡易データベースを作ることが可能ということを知ったのですが、いくつか質問があります。
お願い致します。
<状況>
flashから送られてきた「ID」・「パスワード」・「その他のデータ」をサーバのperlデータベースで管理する。
(1)まず、本当にperlでデータベースは作れるのでしょうか?
(2)access等の簡易ではないデータベースと比べると
どんなリスクがあるのでしょうか?
(3)メモ帳でデータの管理をすると思うのですが、セキュリティ面は、大丈夫でしょうか?
(4)どのくらい(仮に1000~10000人)のアクセスに耐えられるのでしょうか?
サーバにかかる負荷は、access等の簡易ではないデータベースと比べると、大きくなるのでしょうか?
(5)Flashからのデータをperlを使い管理する時、
最善の方法があれば教えてください。
長くなりましたが、よろしくお願い致します。
No.3ベストアンサー
- 回答日時:
おそらく、「簡易データベース」と呼んでおられるのは、単にSQLインターフェースを持たないデータベース、ということではないでしょうか?(違ったらすみません)
たとえばAccessだとかOracleだとかMySQLだとかPostgresSQLだとかは、SQLによって操作できるデータベースで、当然、その環境にインストールされている必要があります。
●このようなSQLインターフェースを備えたデータベースは、DBI、DBDを利用して使う。
質問文から推察する限り、それらがインストールされていない環境で、何かしらのデータベースを使いたい、ということですよね。
以下、お使いの環境などが判らないので推測ですが。
その場合の選択肢として、
●テキストファイルをデータベースのように使う(フラットファイルと呼ばれます)。多少強引にだがSQLでアクセスする方法もあることはある。しかしスケーラビリティが低く、データ量に限界があるなど、何かと問題も起きる。
●SQLが不要なら、DBMが有効。多くの環境、特にUNIX系ならほとんど、サポートされているはず。ハッシュDBなどと呼ばれることもある。
このDBMにもいくつか種類があり、質問文のリンクでも、「NDBM」というDBMのひとつを使っています。
あくまでも個人的には、DBMを使うならBerkelyDBが一番良いかと思います。
お使いの環境でBerkelyDBが使えるかどうか調べるには、手っ取り早いのは以下のスクリプトを実行してみることです。
-----------------
#!/usr/bin/perl
use DB_File;
print "Content-type: text/plain\n\n";
print "$DB_File::VERSION\n";
-----------------
※先頭行を適宜変更。「print "Content-type~」はシェルでなくブラウザに表示させる場合用。
これでバージョン番号が表示されれば使えます。
DBMはSQLインターフェースを持ちませんが、非常に簡単で手軽に使えます。各レコードをハッシュ変数として扱えます。
リスクとセキュリティについては、データファイルの管理以外には、特に大きな問題はないと思います。もちろんSQLが使えないのは言うまでもないですが。
パフォーマンスなど細かい違いについては、様々あります。
容量に制限はありません(サーバーのディスクなどは別)。また質問にあるメモ帳で管理するテキストファイルではないので、それよりは圧倒的に速いです。
ご回答ありがとうございます。
さっそくBerkelyDBが使えるのか試してみたいと
思います。
tasekiさんの回答を拝見していると
私はまだまだ足りない部分が多いなと
思い知らされました。
教えていただいたことをしっかりと理解し
作っていきたいと思います。
ありがとうございました。
No.4
- 回答日時:
PostgreSQL の場合のさんぷるソースを張っておきます
$db_name="データーベースの名前";
$db_host="データーベースの接続先";
$db_id="データーベースのユーザー名";
$db_pass="データーベースのパスワード";
$table="データーベースのテーブル名";
&decode;#form からのデコード
$id=$in{'id'};
$pass=$in{'pass'};
$data=$in{'data'};
#DBIを使用してPostgreSQLに接続
use DBI;
$dbh = DBI->connect("dbi:Pg:dbname=$db_name;host=$db_host;","$db_id","$db_pass") or die $DBI::errstr;
#追加するなら
$quary="Insert into $table VALUES('$id','$pass','$data')";
$sth=$dbh->prepare("$quary");
$sth->execute();
$sth -> finish();
$dbh->disconnect;
ご回答ありがとうございます。
PostgreSQLについて勉強不足の
部分があるので、勉強していき
完成していきたいと思います。
ありがとうございました。
No.1
- 回答日時:
(1) 作れます。
SQLと絡めることもできます。(2) 重くなるリスク。データの消去のリスク。
データを大量に扱うということに特化しているわけではないので、作り方によっては非常に重くなります。
また、排他制御を自分で組み込まなくてはいけないので、排他制御の組み方によってはデータが消去しやすいものになる場合もあります。
(3)パスワードを暗号化するとか、保存ファイルの場所をルート以下(一般には表示できない場所)にするとか、拡張子を.cgiにする(CGIと認識されてブラウザでは表示できなくなる)などの対策が必要です。
普通に.txtの拡張子で平文で保存した場合、読み取られるリスクが格段にアップします。
(4)1000くらいならば大丈夫。
作り方によっては多くいけますが、5000くらいになるとちょっと厳しいかもしれません。
記録するだけならばいいのですが、整合性のチェックなどをする場合、工夫が必要です。(IDを半角英数として、頭がAならばA.txtに保存するなどのインデックスの考えでやればある程度負荷が軽減します。)
(5)FlashとPerlを連動さえたことがないので分かりません^^;
ご回答ありがとうございます。
たくさんの情報をいただき、感謝しております。
まだまだ勉強することはたくさんありますが、
どうにか実現していきたいと思います。
がんばりますね!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Perlのエラーについてご教授く...
-
perlの構文でカンマの意味が分...
-
Perlで、「が」を、「...
-
Perlでの文字変換(置換)について
-
このファイルを開く方法で困っ...
-
perlについて
-
PERL
-
C言語の問題について
-
ちょうどn文字の連続にマッチす...
-
PerlでUTF-8のファイルの文字列...
-
3から100までの素数を配列に入...
-
Perl 改行処理 と カンマ区切り
-
ラズベリーパイ初心者です。 ラ...
-
Perl言語について。
-
ファイルをディレクトリ分配の...
-
アルファベットに付いて質問し...
-
#!/usr/bin/perlで書きだしたCG...
-
perlのflock関数でロックをかけ...
-
AI sisterとは、偽物の人ですか?
-
bashスクリプト
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
fetchrow_arrayとfetchrow_hash...
-
PerlからSQLiteをうまく扱えません
-
Oracleのデータベースに接続で...
-
perlからmysqlに接続できない
-
VS2005で開発したIEツールバー...
-
perlのdbi-connect処理のエラー
-
例外処理のフローチャートの記...
-
Excel VBAでリンク切れをチェッ...
-
LCD ディスプレイを Raspberry ...
-
「デバイスは PRN を初期化でき...
-
エクセルVBAでシートモジュール...
-
VBSがコンパイルエラーになりま...
-
VBでグローバル変数を宣言するには
-
Excel VBAで、ユーザーフォーム...
-
VBAで旧字体を異字体に一括で変...
-
ユーザー定義関数に#NAME?が返...
-
VBA This Workbookモジュール...
-
Excel VBA 『Call』で呼び出す...
-
【vba】フォームに書いてあ...
-
Access VBA標準モジュールにつ...
おすすめ情報