2009-12-02 5 views
6

のローカルデータベースを検索するすべてのデータストレージをBaked Paradoxファイルのハッキングされたシステムで実行するレガシーアプリケーションを更新しようとしています。このプログラムは特定の狭い条件の下ではかなりうまく動作しますが、パフォーマンスに重大な問題があります。D2009 +

私は、より良いデータベースシステムにアップデートすることで改善を図りたいと考えています。私が必要とするのはローカルデータベースで、現在の「1つのテーブルあたり1つ以上のファイル」システムではなく、1つのファイルにすべてを格納できるのが望ましいです。外部キーの関係とテーブルの索引付けをサポートする必要があり、数十万の要素を持つ表の問合せから結果を迅速に戻すことができなければなりません。

この最後の1つは重要です。現在のシステムは索引付けされていますが、それほど重要ではないようです。すべてのクエリはO(N)の時間で実行されるように見えます.Nはテーブルの合計サイズです。テーブルが大きくなると、恐ろしく遅くなります。なぜ私は本当にわからないが、それはなくなるはずだ。

そして、D2009以降で動作する必要があります。誰かがいくつかの勧告を提供できますか?

答えて

7

埋め込みFirebird(および一般的なFirebird)の別の投票がここにあります!

私はちょうど素晴らしいの埋め込まれたFirebird 1.5にInterbase 6.0アプリを移植経験しました。書類を読んでいるうちの短い時間の後、実際の変換は文字通り20分かかりました。私のアプリはVistaとWindows 7でうまく動いています。マルチユーザサポートが必要ないなら、Firebirdを真剣に見ていきます。とにかく通常のFirebirdを見ないとマルチユーザサポートが必要です)。

これは、db用の単一ファイルと、エンジン用の小さなDLLの2つです。展開、保守、およびバックアップは簡単です。開発中に役立つツールはいくつもあり、IBとFirebirdのためのDelphiコミュニティの技術サポートは第2位です。

SQLのサポートは、制約、トリガー、ストアドプロシージャで優れています(言語を拡張するためのUDFもあります--Delphiで書かれ、インライン関数などとしてデータベースに使用されるDLL)。フレキシブル)。

パフォーマンスについての最後の点 - よくInterbaseはとにかくいつもきれいだったし、組み込みFirebirdのこれまでの経験は、それが「悲鳴を上げる」ということです。本当に感動しました。

3

this questionにはいくつかの良い情報があります.SQLite3とFirebird Embeddedは良い選択肢です。

1

並行性?

私はSQLiteを1つの(Delphi以外の)プロジェクトで使用しており、とても満足しています。

それ以外の場合は、Delphi用の組み込みシングルファイルDBMSがFirebirdのようだと思います。

7

私はこれをD2009で成功したSQLite Wrapperと使用しました。私はそれを数分で実行していました。それは、索引付けと非常に低いオーバーヘッドを持っています。 (これは無料で、SQLite Dllのほかには何も必要ありません)

Delphi Inspirationの市販のSQLiteラッパーもあります。サイトには、非商用および教育用のライセンスも無料で提供されています。私はそれを使用していません。

私はFirebirdも使用していますが、話をするために接続コンポーネントも必要です。私はIBObjectsを持っており、それは私がサーバーと組み込みバージョンの両方で使うものです。私は他の無料のFirebirdのデータベースコンポーネントを試してみましたが、本当に私が好きそのいずれかを発見していないか、私は自信を持って感じたこと。

[EDIT]
人々の大半は、Firebirdのを示唆しているので、ここでいくつかの接続コンポーネントは、私は過去に試したか、私が聞いたことしたことFirebirdのために:

Mercury Database Objects - 無料/オープンソース
IBObjects - コマーシャル(私はこの1つを自分で買ってきた)
FIBPlus - 商業
Firebirds ODBC Driver - フリー/オープンソース
ZeosLib - フリー/オープンソース

