大規模な単純なデータベースについて SQLite と DISQLite を比較するとどうなるでしょうか?
-
19-09-2019 - |
質問
違いは何ですか SQLite そして DISQLite なぜ一方を他方よりも選択する必要があるのでしょうか?
私の状況は、大規模なデータベース (最大 10 GB になる可能性があります) を扱っているということです。データベースの重要な部分は、単一のインデックス付きフィールドと最大数 KB のサイズのテキスト フィールドが 1 つある非常に単純なテーブルにあります。私の開発ツールは Delphi 2009 で、データベースは .exe に埋め込まれます。
私の主な基準はスピードです。これは、Windows 7 と 4 GB の RAM を搭載した一般的な Windows コンピュータで実行されるソフトウェア アプリケーションの場合です。
別のデータベース ツールを提案したい場合は、特に速度の面で、私のアプリケーションにとってこれら 2 つよりも優れている理由を教えてください。
解決
AFAIR、DISQLite は Sqlite の obj ファイルを使用し、Delphi でコンパイルして元のファイルよりも多くの機能を生成し、同じ sqlite DB 形式を使用しているため、Sqlite をサポートする他の言語で DISQLite データベース ファイルを読み取ることができます。運転手。
DISQLite にはもう 1 つの機能があり、Sqlite DLL を配布する必要はありません。
DISQLite は最大 2TB のデータベース サイズをサポートしているため、要件を問題なく処理できます。
私が検討するもう 1 つのオプションは、FireBird 埋め込みバージョンです。これをさらに拡張したい場合は、それほど手間をかけずに完全な FireBird サーバーに変更できます。
しかし、Sqlite と DISQLite はどちらも Firebird よりもパフォーマンスが良いと思います。
私が使う Audcom Sqlite コンポーネント Sqlite データベースにアクセスするには、Sqlite objs ファイルを使用してコンパイルできるため、sqlite dll をデプロイする必要はありません。
他のヒント
独自の実装を作成することをお勧めします。複雑な SQL クエリが必要ない場合、最も単純な (そしておそらく最も高速な) 実装はファイルベースのストレージです。
DISQLLite には 2 つのバージョンがあり、無料のものは個人および非営利使用に限定されています。SQLite は無料/有料バージョンのない無料のオープンソース実装であるため、これが決定要因の 1 つになる可能性があります。
どちらのデータベースも GB 単位のデータを処理できます。SQLite は、プリコンパイルされたバイナリで利用できます。アプリケーションに沿って配布できる DLL。ただし、ソース コードが利用可能な場合は、DLL を必要とせずにアプリケーション内でコンパイルして使用することもできます。
DLL モジュールを使用する利点は (場合によっては)、バグの一部が解決された場合、アプリケーション全体を再コンパイルするのではなく、クライアント マシンで DLL を置き換えるだけで済むことです。
SQLite があなたの要件にとってより良い選択肢になると思います。データベースの速度は、データベースの種類に完全に依存するわけではありません。ハードディスクのアクセス速度、利用可能な処理能力、RAM などのハードウェアも、データベースの高速化に重要な役割を果たします。
DISQLLite 個人版にはいくつかの制限があることに注意してください。また、誰でも SQLite ラッパーを無料で実装できるのに、プロフェッショナル版の価格 (ソースなしで 149.99 ユーロ) に見合う価値があるとは思えません。
フリーウェア製品として DISQLite Personal を使用していたため、新しいバージョンのリリースでデータベースの変更を実装する必要がありました。個人版は「ALTER」をサポートしていないため、製品版を購入する必要がありました。そこで私は DISQLite を捨てて、優れた SQLite ラッパーを使用しました。フルバージョンの料金を支払う用意がある場合にのみ、DISQLite を選択してください。
SQLite4Delphi より良い選択肢である可能性があります。あるいは、少なくともより費用対効果の高いソリューションを示してください。
私たちのものを見てください SynBigTable ユニット. 。それはそうなるだろう SQLiteよりもはるかに高速です, 、まさにあなたの目的に適合しているようです。
ネイティブ SQLite 実装が必要な場合は、次のリンクを参照してください。 SQLite3フレームワーク:無料でオープンソースであり、外部 DLL は必要ありません。また、クローズドな DiSQLite よりもいくつかの機能が追加されています (SQL 関数や仮想テーブルを実装するための Delphi ネイティブ クラスなど)。
パフォーマンス POV の場合、ボトルネックとなるのは使用しているラッパーではなく、ディスク アクセスとデータベースのセットアップ方法です。忘れずに使用してください インデックス できるだけ早くデータを取得するために。そうすれば、使用しているラッパーが何であっても、SQLite では 10 GB のデータでも問題になりません。