2

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

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

我只是觉得这是一个拙劣的工作?我该如何改进这个系统?

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

如何使 GUID 安全?

当 GUID 发生冲突时会发生什么?

服务器后端将用 PHP 编写。

4

3 回答 3

4

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

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

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

是否可能发生 GUID 冲突?

是的,但发生这种情况的可能性很小。 小得离谱。 有更大的事情需要担心。

如何使 GUID 安全?

别再担心他们了。

当 GUID 发生冲突时会发生什么?

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

于 2012-10-22T22:54:57.647 回答
2

好吧,我不知道 id 是否使用 guid,我可能只会使用 db 表上的 auto_increment 键并像这样命名文件,因为除非您在不清理文件系统的情况下从 db 中删除了记录,否则它们将始终是唯一的。我不知道 GUID 是否是 android 端的要求。

于 2012-10-22T22:49:48.150 回答
2

使用 MySQL 存储文档没有任何问题!

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

将它们作为文件放在磁盘上与将它们存储在 RDBMS 中没有什么不同,从长远来看,可能会导致您进一步出现问题。(想到文件访问、磁盘查找、锁定、竞争条件)。

于 2012-10-22T22:57:19.513 回答