让 Web 服务器根据用户请求向数据仓库发出请求会更好吗?
是的。您的数据很少,因此无需尝试以某种方式“缓存”它。(除了 CSV 可能不是执行此操作的最佳方式这一事实之外)。没有什么能阻止您从网络服务器向数据库服务器发出这些请求。有了这么少的信息,您不会发现性能问题,但即使一切都在增长,在数据库方面(索引等)也有很多收获,这将帮助您在接下来的 100 年中生存下来这种时尚。
来自您的用户的请求数量(也非常少)不需要任何特殊处理,因此再次直接查询是最好的。
或者这是否存在网络错误或性能问题的可能性更大等问题?
好吧,它可能会,但这不能证明你的 CSV 方法是合理的。示例以及您不必担心的原因可能是
- 与数据库服务器的连接已断开。
这对这两种方法来说都是一个问题,但是对于每天一次的方法来说,每天只有一个连接,万分之一的故障的变化似乎更好。但是这些问题不应该经常出现,如果出现了,你应该能够处理它们。(重试请求,给用户一个消息)。这就是大量网站所做的事情,所以如果我说这不会成为问题,请相信我。另外,想想如果您的每日更新失败意味着什么?那会带来更大的问题!
- 正如所说的性能问题
,这是由于数据量和请求量造成的,而不是问题。即使它变成了一个,这也是一个你应该能够在不同层次上发现的问题。在数据库服务器上使用缓存系统(非 CSV)。在网络服务器上使用缓存系统。修复索引以防止性能成为问题。
但:
将您的数据仓库与您的 Web 系统分开并不奇怪。如果这是一个要求,而且它肯定可能是,你能做的最好的事情是在另一台机器上重新创建你的仓库数据库(我刚刚辩护为足以直接查询的那个)。做主从系统可能会得到很好的结果
- 您的数据仓库是一个主数据库:它将所有更改发送到从属,但其他情况下是不可逾越的
- 您的第二个数据库(甚至在您的网络服务器上)从主服务器获取所有更新,并且是只读的。你只能查询它的数据
- 您的网络服务器无法连接到数据仓库,但可以连接到您的从站以读取信息。即使有注入黑客,也没关系,因为它是只读的。
现在您没有任何时间更新查询的数据库(主从复制将始终保持更新),但是来自网络服务器的查询不可能使您的仓库处于危险之中。利润!