SQLite vs MySQL

このQ&Aのポイント
  • SQLiteとMySQLを比較して、どちらが適しているか検討しています。
  • データベースにアクセスするperl CGIを作成する予定で、1つのデータベースと1つのテーブルのみを使用します。
  • ユーザ数は約30人で、各人は一日に2~3レコードの書き込み操作を行う予定です。速度は特に重要ではありません。
回答を見る
  • ベストアンサー

SQLite vs MySQL

お世話になります。 データベースにアクセスするperl CGIを造ろうとしています。 1データベース・1テーブルのみの単純なつくりで 1レコードはだいたい、intergerが10項目、char[12]程度のtextが10項目、dateが5項目、 全部で10,000レコード程度の小規模なものです。 ユーザ数は特定の約30人程度です。各人、一日に2~3レコードにしか書き込み操作はしないはずです(時刻は重なるかもしれません)。 速度がクリティカルに要求されるわけではありません。 SQLiteとMySQLの比較は、ネット上でも多数見つかり、多数ユーザならMySQL、single userならSQLiteという感想が多いですが、30人というのが「多数」なのか、どうなのかわかりかねましたので、使用実感をお聞かせください。 SQLiteで少し組んでみたのですが、きわめて容易に作れるし、バックアップも簡単なので、30人程度ならSQLiteでも問題なしということであればSQLiteにしたいところです。

  • nagaon
  • お礼率68% (293/427)
  • MySQL
  • 回答数1
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
  • t_ohta
  • ベストアンサー率38% (5068/13243)
回答No.1

複雑なクエリーとか使わずデータ保存先として使うだけならSQLiteでもいいんじゃないですか。

nagaon
質問者

お礼

ありがとうございます。SQLiteでやってみます。

