0

私は現在、(時間をかけて) かなり大量のデータを処理する金融プログラムについてブレインストーミングを行っています。C++/Qt GUI アプリになります。

実行時にすべてのデータをメモリに読み込むことは問題外だと思います。十分なデータが与えられると、メモリを大量に消費する可能性があるためです。

必要なものだけをメモリに読み込む方法を考え出そうとしています。たとえば、アカウントが表示されている場合は、実際に表示されているデータ (および絶対に必要なもの) のみです。そうすれば、データ ファイルが 4 GB 程度であっても、メモリ フットプリントを小さく抑えることができます。

ファイルを1行ずつゆっくりと読み取り、必要な特定のデータを識別する「タグ」または何かを見つけてロードする、ある種の検索機能について考えましたが、理論的には、GUIの更新があるたびにこれが発生する可能性があることを考慮してくださいひどい方法のようです。

基本的に、ファイル内の特定のデータを効率的に検索し、それのみをメモリに読み取り、ファイル全体を毎回読み書きすることなく、変更して書き戻すことができるようにしたいと考えています。私は経験豊富なプログラマーではなく、アイデアのグーグル検索はあまり成功していません。

編集:おそらく、Qtの派手なQDataStream関連のクラスを使用してデータを保存するつもりであることに言及する必要があります。つまり、ファイルはバイナリ ファイルである可能性が高く、テキスト ファイルのように行ごとに簡単に検索することはできません。

4

1 に答える 1

0

あなたのコメントに基づいてOKです。

シンプルに始めましょう。背景としてのことを除いて、今のところ会計申請のことは忘れてください。ファイルシステムに適した例

アカウントなどの 1 つのデータ型。固定幅の列から始めて、固定幅のレコードを作成します。

データ用に 1 つのファイル アカウント番号のインデックス用に別のファイルを用意

挿入、更新、削除を行うと、多くのことを学ぶことができます。

例えば。削除すると、インデックスとデータが見つかり、それらを移動して両方のファイルを再構築できます。

アカウント レコードに、削除されたことを示す内部フィールドを設定し、それをデータに設定して、インデックスを削除することができます。ただし、後者もファイル全体を書き換えます。代わりにインデックス ファイルに削除フラグを入れることもできます...

あなたのインデックスは、アカウントとポジションの単純なリストになるだけですか、それともハッシュしたい場合は、ツリーを使用します。インデックス作成戦略だけを見るだけで、数か月ではないにしても数週間を費やすことができます。

とにかく楽しい学習。今後の質問の参考になれば幸いです。

于 2012-05-12T00:56:29.317 に答える