2011-07-31 39 views
0

我想用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 
... 

一旦当用户LOGES在弯曲时,此信息将被outputed和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.

所以你怎么看,我该如何解决我的任务?还是更好的做法,我只是不知道?请写下你的建议和想法。

回答

1

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

不要害怕你的数据库中的大量行,数据库旨在处理这个问题。

而且,我 T公司提供你许多优点:

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

是的,我同意,这是更好地做文件系统的方式,但你肯定在数据库行的大金额将不会有问题?如果我的Web应用程序会成名,并且很多人会开始使用它(例如1000人),则每个应用程序都会创建大量文件/文件夹。那么你确定数据库能够正确快速地使用100万条线(将来看)吗? – Volter

+1

是的,绝对。 mysql团队宣布他们拥有5000万条记录数据库:http://dev.mysql.com/doc/refman/5.5/en/features.html(搜索页面中的“可伸缩性”以查找信息)。保持良好性能的关键是良好的索引和结构良好的数据模型。 –

+0

非常感谢你的建议。我会像你说的那样做。再次感谢您的建议。 – Volter

0

如何做到:

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

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

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

我发现AJAX文件浏览应用程序:http://www.ajaxfilebrowser.com/

相关问题