関連するQ&A

  • MySQLとSQLiteの違いについて。

    MySQLとSQLiteの違いについて。 ちょっと調べたところによると、SQLiteはアプリケーションに組み込んで使い、 MySQLはサーバーとして使うそうですが、その意味がいまいちわかりません。 それは、MySQLは複数のクライアントの共有データベースとして使うけど、 SQLiteは個人ユーザーの単体データベースとして使うということでしょうか? よろしくお願いします。

    • ベストアンサー
    • MySQL
  • sqlite3から取り出したデータにカラム名を付与

    Perl CGIを介してsqlite3でデータベースを構築しています。 とりだしたデータを.csvにしてユーザがダウンロードできるようにしたいです。 単にselect * としてcsvを作っても、カラム名のないファイルができます。 一行目がカラム名になっているファイルを作るにはどうすればよいでしょうか? 列数が4つか5つ程度なら、Perlにそれらを固定で書き込んでやればよいのですが、 列数が多くなると(データ構造を変更した際などに)不一致がおきる危険性があります。データベースから直接定義をとりだして、それを利用できればと思うのですが。

    • ベストアンサー
    • MySQL
  • SQLiteファイルへの同時アクセス過多によるロックについて

    PHP5.0+SQLite2.8でユーザー投稿型のサイトを個人運営しています。 1日数万ページビューほどの規模で、 データベースのテーブルのレコード数は数万件、 1レコードあたりのカラム数は数十件ほどあり、 そのテーブルに1日数百件の投稿があります。 それらのデータは随時更新・削除・検索されます。 データベースファイルへのINSERT、UPDATE、DELETE、SELECTなどが重なると 「database is locked」とのエラーメッセージが表示され、 それからもずっとユーザーによるデータベースへのアクセスが続くため、 データベースへのアクセスがしづらい、 もしくはまったくできない状態が延々と続いてしまいます。 SQLiteではトランザクション中にファイル全体がロックされるため こうした現象が発生するようですが、 この状態を元に戻す方法はないのでしょうか? ファイルをいったん削除してアップロードしなおすと直るのですが、 ファイルのアップロードには時間がかかるため、 他にいい応急措置の方法がないものかと悩んでいます。 それから、そもそもこの規模のサイトでデータベースを運用するには SQLiteでは限界があるのでしょうか? 仮に他のデータベースに乗り換えるとしたら、 こうした頻繁に書き込み・更新・削除などが行われるサイトでは どのデータベースを利用すべきでしょうか? それともこの程度の規模であれば、 スクリプトを改善することでSQLiteでも対応可能なレベルでしょうか? なにぶんデータベースに触れて間もないもので知識不足ですが、 どなたか詳しい方にご教授いただければ幸いです。

  • PerlからSQLiteをうまく扱えません

    以下のような感じで、 Perlから、SQliteのデータベースと、そのテーブルを作成し INSERTさせてみるのを組んでみたのですが うまく行かないようです・・・。 何が原因なのかどうすればうまくいくのか、教えていただけないでしょうか。 よろしく御願いします。 #!/usr/bin/perl use DBI; $dbfilename = "./testdb"; &dbcon; $sth = $db->prepare("INSERT INTO user VALUES(\'1\',\'abc\')"); $sth->execute; $sth->finish; &dbuncon; exit; sub dbuncon { $db->disconnect; } sub dbcon { $makedbflag = '0'; unless (-f $dbfilename) { $makedbflag = "1"; } $db = DBI->connect("dbi:SQLite:dbname=$dbfilename","","",); if($makedbflag eq "1") { &dbmaketable; } } sub dbmaketable { $sql = "CREATE TABLE user (id, name);"; $db->do($sql); }

  • MySQLでパスワードを設定したら、使えない

    XAMPPを使って、AppacheとMySQLなどをインストールしました。 MySQLは順調に動いていたのですが、 rootユーザーにpasswordを設定するつもりで、mysqlデータベースのuserテーブルのlocalhost/rootのレコードにパスワードを設定して、flush privilegeを実行しました。 一度、xamppコントロールパネルからmysqlAdminを再起動したところ、今まで使っていたデータベースが使えなくなりました。 どうすれば使えるようになりますか? 初心者です。すみません。よろしくお願いします。

  • MySQLで、本日に一番近い日のレコード

    Linuxサーバーで、MySQLを使っています。 ユーザーの付属テーブルの中で、 同じユーザーのレコードが複数あります。 その多数のレコード中に、日付項目があります。 そこから、ユーザー毎に、本日に一番近い過去未来の日のレコードだけを抽出するには、 どのようなSQL文を書けばよいでしょうか? 抽出結果は、下記のようになるように。 ユーザーA、本日に一番近い日付、・・・・ ユーザーB、本日に一番近い日付、・・・・ ユーザーC、本日に一番近い日付、・・・・ ※同一ユーザーは、複数抽出されない。=ユーザーは、ユニークになる抽出結果。

    • ベストアンサー
    • MySQL
  • PerlでMysqlのデータベース、テーブル作成

    はじめまして。 perlからMysqlのデータベースやテーブルを作成したいと思っております。 webを検索してみたのですが、どれもデータベースに接続してから、データの操作(挿入や削除など)をするものばかりで、データベースの作成などが見つかりません。 perlからデータベースの作成などは出来ないのでしょうか?また、出来るのでしたら、どのように書けばいいのでしょうか? 以下は、データベースに接続する場合です。 use DBI; $database="testdata"; $hostname="localhost"; $user = "aaa"; $password = "test"; $dsn="DBI:mysql:database=$database:host=$hostname"; $dbh = DBI->connect($dsn,$user,$password)||die $DBI::error; 宜しくお願いします。

  • PerlでSQLiteを使おうとしてもうまく行きません

    下記のような感じでPerlプログラムからSQLiteのデータベースから読み出すプログラムを組んでみました。 もちろん、実際にデータベースのファイルを作ってあります。 下のように、かなりシンプルで簡単なプログラムですし、 間違ってもいないとは思うのですが・・・ use DBI; $db = DBI->connect("dbi:SQLite:dbname=accountdb","","",); $sth = $db->prepare("SELECT * FROM user"); $sth->execute;#結果を取得しresに代入 print "$sth\n"; $sth->finish; exit; 上を実行した結果は、下記の通りです。 DBI::st=HASH(0x32706c4) closing dbh with active statement handles during global destruction. 私が思うに、データが$sthに帰って来ると思うのですが、 実際にはDBI::st=HASH(*****)のようなものしかかえってきません アドバイスをどうか宜しく御願いします (別カテゴリで似たような質問をさせていただきましたが、これはまた別です・・・)

  • MySQLである項目の値の種類を求めるには?

    データベース作りに初めて挑戦しようとしています。 あるテーブルの、1つまたは2つ以上の項目の値が何種類あるかを出すにはどうすればよいでしょうか。2つ以上の場合というのは、例えば大/中/小分類のようなものですが、実際にレコードとして格納された中で種類あるかが知りたいです。 EXCELで同様の質問はあったのですが(ただし1項目の場合)、MySQLでは見つけられませんでした。よろしくお願いします。

    • ベストアンサー
    • MySQL
  • perlでmysqlに接続

    初歩的な質問で申し訳ありません。 perlでmysqlに接続できず困っています(OSはWindowsXPです)。 バージョンは下の通りです。 perl : ActivePerl-5.8.8.820-MSWin32-x86-274739 mysql : MySQL Server 5.0 DOSでppmを入力すると「perl package manager」というウィンドウが立ち上がり、「DBD-SQLite」と「DBI」をインストールすることができました。 サンプルコードは下の通りです。 #!C:/usr/local/Perl/bin/perl use DBI; $user = '*****'; $passwd = '*****'; $db = DBI->connect('DBI:mysql:bulletin_board:localhost', $user, $passwd); $sth = $db->prepare("SELECT * FROM data"); $sth->execute; $num_rows = $sth->rows; print "該当 $num_rows 件\n"; for ($i=0; $i<$num_rows; $i++) { @a = $sth->fetchrow_array; print "no=$a[0], title=$a[1] name=$a[2] \n"; } $sth->finish; $db->disconnect; DOSで実行すると C:\Program Files\War-ftpd\FTPRoot\usr\f-taka\cgi-bin>perl sqlTest.cgi install_driver(mysql) failed: Can't locate DBD/mysql.pm in @INC (@INC contains: C:/usr/local/Perl/site/lib C:/usr/local/Perl/lib .) at (eval 4) line 3. Perhaps the DBD::mysql perl module hasn't been fully installed, or perhaps the capitalisation of 'mysql' isn't right. Available drivers: DBM, ExampleP, File, Gofer, Proxy, SQLite, Sponge. at sqlTest.cgi line 8 というエラーが出ました。原因は何なのでしょうか。 MySQL側で設定することはあるのでしょうか。 アドバイスお願いします。

    • ベストアンサー
    • Perl