10

私たちはオープン ソースのTwitter クライアントを作成しており、Delphi で動作し、全文検索に適した最小のフットプリントを備えた組み込み DB を探しています(小さなフットプリントではうまくいかないことはわかっています)。理想的には、それも無料またはオープンソースであるべきです (厳しいことは承知しています)。

私はSQLiteに傾倒していますが、これまで使用したことがなく、全文検索をサポートしているかどうか、または Delphi でどの程度うまく機能するかはわかりません。以前DBISAMを使用したことがあり、全文検索が組み込まれていますが、無料ではありません。 Firebirdは、私たちが検討した別のオプションです。

これを機能させる組み合わせがあるかもしれません。何を使用しますか? 1) フットプリント、2) 全文検索、3) フリー/オープン ソースの評価は?

更新:ご提案いただきありがとうございます。たくさんの良い選択肢から選ぶことができます。

4

14 に答える 14

8

DiSQLiteを使用して多くの成功を収めました。FTS のサポートと他の多くの機能があります。無料版とプロフェッショナル版があります。Free版でもFTSができると思います。私は Delphi 用の SQLite 実装を数多く試しましたが、これは私が見た中で最高のものです。アプリケーションに直接コンパイルされるため、外部 DLL はありません。

私は、Delphi の組み込みデータベース用の無料ライブラリをたくさん調べましたが、その多くはサポートされていないか、リリースされていないか、Delphi5 でしか動作しません。

于 2009-03-27T14:49:02.670 に答える
4

Sybase Advantage Database Serverには、ロイヤリティ フリーのローカル サーバー エンジン (マルチスレッドおよびレコード レベルのロック)、優れた Delphi TDataSet 派生コンポーネント (ソース コードを含む)、および優れた全文検索エンジンがあります。

Advantage 全文検索では、AND、OR、NOT、および NEAR 演算子がサポートされています。Advantage は、検索条件内の単語のすべてのインスタンスの合計数を返す SCORE および SCREDISTINCT スカラー関数も提供します。

Advantage フルテキスト インデックスは、レコードの更新時に維持されるため、再構築は必要ありません。インデックスは圧縮形式です。したがって、実際のインデックス サイズは、物理データよりもはるかに小さくなる可能性があります。索引付けされていないデータに対して全文検索を実行することは可能ですが、これにはレコード・データの物理的な検索が必要であり、はるかに遅くなる可能性があります。インデックス付き検索では、最適なパフォーマンスを得るためにビットマップ フィルターを使用します。

オンライン ヘルプには、インデックス作成オプションなどに関するすべての詳細が含まれています。

http://tinyurl.com/ctjoqg

于 2009-03-30T18:22:45.517 に答える
3

firebird には全文検索用のsphinxアドオンがあることは知っています (サイトによると、「実際の「全文検索」とはかけ離れています」)。 firebird の組み込みバージョン。

于 2009-03-27T10:14:03.300 に答える
3

Firebird の全文検索については、http ://www.firebirdfaq.org/faq328/ を参照してください。

レオナルド。

于 2009-03-27T11:36:05.287 に答える
2

NexusDB には無料の組み込みバージョンがあり、もちろんネイティブの Delphi 製品です。

全文検索の実装について説明します。

于 2009-03-28T04:31:31.150 に答える
2

Hydra を使用して DotLucene を社内の Delphi ベースのアプリの 1 つに統合しました (当時、Mike がその作業を行っていました)。それがここで追求したいオプションである場合、それを抽出して、このプロジェクトで再利用できると確信しています

于 2009-03-27T10:11:44.023 に答える
2

SQLiteを使用してください。Delphi には無料の sqlite コンポーネントがたくさんあります。それらのいくつかは、アクティブなプロジェクトではなくなりました。しかし、注目すべきコンポーネントの 1 つはZeosDBです。ZeosDB は積極的にメンテナンスされており、その sqlite サポートも完璧です。他の DB エンジンのサポートが必要な場合は、ZeosDB が最適です (MySQL、PostgreSQL、Interbase、Firebird、MS SQL、Sybase、Oracle、および SQLite をサポートしています)。

于 2009-03-27T16:43:35.047 に答える
1

DBISAM、またはおそらく新しいElevateDBを強く検討することをお勧めします。以前の経験から、実行可能ファイルのサイズがそれほど大きくなく、適度に高速で信頼性が高く、完璧なDelphiベースのソリューションであり、優れたサポートがあることをご存知だと思います。何年にもわたってSQLダイアレクトが改良されてきたため、ANSISQL-2003に高度に準拠するようになりました。

DBISAM / ElevateDBはオープンソースではありませんが、ライセンス費用は開発者ごと(展開ごとではない)であるため、関係する開発者が少数の場合、費用は(私の意見では)ごくわずかです。メインの開発者/所有者(Tim Young)が質問への回答と問題の解決に積極的に関与しているDBISAM / Elevatesoftニュースグループで得られるサポートと応答性のレベルを考慮すると、ライセンスコストは特に合理的です。もちろん、プロプライエタリソリューションのコストは別として、ビジネスが存続し、製品が今後も開発およびサポートされ続けるかどうかについても懸念があります。それはあなたが自分で検討しなければならないことですが、開発は相変わらず強力なようです。彼らはデータベース用の.NETプロバイダーを持っており、FreePascal/Lazarusを使用したクロスプラットフォーム開発をサポートしています。

