sqliteの使用を検討している者ですが、sqlite2とsqlite3の機能的な違いは何でしょうか?sqlite自体は全く今まで使用したことはありませんが、MySQL,PostgreSQLなどは使ってまして、手軽に利用できる点に、ある程度の魅力を感じました。
sqite2とsqlite3の違いにつきましては、安定性(不具合状況)や速度、追加された機能などを知りたいと思っています。

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

A 回答 (2件)

OSやプログラム言語などの制限は考えず、純粋にSQLite2とSQLite3の違いについて回答します。

安定性や速度についてはわからないので、機能の違いについてのみ限定します。

結論から言うと機能の違いはあります。以前、自分の知っている範囲で回答した質問があるので以下に挙げておきます。
 SQLiteのテーブル名を変更したい -> http://okwave.jp/qa4283629.html
 SQLiteのフィールド追加のやり方 -> http://okwave.jp/qa3227290.html

読んでいただくとわかりますが、どちらもSQLite3では簡単にできますがSQLite2ではちょっと手間がかかります。

その他にもいろいろと機能追加されているようです。Wikipediaでも次のようなことが書かれていました。ただし自分は理解してないので真偽は御自分で検証してください。
 Wikipedia - SQLiteからの引用
  Ver3.3.8 から、全文検索の FTS1モジュールがサポートされた。
  引用元 -> http://ja.wikipedia.org/wiki/SQLite

詳しいことは本家サイトで読むしかないでしょう。
 SQLiteの本家 -> http://www.sqlite.org/
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
やはり比較のわかりやすいドキュメントがあまりないようですね。
公式も途切れ途切れになっているので、若干わかりずらい感じでした。
しかしながら、今後のサポートや機能追加なども考えますと、やはり普通に考えて新しい方が無難だと、今思ってます。(機能はSQLite3の方がオプション的機能の追加があるようですし、運用中のバージョンアップでもないですので)

お礼日時:2008/09/15 00:44

 SQLiteの資料を読むと確認できるはずですが、sqite2とsqlite3では互換性がないことが明記されているので、要件を確認してsqite2かsqlite3を選択して下さい。



 過去の質問を調べるとある程度は理解できると思いますが、私見ですが私は開発時のdbとしては非常に優れたdbと評価していますが、実用的なdbではないと思っています。

> sqite2とsqlite3の違い
安定性(不具合状況)や速度、追加された機能という点で、SQLite2とSQLite3で違いはないと思います。

一部のWebページにSQLiteは遅いとの記述ありますが、オート・コミットがONの状態で測定したために遅いと評価されていて、オート・コミットをOFFにすればMySQLなどの比べても大きな差はないと思います。 逆に1個のファイルで全てを処理する超軽量dbで、ここまでレスポンスを示すのは凄いと思います。

MySQL, PostgreSQLの経験者でPHPでアプリを開発するなら、PDOを利用してdbを操作すると、コネクトの1行だけを変更することでdbを選択できるので、開発はSQLite、実用はMySQLということができます。

この時、MySQLなどの実用版でのdb設計( SQLiteを意識しない )を行ない、スキマーをSQLiteに適用しても殆ど修正はないと思います。

私が理解している違い
1.SQLiteでは外部参照ができない
2.型が文字列だけなので、タイムスタンプ関連の処理はSQLiteと他のdbで個別に記述しないといけない
*トリガーは、記述したことがないので不明ですが機能はあります。
    • good
    • 0
この回答へのお礼

sqliteはMySQLなどの代わりというよりは、ファイル読み書きで間に合うような箇所をファイルからSQLiteに変更できれば、新たな方法として取り入れられるのではと思いまして、検討しています。
sqlite2とsqlite3に表面的な大きな違いはないことはわかりました。
速度や機能面は、その都度調べる必要がありそうですね。
回答ありがとうございました。

お礼日時:2008/09/15 00:22

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人が検索しているワード

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

Q【ビジネスで使う「コミット」の意味】

顧客とのコミット、チームメンバーとのコミット、 事業戦略のコミット
上記のように使うようですが、意味がわかりません。
ご存知の方がいらっしゃいましたら教えていただけるとありがたいです。よろしくお願いいたします。

