2011-07-15 8 views
1

私は、テキストを保持するSeasideアプリを計画しています。これは最大5Mbの単一のインスタンスです。これにはどんな種類のオブジェクトが最適ですか?大量のテキストを保持するオブジェクトは何ですか?

また、このテキストでいくつかの繰り返しをしたいと思います。

おかげで、ヴィンス

編集:これまでご回答いただきありがとうございます。このファイルは、レガシーファイナンスシステムから生成するのに約40分かかりますので、あらかじめ生成して保存する必要があります。各行は顧客レコードであり、顧客がログインしたときにそれぞれを取り出して使用する必要があります。顧客アクセスは予測不可能で、各行を即時に生成するためのレガシーシステムとのインターフェースは非常に最後の手段です。

+1

Stringを排除する理由はありますか? –

+0

もっと具体的には何をテキストに記載していますか?なぜ5Mbですか? – mathk

答えて

6

ファイルの生成に時間がかかり、あとでファイルへのランダムアクセスが必要になることを考えれば、ファイルの解析とその後の構造化データの保存を選択します。

あなたが使用できるSqueaksourceにはCSV Parserプロジェクトがあります。これは、使用できるCSVレコードの構造化オブジェクトツリーを作成します。

+0

私はこれを試してみます。助けてくれてありがとう。 –

+0

最近このパッケージを使用し、いくつかの修正を加えました。ただし、プロジェクト管理者に連絡することができないため、アップロードできません。問題が発生した場合は、私に知らせてください。私はあなたに送ることができます。最新版です。 –

+0

こんにちはヨハン。私はそれを行って、廃止されたセレクタを削除して構文を更新しましたが、UTF8エンコーディングの問題で停止しました。 "エラー:無効なutf8入力が検出されました"。私はあなたの変更を試してみたいと思います。私はそれを別の質問/回答として掲示して、他の人がそれを役に立つと思うようにします。 Vince –

3

外部テキストファイルと、特定のクラスのインスタンスをそのファイルの表現として使用します。オブジェクトのoopをファイルの名前として使用します。

+2

Squeak asOOpでは、一意でない12ビットのオブジェクトハッシュを返しますが、注意してください。 –

1

Johan氏によれば、単に顧客のコレクションを使用してCSVから入力するだけです。アクセスするニーズに応じて、辞書またはOrderedCollectionを使用して保持することができます。

0

5メガは何もありません。それを心配しないでください。

これらのCSVレコードを(解析してインスタンス化した後に)オブジェクトに変換できない場合は、ストリングのコレクションまたはストリームも問題ありません。

キー付き検索が必要な場合は、辞書またはルックアップテーブルがその仕事を行います。

私は100メガのテキストデータをメモリー(1ミリオン行)に持っていて、問題なくイメージに保存さえしました(イメージセーブ)。

よろしくお願いいたします。

関連する問題