在服务器上存储文件的可扩展方式(PHP)?

时间:2012-10-22 22:43:26

标签: php mysql web guid

我正在创建我的第一个Web应用程序 - 一个非常简单的在线文本编辑器。 我需要做的是找到存储基于文本的文件的最佳方法 - 其中很多。 这些文本文件的大小可以超过10,000个单词(文本单词而不是计算机单词。)本质上我希望文本文档的大小是无限的。

我正在考虑将文本文件存储在我的MySQL数据库中 - 但是认为有更好的方法。 相反,我正计划将基于XML格式的文本文件存储在我服务器上的目录中。 数据库中的行定义基于xml的文本文件的名称以及创建文本的用户以及基本元数据。 使用V4 GUID生成器生成ID,该生成器为文本提供id并将文本存储在我的服务器上的“/ store”目录中。我的服务器中的文本定义包含此ID,我正在开发的Android应用程序通过检索文本定义然后使用文本定义中的GUID将文本下载到本地设备来获取文本文件的内容。

我只是认为这是一项拙劣的工作?我怎样才能改进这个系统?

存在GUID冲突的情况。 我不希望这种情况发生。 “苗条”的可能性还不够好 - 我需要确保在GUID冲突中绝对没有机会。 我计划在存储具有特定id的文本之前检查数据库中具有相同id的文本 - 但是我相信在我的数据库中有超过20,000条文本,这将花费很长时间并在服务器上产生不必要的压力。

如何使GUID安全?

GUID发生碰撞时会发生什么?

服务器后端将用PHP编写。

3 个答案:

答案 0 :(得分:4)

你在这里有几个问题,所以我会尽力回答这些问题。

  

带GUID的XML是最好的方法吗?

“最佳”通常是主观的。这当然是一种方法,但你可能会增加不必要的开销。如果它只是您要存储的文本,为什么不将它放在带有varchar(MAX)的SQL中?

  

GUID冲突是否可能?

是的,但发生这种情况的可能性很小。 Ridiculously small.还有许多值得担心的问题。

  

如何使GUID安全?

不要担心他们。

  

当GUID发生碰撞时会发生什么?

这取决于您如何使用它们。在这种情况下,存储在GUID指示的位置的旧数据可能会被新数据覆盖。

答案 1 :(得分:2)

嗯,我不知道id是否使用guid我可能只是在db表上使用auto_increment键并命名这样的文件,因为除非你从数据库中删除了记录而没有清理文件系统,否则它们将始终是唯一的。我不知道GUID是否是android方面的要求。

答案 2 :(得分:2)

使用MySQL存储文档没有错!

什么是将它们存储在XML中为您提供?添加其他格式图层只会增加读取和格式化时的处理时间。

将它们作为文件放置在磁盘上与将它们存储在RDBMS中没有什么不同,从长远来看可能会导致您进一步发生问题。 (记住文件访问,磁盘搜索,锁定,竞争条件)。