ファイルリポジトリまたは「データベース」としてzipファイルを使用する -- .net フィールド 関連 問題

Using a zip file as a file-repository or 'database'












0
vote

問題

日本語

私はファイルをサポートするために既存のアプリケーションを変更する必要があります。アプリはクライアント - ポートフォリオアプリの種類です。それは単一のユーザーで、クライアントの訪問を記録するための単純なデータベースを持っています。データベースはレコードのインデックスのように使用されるようになります。レコードは、私が見つけた個々のファイルで、拡張子が異なる単なるzipファイルです。すべてのクライアントインタラクション/ノートはそこにJSONテキストファイルとして保存されています。

変更された変更は文書のサポートを追加することです。

私はデータベースにファイルを保存することができ、データベース内のファイルへのリンクもまたどこかでディスク上に存在することができることを知っています...

クライアントは、患者のすべてを含むこの単一ファイルを保持するために(可能であれば)望みます。

だから、私はZipファイル内のフォルダの作成とそこに文書を置くことを検討しています。

私はそれがうまくいくことを知っていて、私は彼らがクライアントごとにたくさんのファイルを追加することを期待していませんが、パフォーマンスについて疑問に思います。

あらゆる考え?

英語

I have to modify an existing application to support files. The app is a client-portfolio type of app. It's single user and has a simple database to record client visits. The database looks like it's used as in index of records. The records are individual files which I found is a just a zip file with a different extension. All the client interactions / notes are stored in there as json text files.

The change involved is to add support for documents.

I know I can store files in the database and also links to files in the database and the files exist on the disk somewhere...

The client wants (if possible) to retain this single-file that contains everything on the patient.

So, I'm considering creating folders inside the zip file and putting the documents in there.

I know it will work and I'm not expecting them to add lots of files per client but I'm wondering about performance.

Any thoughts?

</div
  
   
   

回答リスト

1
 
vote

多くのMicrosoft Officeフォーマットがこのように機能します。 .docx または .xlsx Extensionを .zip に変更し、それは正しく開くと、XMLマークアップやその他のリソースを表示できます。 <コード> .3mf 3Dファイル形式もこのように機能します。

そうはい、私はあなた自身のフォルダをこのzipファイル内に置いてあなたの文書を保存するのにそれを使用しても大丈夫だと思います。しかし、私は時間の経過とともにパフォーマンスを懸念しています...レコードを読むためだけにzipファイルを開くためにどのくらいの作業が関与しています。私はあなたの文書ライブラリのための別々のzipファイルを保持することを提案するかもしれません。このようにして、あなたはまだ多くのファイルだけではなく、通常のレコードにパフォーマンスの問題を引き起こしないようにしてください。

IIRCは、ZIPアーカイブを追加することができますが、コンテンツを変更、削除、または挿入することは常にアーカイブ全体を再書き直す必要があります。さらに、に使用される個々のファイルを抽出するには、アーカイブ全体を読み取る必要がありますが、もうありません。あなたのユーザーがファイルを追加し、それらを頻繁に変更しない限り、これは合理的なはずです。

 

Lots of the Microsoft Office formats work this way. Change any .docx or .xlsx file extension to .zip and it'll open right up and let you view the xml markup and other resources. The .3mf 3D file format also works this way.

So yes, I think you'll be okay to put your own folder inside this zip file and use it to store your documents. However, I am concerned about performance over time... how much work is involved in opening the zip file just to read a record, now that the size is significantly larger to hold all the documents? I might suggest keeping a separate zip file for your documents library. In this way, you're still limited to just two files rather than many, and you're sure not to cause performance issues for normal records.

IIRC, appending a zip archive can be fairly efficient, but changing, removing, or inserting any content always requires re-writing the entire archive. Additionally, extracting individual files used to require reading the entire archive, but does not anymore. So as long as your users only add files and don't change them often, this should be reasonable.

</div
 
 
 
 

関連する質問

65  浮動小数点数の解析:すべてのアルゴリズムをキャッチしますか?  ( Floating point number parsing is there a catch all algorithm ) 
多文化プログラミングの楽しい部分の1つは数値フォーマットです。 アメリカ人は10,000.50を使用しています ドメイズは10.000,50 を使用しています フランス語10 000,50 私の最初のアプローチは、区切り文字に遭遇し、これを10進数の区切...

441  math.floor()とmath.truncate()の違い  ( Difference between math floor and math truncate ) 
Form8 と <コード> Form9 .NET? ...

176  「メモリリーク」の解剖学  ( Anatomy of a memory leak ) 
.NETの観点: メモリリーク? アプリケーションが漏洩するかどうかを判断するにはどうすればよいですか。効果は何ですか? メモリリークを防ぐにはどうすればいいですか? アプリケーションがメモリリークがある場合は、プロセスが終了するか、または殺されたときに...

105  コンソールアプリケーションの信頼できるタイマー  ( Reliable timer in a console application ) 
.NET 3つのタイマータイプがあります(を参照)。 .NET Frameworkクラスライブラリ のタイマークラスの比較)。メインスレッドが忙しい場合は他のタイプがドリフトする可能性があるため、スレッドタイマーを選択しました。これは信頼できるように必...

95  SVNリビジョン番号をASP.NET Webサイトで同期させるにはどうすればよいですか。  ( How do i sync the svn revision number with my asp net web site ) 
スタックオーバーフローには、下部にSubversionバージョン番号があります。 SVNリビジョン:679 このような自動バージョン管理を使用したい場合は、<コード> TableAdapter0 、Windows Forms、WPDプロジェクト/ソリュ...

55  フォルダとファイルを圧縮/解凍する  ( Compressing decompressing folders files ) 
C#でファイルやフォルダを迅速に圧縮または解凍するための良い方法を誰もが知っていますか?大きなファイルを処理する必要があるかもしれません。 ...

40  XSDデータ・セットに基づいてSQLiteデータベースを作成する  ( Create a sqlite database based on an xsd data set ) 
xsd DataSet6 に基づいてSQLiteデータベースを作成する方法があるかどうかを知っていますか?過去には、基本的なSQLiteマネージャを使用しましたが、可能な限り<コード> .NET 開発で物事をもう少し融合させたいです。 ...

77  NETアプリケーションにスクリプト機能を追加する  ( Adding scripting functionality to net applications ) 
私はC#で書かれた少しゲームを持っています。データベースをバックエンドとして使用します。これは a トレーディングカードゲーム、そして私はスクリプトとしてカードの機能を実装したいと思いました。私が本質的にインターフェース、 ICard が本質的に持っていること...

1955  日時型の誕生日に基づいて誰かの年齢を計算するのですか?  ( How do i calculate someones age based on a datetime type birthday ) 
人の誕生日を表す<コード> Form5 を与えられます、何年もの年齢の年齢を計算するのですか? ...

36  XSDデータセットと外部キーを無視します  ( Xsd datasets and ignoring foreign keys ) 
.NET を使用して、現在のアプリケーションにかなり標準のテーブルの設定をしています。 xsd <コード> TableAdapter TableAdapter >機能。 My contracts テーブルは、 primary department...




© 2022 cndgn.com All Rights Reserved. Q&Aハウス 全著作権所有