Aベストアンサー

コミットメントに思わず反応してしまいました。

"commitment"のコミットと私も考えます。
JIS Q9000:2000解説 によりますと、
誓約、約束、公約、確約、義務、責務、責任、関与、かかわり合い、参加、傾倒、深入りなどいずれの言葉においてもニュアンスを伝えきれないので、"commitment"はコミットメントと訳したとのことです。
コミットを日本語(漢語?)に訳した段階で微妙に異なるニュアンスになるようです。

正確さより、日本語(漢語?)訳にすることを優先するなら、職業柄「決意表明」に1票。

Qpython2.5を使用してSQLite3のデータベースを読み込みたいのです。

いま、python2.5を使用してSQLite3のデータベースを読み込みたいのですが、うまく接続できません。pythonとSQLiteは単体ではうまく起動しているので、問い合わせ方に問題があるようなのですが、参考書のとおりに実行してもエラーが出てしまします。接続の書き方を教えていただければ幸いです。以下には、エラーが出た問い合わせを書きました。違うところがあれば指摘してください。
import sqlite3
con = sqlite3.connect("データベース名")
cur = con.cursor() //ここまではうまくいきました。
cur.execute("""create table テーブル名(name text,age text)""")
cur.execute("select * from テーブル名")
print cur.fetchall()

Aベストアンサー

さっきのコードの訂正です。インデントする箇所が一箇所抜けておりました。

import sqlite3
con = sqlite3.connect("hogedb")
cur = con.cursor()
try:
____cur.execute("""create table hoge (name text, age text)""")
____cur.execute("""insert into hoge(name,age) values ('YAMADA', '18')""")
____cur.execute("""insert into hoge(name,age) values ('NAKAMURA', '17')""")
except:
____pass
con.commit()
cur.execute("""select * from hoge""")
print cur.fetchall()
raw_input()

Qタスクマネージャーのコミットチャージ等の意味

WINDOWS XPのタスクマネージャー
のパフォーマンスを見たところ
コミットチャージ:396MB/1246MB
CPU使用率 5%
プロセス:30

コミットチャージの意味をおしえてください。
またハンドルの意味をおしえてください。
よろしくお願いします。


以下ある状態のデータ値
ーーーーーーーーーーーーーー
合計
ハンドル 6309
スレッド 294
プロセス 30

PF(ページファイル使用量)395MB

物理メモリ(KB)
522224

コミットチャージ(KB):
合計 405794
制限値 1276252
最大値 406616
となっていました
合計値の405794とかは絶えず値が変動

Aベストアンサー

私の方はWindows2000ですが、多分同じようなものだと。
タスクマネージャーのヘルプに書いてあります。以下それの丸写し。
・コミットチャージ
プログラムおよびシステムに割り当てられているメモリ。仮想メモリの使用により、コミットチャージの[最大値]は、物理メモリの上限を越える場合があります。

・ハンドル
ファイルまたはレジストリキーなどのリソースを、プログラムがアクセスできるように一意に識別するのに使う値。


以上ですが、ハンドルを使用したプログラム例としてはこのように使います(デルファイ言語)
[Delphi-ML:80751] Re: 別のソフトにクリップボードの内容を貼り付けたい

"** 鉄平" <tetupei@***.*******.ac.jp>
Fri, 20 Feb 2004 16:14:03 +0900

--------------------------------------------------------------------------------

単に動けばいいのであれば

SetForeGroundWindow(Hhan);//Hhan:ペーストしたいWindowsハンドル
keybd_event( VK_CONTROL, 0, 0 , 0 );
keybd_event( $56, 0, 0 , 0 ); //V Key
keybd_event( $56, 0, KEYEVENTF_KEYUP , 0 );
keybd_event( VK_CONTROL, 0, KEYEVENTF_KEYUP , 0 );

私の方はWindows2000ですが、多分同じようなものだと。
タスクマネージャーのヘルプに書いてあります。以下それの丸写し。
・コミットチャージ
プログラムおよびシステムに割り当てられているメモリ。仮想メモリの使用により、コミットチャージの[最大値]は、物理メモリの上限を越える場合があります。