DBISAMの全文検索の利点の1つは、SQLに緊密に統合されていることです。つまり、一部のフィールドの通常のWHERE基準と他のフィールドの全文検索基準を直接組み合わせた単一のSELECTステートメントを発行できます。ニーズに応じて、これは、別のフルテキストソリューションを使用してより多くの作業を必要とするいくつかのことを非常に簡単かつ迅速に実行できる優れた機能です。LuceneやFirebirdで使用される可能性のある他のアドオンソリューションのようなほとんどのアドオンソリューションは、通常のSQLと緊密に統合されておらず、フルテキスト基準のみでレコードのセットを取得するように制限されていると思います。Textolution独自のFirebird用アドオン(http://www.textolution.com/ftsib_example.asp )のようなもの)通常の基準と全文基準の両方を適用する単一の複雑な(ネストされた)クエリの構築に対応できるように見えますが、DBISAMはよりエレガントにそれを行います。そして、プロプライエタリアドオンをオープンソースデータベースに追加することは、とにかく、オープンソースになるという目的を打ち破ります。

DBISAM / ElevateDBの全文検索の欠点の1つは、「AND」および「OR」条件の使用のみをサポートし、近接検索がないことだと思います。

SQLiteのフルテキストソリューションhttp://www.sqlite.org/cvstrac/wiki?p=FullTextIndexがあることに気付きました。私はSQLiteを使ったことがありませんが、多くの人がSQLiteを気に入っていることは知っています。DBISAM / Elevatesoftが大きな利点を持っていると確信している分野の1つは、堅牢なロック機能が必要なマルチユーザーアプリケーションですが、シングルユーザーデスクトップアプリでは必ずしも重要ではありません。

于 2009-03-27T16:09:39.763 に答える
1

私はAducomSqliteコンポーネントを使用してSqliteを使用します。これらは、DiSQLiteよりもsqliteで簡単に操作でき、無料でTDatasetコンポーネントとして機能します。次の理由で、sqliteに投票します。

  1. 非常に高速でコンパクトなデータベースです。
  2. フットプリントが非常に小さく、約200kbDllです。
  3. Aducomコンポーネントで使用すると静的にリンクできるため、dllを配布する必要はありません。
  4. 全文検索のサポートが組み込まれています。
  5. これは、外部ストレージとして多くの無料および商用アプリケーションで広く使用され、使用されています。
  6. ほとんどの標準SQLが含まれているため、SQLに関する知識のほとんどが使用されます。
于 2009-03-28T19:42:37.527 に答える
1

Sqliteは、ほとんどシングルユーザー/シングル接続のみです。更新を行うと、データベース全体がロックされます。これに対処するには、他の接続が待機するタイムアウト値を設定します(デフォルトはタイムアウトなし)。使用する値によっては、マルチユーザーアクセスが非常に遅くなったり、タイムアウトが頻繁に発生したりする可能性があります。

http://www.aducom.com/のAsqliteコンポーネントを使用しました。無料のオープンソース。現在、外観ではd2009をサポートしていませんが、開発中です。他にもたくさんのコンポーネントセットがありますが、私は他のコンポーネントセットを使用していません。

Rubicon(現在はhttp://www.href.com/rubiconで新しい管理下にあります)を使用して、任意のdelphiアプリに全文検索を追加できます。ただし、これは無料ではありません:(

于 2009-03-28T19:52:57.160 に答える
0

また、.NET Framework をインストールする必要がありますが、.net com API を介して簡単にロードできる DotLucene もあります。検索に最適で、ほとんどの検索エンジンに共通のクエリ形式を備えています。

于 2009-03-27T10:07:09.540 に答える
0

なぜこれに全文検索が必要なのですか? 私は Twitter を使用していませんが、Twitter のメッセージは最大 140 文字だと思いますか? これらは 1 つの varchar フィールドに収まります。そのようなフィールドで何かを見つけるのに全文検索は必要ありません。

于 2009-03-27T10:04:40.123 に答える
0

私はここに半機能の Delphi ソリューションを持っています: http://sourceforge.net/projects/mutis/、Lucene の Delphi へのポート。

大部分は正常に動作しますが、残念なことに死の Delphi.NET 実装に基づいていたため、ネイティブのものに更新する作業が必要です (はい、.NET ルートを取る大きな間違いでした :( )

于 2009-12-18T18:16:50.467 に答える
-1

ずっとDBISAM。機能し、非常に安定しており、埋め込み型で、全文索引付けがうまく機能します (個人的な経験が豊富です!)

ElevateDB もおそらく素晴らしいですが、私はそれを直接経験したことがありません。

于 2009-03-29T05:20:44.673 に答える