私はgdrive/dropboxのようなアプリケーションを、各ユーザーが使用できるグローバルに事前定義されたディレクトリ構造(変更不可能)で実装しました。カスタムフォルダの追加と管理)。データベース内の多くのユーザーの同じデータ
静的なディレクトリ構造は、現在の処理メカニズムに満足していないため、本当に満足していると思いますので、私には良いアドバイスを与えることができます。より良い。
現時点では、テーブル 'folders'を持つMySQLデータベースを使用していますが、その(驚き、驚き)にはすべてのフォルダ(定義済みとカスタム)が含まれています。したがって、フォルダ名、所有者、および親フォルダのフィールドがあります。
あらかじめ定義された構造が非常に大きいので、私はテーブルにすべてのユーザーのためにそれを追加したくなかったので、この構造のインスタンスが1つだけのフォルダテーブルをシードし、 "owner" 。したがって、ユーザーのすべてのフォルダを検索するには、この特定のユーザーを所有者として所有しているユーザーまたは所有していないユーザーを検索するだけです。
このアプローチはこれまでのところうまくいきますが、フォルダごとのユーザーごとの属性については、いくつかの大きな欠点があります。サブディレクトリを含む各ディレクトリのドキュメント数を表示したいと思います。これは毎回実際には遅い再帰クエリを使用して行われます。これは、ユーザーごとのフォルダ構造(たとえば、追加の「文書数」フィールドを追加するだけであれば、フォルダ内の文書に何かが発生したときにクエリフックを使用して更新できる構造)。
このデザインの選択についてどう思いますか?そのようにして、ユーザーごとのフォルダ属性(user_id、folder_id、document_count、last_modified、[その他のアトリビュート]など)を含むテーブルを追加するだけですか? (システムコマンドを利用して)システム上のフォルダを直接処理し、データベースからそれらを保持する方が良い方法でしょうか?それとも、もっと便利な方法でこれをどう管理することができるか、他のアイデアがありますか?
ありがとうございました! :-)
複数のユーザーが特定のフォルダを使用できますか? –
いくつのフォルダがありますか?ユーザーですか?ファイル?等? 〜について話してるの?何百万、またはちょうど何千もの。数千人にすぎないが、私は論理的な構造を構築することをお勧めします。何百万もの人にとって、実際のスキーマとクエリを見てみましょう。どちらのアプローチでも、パフォーマンスの低いクエリを記述することができます。_ –