最佳实践是限制数据库的文本字段,以防止损害。

9 浏览
0 Comments

最佳实践是限制数据库的文本字段,以防止损害。

在我工作的项目中有一些博客文章,我猜想它的text字段应该以某种方式进行限制(可能将来会成为一个JSON字段)。在领域的意义上没有限制-用户可以写任意多的内容,但是为了防止由于非常大量的文本而导致的数据库损害,我想应该设置一些限制。正如SO Q/A所说:

  1. 使用PostgreSQL限制文本字段为1GB 在将内容存储到PostgreSQL的TEXT字段时是否存在最大长度
  2. http POST的限制取决于浏览器(2GB - 4GBhttps://serverfault.com/questions/151090/
  3. 据传言,Nginx的默认client_max_body_size1MB

那么,如何处理这些问题呢?可能有一些做法,比如:“在应用程序级别限制为一百万个字符,不用担心”?

0
0 Comments

在这个问题中,出现的原因是作者在开发一个应用程序,其中数据库条目实际上是一个博客文章(通常是500-1000个字)。作者将博客文章存储为数据库中的文本字段。作者担心处理大量数据时会发生什么问题。

为了解决这个问题,我完全赞成你对用户输入数据进行限制。在没有完全了解系统架构的情况下,无法根据使用的技术来确定理论上的最大大小。

然而,更好的方法是从用户的角度来考虑。对于你需要存储的文本,什么是最大合理的数量,然后再多加一点,比如增加10%,因为用户可能会做出意想不到的操作。当有人试图输入更多数据时,你可以添加一个错误条件。

我提出这种方法的原因很简单,一旦你定义了最大的帖子大小,你可以使用边界值分析(测试在限制的两侧)来证明你的产品在接近和达到限制时的行为是正确的。这样你就可以了解并向用户解释产品的行为等等。

如果你选择让架构定义限制,那么你将会有未定义的行为。你需要逐个分析每个组件,以确定它们将接受的最大大小以及当超过该大小时的行为。

根据我的经验,开发人员通常不会花费这样的精力,而是让用户为他们进行测试。当然,这通常会更糟糕,因为用户会报告奇怪的错误消息,然后调试最终会耗费大量时间和金钱。

是的,伙计,非常感谢你的回答。现在,我想正确的做法是首先更多地考虑领域逻辑。当然,我们想要一个博客文章,但肯定不是整本书。我想-10000字至少会是“相当安全”的一些初步数据,然后,当我们获得更多数据进行分析时,可能会将其限制在1000-2000字。再次感谢!

0