質問

公式SQLite3 Webページ sqliteについては、fopen()関数の置換として考えるべきだと書かれています。

あなたはそれについてどう思いますか? SQLiteを使用して内部データストレージを応用することは常に良い解決策ですか?そのような解決策のプラスとマイナスは何ですか?

あなたはそれにいくつかの経験がありますか?

編集:あなたの経験はどうですか?使いやすいですか?それは痛みを伴いましたか、それともむしろ喜んでいましたか?あなたはそれが好きですか?

役に立ちましたか?

解決

場合によります。いくつかの矛盾があります:

  • 構成ファイルの場合、プレーンテキストまたはXMLの使用は、リレーショナルデータベースを使用するよりもデバッグまたは変更するのがはるかに簡単です。

  • ツリー構造は、リレーショナルテーブルを使用するよりも(たとえば)XMLを使用して説明しやすいです

  • SQLite APIは非常にひどく文書化されています - 十分な例はありません、そして、ハイパーリンクは貧弱です。 OTOH、あなたがそれを掘り下げることを気にするならば、情報はすべてそこにあります。

  • アプリ固有のバイナリ形式の使用は、データベースにBLOBと同じ形式を保存するよりも高速になります

  • データベースの破損は、のLOSを意味します 全て 単一の悪いファイルではなく、データ

OTOH、あなたの内部データがリレーショナルモデルによく適合し、それがたくさんある場合は、SQLiteをお勧めします - 私は自分のプロジェクトの1つにそれを使用します。

経験に関して - 私はそれを使用します、それはうまく機能し、既存のコードと簡単に統合できます。ドキュメントのナビゲートが簡単だった場合は、5つ星を与えることができます。

他のヒント

いつものように、それは依存します、「すべてのサイズに適合する1つのサイズ」ソリューションはありません

データをスタンドアロンファイルに保存する必要があり、SQLiteよりもSQLデータベースのリレーショナルデータベース機能を活用できる場合は素晴らしいです。

データがリレーショナルモデル(たとえば階層データ)に適していない場合、またはデータを人間に読み取ることができる場合(構成ファイル)、またはSQLite以外の別のシステムと相互運用する必要がある場合もっと良くなります。

一方、複数のプログラムまたはコンピューターのデータに同時にデータにアクセスする必要がある場合は、SQLiteが最適な選択ではなく、「実際の」データベースサーバーが必要です(MS SQL、Oracle、MySQL、PosgresQL ...) 。

SQLiteの原子性はプラスです。中途半端なデータを書いている場合(中央でクラッシュする可能性がある)、データファイルが破損しないことを知っています。私は通常、成功した負荷でファイルをバックアップすることによりXML構成ファイルで同様のことを達成し、将来の失敗した負荷(破損を示す)は、最後のバックアップを自動的に復元します。もちろん、それは粒状でも原子でもありませんが、私の欲望には十分です。

SQLiteは一緒に仕事をするのが楽しいと思いますが、Fopen()の万能の代替品だとは思いません。

例として、Webサーバーから画像をダウンロードし、ローカルでキャッシュするソフトウェアを作成しました。それらを個々のファイルとして保存して、私はそれらをWindows Explorerで見ることができますが、これには確かに利点があります。ただし、キャッシュを使用するために、URLと画像ファイルの間にマップするインデックスを保持する必要があります。それらをsqliteデータベースに保存すると、それらはすべて1つのきちんとした小さなファイルに座っており、urlでアクセスできます(url = 'のキャッシュからimgdataを選択します。http://foo.bar.jpg')ほとんど努力しません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top