・ハンドル
ファイルまたはレジストリキーなどのリソースを、プログラムがアクセスできるように一意に識別するのに使う値。


以上ですが、ハンドルを使用したプログラム例としてはこのように使いま...続きを読む

QSQLite3の許容される登録数は?

商品管理のプログラムを組んでいるのですが
データベースに「SQLite3」を使いたいと思っています。

SQLite3が、安定して動作できる、登録数(行数)はどれくらいでしょうか。
又は、これくらい登録したら、動作が不安定になった/遅くなったなどの情報でも構いません。

ちなみに、商品データベースといっても、商品名と、価格くらいしか記録しません。
ググってみたのですが、それらしい情報が無くて・・・。

宜しく御願いします。

Aベストアンサー

 dbの初心者さんかな?
 dbをSQLiteから覚えるのはちょっと危険ですね。

 SQLiteはユーザという概念もない超軽量dbで、ファイル1個をコピーすればバックアップが完了というお手軽です。しかし、それはdbを理解していて開発時にdb構築などの工程をできるだけ簡略化して本来のアプリケーション開発に専念してアプリケーションの完成度を高めたいという場合に有効と思います。
 SQLiteは、SQL的には他のdbとほぼ遜色ないレベルと思いますが、dbシステムという観点で比較すると、ユーザーという概念がないなどセキュリティーは貧弱というより、セキュリティーがないと考えて差し支えないと思います。 また、型も文字列しかない?ないなど、本格的に使うには機能不足の面は見逃しがたい点があります。

 PostgreSQL, MySQLもWindows版がリリースされているしインストーラーもあるのでインストールは比較的簡単です。 管理は、SQLite < MySQL < PostgreSQL < Oracle という感じで面倒になります。

 私はOracleから覚えたのでSQLiteは本当にSQLが使えるの? と思うほど軽いですが、用途を限定すればOracleと大きな差がないにも事実です。

 いちどWebで MySQLやPostgreSQLを調査した方が良いと思います。

 私の環境はタワー型のPCで、Apache, PHP, SQLite, MySQL をインストールしても快適に使えますが、たぶんノートPCでもMySQLでも問題ないと思います。



 最初の回答で忘れましたが・・・SQLiteに限りませんが、大量のデーターをINSERTする場合は、オート・コミットをoffにしないと非常に遅く( 10倍程度? )なるので必ずoffにしましょう。 ほとんどのdbでディフォルトはONです。

 dbの初心者さんかな?
 dbをSQLiteから覚えるのはちょっと危険ですね。

 SQLiteはユーザという概念もない超軽量dbで、ファイル1個をコピーすればバックアップが完了というお手軽です。しかし、それはdbを理解していて開発時にdb構築などの工程をできるだけ簡略化して本来のアプリケーション開発に専念してアプリケーションの完成度を高めたいという場合に有効と思います。
 SQLiteは、SQL的には他のdbとほぼ遜色ないレベルと思いますが、dbシステムという観点で比較すると、ユーザー...続きを読む

Qコミットの意味は?

『その事業に,全力でコミットします。』こんな使い方は出来ますか?
言いたい事は,「その事業に,全力で貢献します。」こんな意味が出ればいいのですが日本語として大丈夫でしょうか?
誰かが使っていた気がするのですが,意味を調べてみるとネガティブな意味が多くどうも違う気もするし,本当のところこういった使い方は出来ますか?
ご存知の方よろしくお願い致します。

Aベストアンサー

"commit" という言葉は、本来 "to obligate or pledge oneself [for a definite purpose]" という強い意思(意図)とそれに伴う行動を意味する言葉で、その言葉を使用する事自体にたいする強いコミットメント(commitment)が必要になります。

commit oneself on (in, to, into) something [何かに"commit" する]
事業を統括する立場でも、或いはチームに貢献する一員の立場でも、また個人の目標にむけて邁進する場合でも、「何かに"commit" する」ことにより、全心全霊を尽くして物事に臨むことが要求されます。ご質問にある様に「その事業にコミットする」がこの意味で使われた場合には、ご質問者のご解釈でよろしいでしょう。

