1

私のアプリケーションでは、データを保存するためにファイルを使用したいと考えています。データベースや平文ファイルを使用したくありません。目標は、レコードの名前を識別するためだけに、文字列とともに double 値と integer 値を保存することです。レポートを生成するためにデータをディスクに保存する必要があります。ファイルはギガバイトまで大きくなる可能性があります。どの形式を使用することをお勧めしますか? バイナリ?もしそうなら、どの vcl コンポーネント/ライブラリを使用するのが良いか知っていますか? 私の目標は、ファイルを作成および更新するアプリケーションを作成し、別のツールがそれらのファイルを「食べて」、ユーザーにオンデマンドで優れた PDF レポートを生成することです。どう思いますか?アイデアや提案はありますか?

前もって感謝します。

4

5 に答える 5

4

車輪の再発明をしたくない場合は、タスクに必要なすべてのオープン ソース ツールを当社から見つけることができます。

完全なソース コードで、Delphi 6 から XE まで動作します。

フレームワークのドキュメントを更新しました。600 ページを超えるページには、すべてのクラス メソッドの詳細と、新しく強化された一般的な紹介が含まれています。SAD 文書を参照してください。

更新: SQLite を使用する予定がある場合は、まず、データがどのように格納されるか、どのインデックスが作成されるか、および SQL クエリがどのようにリクエストを高速化できるかを推測する必要があります。すべてのリクエストに対してすべてのファイル コンテンツを読み取るのは悪い考えです。単一の SQL クエリが消費された結果を返すことができるように、データをより適切に構造化する必要があります。場合によっては、データに追加の値 (一時的な合計や平均など) を使用することをお勧めします。また、最小/最大多次元データへのアクセスを高速化する専用の SQLite3 の RTree 仮想テーブルの使用を検討してください。これにより、リクエストが大幅に高速化される可能性があります。double

于 2011-04-29T05:52:27.470 に答える
2

完全な SQL データベースを使用する必要はなく、プレーン テキスト ファイルは単純すぎると考えています。

それらの間のポイントは次のとおりです。

  1. 完全な SQL データベースではなく、キーと値のストアに近いものは、技術的にはフラット ファイルではありませんが、単一の主キーですばやく検索できる単一の「キー + 値」リストを提供します。BSDDB など。名前にDとBの文字が入っています。あなたの見解では、それはデータベースになりますか?これはリレーショナル データベースではなく、SQL を実行しないためです。これは、よく知られているバイナリ ファイル形式を使用した単なるバイナリ キー値 (ハッシュ テーブル) の BLOB ストレージ メカニズムです。個人的には、新しいプロジェクトを開始して、このカテゴリのものを使用することはありません。

  2. 推奨: SQL を使用するが、スタンドアロンの SQL データベース サーバーほど大きくないもの。たとえば、SQLite とDelphi ラッパーを使用できます。十分にテストされており、多くの C/C++ および Delphi アプリケーションで使用されており、自分で作成できる何よりも信頼できます。これは非常に軽量な組み込みデータベースであり、多くの人から信頼されています。

  3. 独自の ISAM (VLIR) を展開すると、最終的には独自の社内 DBMS に変化します。関連する複数のファイルがあり、インデックスがあるため、すべてをメモリにロードすることなく、データをすばやく検索できます。推奨されません。

  4. フラット バイナリ固定レコード長ファイルの中で最もフラットです。あなたは最初にあなたの質問で、ランダムアクセスファイルと呼ばれるものを持つpower basicについて言及しましたが、それを質問から削除しました。おそらくあなたが探しているもの、特に主な操作としての追加のみの書き込みの場合。独自の TurboPascal 時代の「ファイル オブ レコード」を作成します。「FILE OF RECORD」タイプを使用すると、2 GB の制限に達し、Unicode に問題が発生します。したがって、代わりに TStream を使用してください. バイナリ ファイル形式には多くの反対があります。特に、古いファイルを読み取る能力を損なうことなく、時間の経過とともにバイナリ ファイル形式を成長および拡張することは困難であるためです。これが、独自のバイナリ ソリューションを展開するのではなく、最初はやり過ぎのように思えるもの (SQLite) から始めることをお勧めする主な理由です。

    更新2:質問を更新してPDFとレポートシステムの要件のように聞こえるものに言及した後、実際のデータベースを使用する必要があると思いますが、おそらくfirebirdやinterbaseなどの小さくて使いやすいデータベースを使用する必要があります。)

于 2011-04-28T15:36:38.887 に答える
0

私は KBMMemtable を使用しています - http://www.components4developers.com/を参照してください- 高速で信頼性が高く、長い間使用されてきました - ファイルの入出力のバイナリおよび CSV ストリーミングをサポートし、インデックス作成、フィルター、およびその他の多くの機能もサポートしています - TClientDataSet大規模なデータセットではうまくいきません。

于 2011-04-30T03:54:29.090 に答える