+0

。 SQLiteを見つけた方が良い方 – Gerard

+0

+1興味深いリスト、ありがとう。 InterbaseとFirebirdでIBXを使用しましたが、D7はD2009ではありませんでした。 IBXが2009/2010に利用できない場合、FIBPlus(ライセンスを購入しましたが実際に使用したことはありません)を使用するか、まともなDBXPressドライバを他のすべてのもの(SQL Server、ほとんど)DBXPressを使用して行われ、全体的には/それ/基本的なもののためのIBXとは異なる。 – robsoft

+1

もう1つのライブラリ - AnyDAC(http://www.anydac.net)。それはFirebirdとSQLiteネイティブドライバを持っています。 – oodesigner

0

また、ADOとMicrosoft Accessデータベースを使用することもできます。唯一の欠点は、ユーザーがJetエンジンとMDACをインストールしなければならないことです。ほとんどのマシンがそうしています。この利点は、MSSQLへのアップサイジングを容易にすることです。 SQL Serverデータベースを指すように接続文字列を変更して、わずかなクエリ変更を加えてください。

0

私は長年にわたってNexusDBを使用してきましたが、それは小さく、信頼性が高く、柔軟なデータベースです。これはDelphiで書かれており、完全なソースが付属しており、アプリケーションに完全にコンパイル(配布するDLLなし)またはクライアントサーバーシステムとして実行することができます。

パフォーマンス要件を満たしているかどうかは分かりませんが、適切なフィールドにインデックスを作成していれば、SQLクエリのパフォーマンスに問題はありませんでした。これはテーブル製品ごとに1つのファイルですが、あなたが見ていることを止めさせません。

市販の製品ですが、シングルユーザー/組み込みアプリケーションでのみ無料で使用できるDCU専用バージョンを提供しています。

1

は、クライアント/サーバまたはインターネット機能を必要としない場合、それは無料です(拡張システムより購入)のSybaseが提供するアドバンテージデータベース、

http://marketing.ianywhere.com/forms/ADS91-30-Day

を試してみてください。

VCLは100%VCLではないので、VCLにはDLLへの静的リンクが含まれています。

アプリケーションの拡張が必要な​​場合は、データベースを再度変更する必要はありません。

1

データベースとしてPostgresqlを使用することをお勧めします。私たちが作業しているすべてのプロジェクトでそれを使用し、1つのテーブルに400万件を超えるレコードをテストし、うまく機能しました。

0

PostgreSQLは非常に良いですが、それはあなたが非常に重いアプリケーションを行うことができますが、痛みのビットは、2009年には、接続のための を

Firebirdのは、埋め込まれた幻想的で維持するかしないので、それがオラクルに近い重機であるあなたdevrace.comからFIB plusを使用することができます。試用版を使用しているので、商用アプリでない場合は大丈夫です。

これ以外の商用アプリケーションの場合は、300ドルを購入して購入することもできます。インターベース/ファイアバード用のコンポーネントも使用しています。また、非常に使いやすくなります。 無料で使用できるようにするには、 http://sourceforge.net/projects/zeoslib/ のSQL Liteは、単一のファイルではありません、それはマルチユーザーであれば、それは私がリモートのローカルデータベースとOracle 8iのためにBDE /パラドックスを使用した大規模なアプリケーションの変換を仕上げに取り組んでいる

0

を吸いますdb。

私はDevArtのUniDACを使用しています。これにより、MSSQLServerをローカルDBとして使用し、リモートとしてOracleにヒットし続ける単一のコンポーネントセット(古いBDEは完全に無料)が可能になりました。私は、プロバイダーを変更するだけで、どちらの側でもデータベースをより簡単に切り替えることができるという見通しを持っています。

私はこのアプローチが好きで、コンポーネントはかなりうまくいっているようです。

ジェイ(D2007)のSQLiteとFirebirdの両方に使用

関連する問題