commit an outcome(of a business or a project) [特定の案件や業績を"commit" する]
ところが、日本のビジネス界でカタカナ英語を多用する人々の間では、文脈上、その事業「に」コミットすることが、即ちその事業「を」コミットするという意味で解釈された場合、事業の業績(売上や利潤などの成果)に責任を持つ、ということになります。従って、そう「宣言」したにも拘らず期待通りの実績とならなかった場合のいわゆる「責任問題」(減俸や費用負担、配置がえ、降格など)がついて廻ることを覚悟する必要があります。日本にある外資系企業の方々が気やすく使って後で大変な目に遇われていた姿を今でも思い出します。

"commit" という言葉は、本来 "to obligate or pledge oneself [for a definite purpose]" という強い意思(意図)とそれに伴う行動を意味する言葉で、その言葉を使用する事自体にたいする強いコミットメント(commitment)が必要になります。

commit oneself on (in, to, into) something [何かに"commit" する]
事業を統括する立場でも、或いはチームに貢献する一員の立場でも、また個人の目標にむけて邁進する場合でも、「何かに"commit" する」ことにより、全心全霊を尽くして物事に臨むことが要求されます。...続きを読む

QPython 2.7で、SQLite3の全文検索

結論だけでいいです。

Python 2.7で、SQLite3のFTSを使える □YES/□NO

当然使えると思って前準備まで全部行ったのに、実際に登録しようとしたら出来ず調べると、ソースからコンパイルとか何かを介するとか何かをダウンローダするとか...

これでは私的にはNOです。

Aベストアンサー

No.1です。

> Knoppix上での解決方法も教えて下さい

puppy linux上の環境では、python 2.7.3でも前述のサンプルソースのコメントアウトだけで動作しました。つまりpythonではなく、インストールされているsqlite3のバージョンに依存するということになります。


通常ですと、sqlite3の最新版のソースをもってきてコンパイルし、インストールして、作成されたsqlite3.soを元のファイルと置き換えれば良いことになります。

./configure --prefix=sqlite3のインストールされているディレクトリ
make
make install

ただしKnoppixってCD-ROM(DVD-ROM)から起動しますよね?
いまご利用になっているsqlite3がCD-ROM(DVD-ROM)上に存在すると置き換えは難しいと思います。

Qコミット(commit)について

SQL*PLUSをウィンドウ右上の×や「終了」でするとコミットされてしまいます。

SHOW AUTOCOMMITはOFFでした。

どういうことでしょうか?

Aベストアンサー

それはSQL*PLUSの仕様上の動作です。

ウィンドウ右上の×や「終了」することは異常終了とはみなされずコミットされてしまいます。

AUTOCOMMIT ONはDML文を実行するたびにCOMMITすることを意味します。もっと言えば、これがONになっている場合、ROLLBACKはできません。

ウィンドウ右上の×や「終了」はこれとは別の問題であり、制御する方法はありません。

Q泣きそうです>< PHPでSQLite3が使えない

こんばんは

何をどうやっても進まないのでここで質問させてください。
Windows 8にwamp (Apache 2.2.22, PHP 5.4.3) を入れています。
SQLite3を使いたいのですが、sqlite_open 関数に対して「undefined function」というエラーが出てしまいます。

php.ini の内容は次のようになっています。
;ここから
extension_dir = "c:/wamp/bin/php/php5.4.3/ext/"
(中略)
extension=php_pdo_sqlite.dll
;extension=php_sqlite.dll
extension=php_sqlite3.dll
(中略)
[sqlite]
; http://php.net/sqlite.assoc-case
;sqlite.assoc_case = 0

[sqlite3]
sqlite3.extension_dir = "c:/wamp/bin/php/php5.4.3/ext/"

;ここまで

実際、エクステンションディレクトリには
php_pdo_sqlite.dll
php_sqlite.dll
php_sqlite3.dll
があります。

phpinfo(); では

PDO drivers:mysql, sqlite
SQLite Library:3.7.7.1
[sqlite3]
SQLite3 support:enabled
SQLite3 module version:0.7
SQLite Library:3.7.7.1
sqlite3.extension_dir:c:/wamp/bin/php/php5.4.3/ext/


