【问题标题】:What design should be used for holding file information应该使用什么设计来保存文件信息
【发布时间】:2011-07-31 10:49:03
【问题描述】:

我想用 php/mysql 为我的文件创建 flex/actionscript 目录视图。我有一些想法想分享:

1)我正在考虑创建表(在 mysql 中)“文件”和另一个表“文件夹”,当用户登录时,我将需要用户名 = '某物'的“文件”和“文件夹”中的所有数据。但问题是,我会在表格中创建很多条目。例如,如果我将有 100 个用户,并且每个用户可以创建 100 个条目(文件或文件夹),这意味着我将在表中获得 10000 个条目。

2)我的第二个想法,我认为更安全的方法是创建表“用户”,其中将设置 id、用户名、密码、...、文件、文件夹。在文件(文本格式条目)中将列出有关文件的信息,它们将被“*”符号除以,如下所示:

id*file name*size(in kbytes)*path*status 
example:
15*test.exe*150*/root/*private
16*test2.exe*200*/root/folder1/*public
17*test3.exe*5600*/root/folder1/subfolder/*private
...

这个信息会在用户登录的时候flex一次输出,actionscript会捕捉到。但问题是,当我编辑 1 个文件信息(例如 1 个文件名“test.exe”到“editedtest.exe”)时,我会将所有数据加载回 mysql:

15*editedtest.exe*150*/root/*private 
16*test2.exe*200*/root/folder1/*public
17*test3.exe*5600*/root/folder1/subfolder/*private

现在这里只有 3 个文件信息,但可能超过 1000 个。

那么你怎么看,我该如何解决我的任务?或者它是更好的方法,我只是不知道?请写下您的建议和想法。

【问题讨论】:

    标签: php mysql apache-flex actionscript directory


    【解决方案1】:

    我将使用术语“文件系统”来表示每个用户的文件/文件夹结构。

    不要害怕你的数据库中有大量的行,数据库就是为了处理这个问题而设计的。

    另外,我 t 为您提供许多优势:

    • 延迟加载:在你的目录树中,你只能获取当前用户的根目录/文件,当用户想要进入一个子文件夹时,你可以加载这个子文件夹的内容。如果您将整个文件系统结构存储在一个字符串中,即使您只需要一行,您也必须加载整个结构
    • 单元更新:使用数据库,您可以在不加载完整文件系统结构的情况下更新文件/文件夹
    • 更少的代码:您不必解析文本字符串来重新创建路径,您可以将其“原样”存储在数据库中
    • 索引:如果您每行存储一个文件/文件夹,您可以索引这些以加速搜索。如果您将整个文件系统结构存储在其所有者行中,则无法有效地执行搜索。

    【讨论】:

    • 是的,我同意这是做文件系统的更好方法,但你确定数据库中的大量行不会有问题吗?如果我的 Web 应用程序变得有名,并且很多人将开始使用它(例如 1000 人),每个人都会创建很多文件/文件夹。那么您确定数据库将正确且快速地处理 1 000 000 行(展望未来)吗?
    • 是的,当然。 mysql 团队宣布他们拥有 5000 万条记录的数据库:dev.mysql.com/doc/refman/5.5/en/features.html(在页面中搜索“可扩展性”以查找信息)。保持良好性能的关键是良好的索引和结构良好的数据模型。
    • 非常感谢您的建议。我会照你说的做。再次感谢您的建议。
    【解决方案2】:

    如何完成:

    1. 在mysql中保存哪些用户可以访问哪些子目录。

    2. 编写一个 PHP 脚本来读取 Flash 应用程序查询过的目录。检查目录是否属于用户。返回该目录的所有文件。在 Flash 中显示导航按钮的方式与 Web 服务器在目录列表页面中显示按钮的方式相同,例如:http://www.css-zibaldone.com/articles/directory/examples/3/3.html(google 了 apache 目录列表示例)。

    3. 此方法将对每个请求执行 1 次目录遍历。然后,您可以通过启用遍历以返回当前目录及其直接子目录文件来优化这种情况。或者您将结果缓存在硬盘上的某些文件中。

    我找到了一个用于 AJAX 的文件浏览器应用程序:http://www.ajaxfilebrowser.com/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-08-19
      • 1970-01-01
      • 1970-01-01
      • 2016-06-27
      • 1970-01-01
      • 1970-01-01
      • 2020-02-16
      相关资源
      最近更新 更多