0

クライアントがサーバー側に保存されているファイルのデータを編集できるサーバークライアントアプリケーションがあります。問題は、ファイルがメモリにロードするには大きすぎることです(8GB以上)。接続されたクライアントによって呼び出される1秒あたり約50の文字列置換が存在する可能性があります。したがって、ファイル全体をコピーして、指定した文字列を新しい文字列に置き換えることは問題外です。

サーバー側のキャッシュにすべての変更を保存し、一定量のデータに達した後にすべての置換を実行することを考えていました。その量のデータに達した後、ファイルを小さなチャンクにコピーして更新を実行し、指定された部分を置き換えます。

これが私が思いついた唯一のアイデアですが、別の方法があるのではないか、またはこの方法でどのような問題が発生する可能性があるのか​​疑問に思いました。

4

2 に答える 2

2

多くのユーザーが同時に編集する8GBを超えるデータがある場合、フラットファイルで処理できるデータをはるかに超えています。

このデータをデータベースに移動する必要があります。「ファイルの内容がデータベースに合わない」というコメントについて:申し訳ありませんが、私はあなたを信じていません。特に「多くの人が編集できる」というあなたの発言に関しては、それがデータベースを使用するもう1つの理由です。ファイルシステムでは、一度に1人のユーザーだけがファイルへの書き込みアクセス権を持つことができます。ただし、データベースでは、複数のユーザーが同時に書き込みアクセスできます。

データが正確にどのように構造化されているか、ユースケースが何であるかを示す新しい質問を開くときに、データベーススキーマを考え出すのに役立ちます。

于 2012-09-28T12:51:16.393 に答える
1

データに何らかの形式のインデックスを(別のファイルで)使用して、この巨大なファイルの関連部分にすばやくアクセスできるようにすることができます(これは、大きなファイル(〜200-400gb)で正常に実行されていますが、Phillippが述べたように)特に読み取り/書き込みアクセスの場合は、そのデータをデータベースに移動する必要があります。一部のフレームワーク(OSGなど)には、3D地形データ用のデータベースバックエンドがすでに付属しているため、そこでどのように実行するかを確認できます。

于 2012-09-28T12:59:09.827 に答える