大约7-8年前,我在一个网站上工作,这个网站的流行程度超出了我们最初的预期,这让我们在性能方面遇到了麻烦。由于我们在基于 Web 的项目中都相对缺乏经验,这给我们带来了很大的压力,除了通常的数据库分离到单独的服务器上,负载平衡等等。
有一天我想到了一件很简单的事。由于网站是基于用户的,他们的个人资料存储在一个数据库表中,通常有人会这样做-用户 ID,许多信息变量和类似的东西-这将显示为一个用户个人资料页面,其他用户可以查找。我已经将所有数据刷新到一个简单的 html 文件中,该文件已经准备好作为用户配置文件页面,并得到了显著的提升——基本上是一个缓存。我甚至做了一个系统,当用户编辑他们的配置文件信息,它会解析原始的 html 文件,把它进行编辑,然后刷新 html 回到文件系统-得到了更多的提升。
所有的数据结构都针对特定的用途进行了优化,只有当适当的建模试图以语义无偏见的方式表示“现实”时,才会使用关系结构。那些在关系数据库方面经验不足的人通常不会意识到他们在其他类型的数据模型方面的经验会更糟糕。可能会出现糟糕的实现,尤其是在关系数据库中,构建复杂模型相对容易,但最终可能会遇到相当大的问题。不过,当我试图在 xml 中想象同样的怪物时,我总是感觉更好。