いったい何が行けないのでしょうか、iniの値を変えるとphpinfo()も変わるので誤った設定ファイルをいじっているのではないと思います。

バージョンなどは冒頭に記載しています。
よろしくお願いします。

こんばんは

何をどうやっても進まないのでここで質問させてください。
Windows 8にwamp (Apache 2.2.22, PHP 5.4.3) を入れています。
SQLite3を使いたいのですが、sqlite_open 関数に対して「undefined function」というエラーが出てしまいます。

php.ini の内容は次のようになっています。
;ここから
extension_dir = "c:/wamp/bin/php/php5.4.3/ext/"
(中略)
extension=php_pdo_sqlite.dll
;extension=php_sqlite.dll
extension=php_sqlite3.dll
(中略)
[sqlite]
; http://php.net/sqlite.assoc-case
;sqlite...続きを読む

Aベストアンサー

>;extension=php_sqlite.dll
エラーは、上記行の先頭にコメントアウトがあるせいだとは思うけど、
sqlite_open関数群は、sqlite2用です、SQLite3のデータファイルは扱えません。
SQLite3 を利用するなら、PDO または、SQLite3 クラスしか有りません。

Qcommit a fudgeの意味を教えてください

ニュースの記事に、以下のような文章が出てきました。without committing a 'fudge' とはどういう意味でしょうか?
you can't specify me as being female without committing a 'fudge' at the very least.
http://abcnews.go.com/International/australian-lives-male-female-sex-change/story?id=12529909

Aベストアンサー

「(少しでも)ごまかし(でっちあげ、作り話)をすることなく」
でしょうか。

「男」とも「女」とも特定できない。
「少しでもでっちあげをすることなく、男にせよ、女にせよ、いずれかに私を特定することはできない」

QSQLite3で参照整合の設定

いつもお世話になっております。
いままでMSAccessをよく使っていました。
個人的なデータを扱うのに重宝してきました。
特にセキュリティーにこだわることのないようなデータです。
このようなデータをPHPを用いてウェブで公開しようと思い、それに伴ってデータベースもオープンソースのものに切り替えようと調べました。SQLiteがMSAccessと同じような仕組みのデータベースだいう記載を見つけSQLiteを研究しようと思いました。
ここで質問ですが、MSAccessの場合リレーションシップの設定によりテーブルごとの参照整合を設定するのですが、SQLiteの場合リレーションシップの設定に相当する方法がわかりません。SQLiteの場合どのようになっているのでしょうか。

Aベストアンサー

>SQLiteがMSAccessと同じような仕組みのデータベースだいう記載を見つけ

共通するのは、1個のファイル上に定義情報とユーザデータが管理されることくらいではないでしょうか?
MS-ACCESSはGUIツールがRDBMSと一体になっていますが、SQLiteはそうではありませんし、どの部分を指して「同じような仕組み」と言っているのか意味がわかりません。

>そうですか、SQLiteは参照整合性を実装していないのですか。

SQLiteのマニュアル類を、見る気がないということでしょうか?

マニュアルでは、制約や動作を指定できるけど、解析だけされ機能としては働かないことが明記されています。

http://www.sqlite.org/faq.html#q22

しかし、トリガにより、同じような機能を実装できるといった例が紹介されています。

http://www.sqlite.org/cvstrac/wiki?p=ForeignKeyTriggers

>SQLiteは、RDBというのには機能が低すぎるということですか。

RDBMSには、他のRDBMSと比べて実装が進んでいる部分と遅れている部分があります。SQLiteは、かなり機能を絞り込んで実装されています。

>SQLiteがMSAccessと同じような仕組みのデータベースだいう記載を見つけ

共通するのは、1個のファイル上に定義情報とユーザデータが管理されることくらいではないでしょうか?
MS-ACCESSはGUIツールがRDBMSと一体になっていますが、SQLiteはそうではありませんし、どの部分を指して「同じような仕組み」と言っているのか意味がわかりません。

>そうですか、SQLiteは参照整合性を実装していないのですか。

SQLiteのマニュアル類を、見る気がないということでしょうか?

マニュアルでは、制約や動作を...続きを読む


人気Q&Aランキング

おすすめ情報