我面临两个如何更新数据库的选项,并且不知道哪个更适合我的情况。数据库中有三个表,用于读取/存储某些用户的信息,例如URL历史或一些输入。 实时,用户可以随时访问数据库,因此该用户可以立即看到对数据库所做的更改。 批处理隐藏来自用户的“更新”,通过解析日志文件来更新数据库,并且这样的过程每X小时运行一次。因此,用户只能在X小时后看到他们的更改。
除了用户可以看到的同步/异步更新的优点/缺点。选择用于数据库更新的实时或批处理更新方法有哪些其他好处?
谢谢
答案 0 :(得分:2)
这一切都取决于您期望的流量。如果要扩展应用程序,建议始终进行异步处理。但这并不意味着您的用户必须等待X小时。您可以每5分钟甚至每分钟运行一次流程。
通过这种方式,您可以减少并发问题,同时用户可以稍微延迟地查看更新的历史记录。
请参阅本书Scalability Rules
中的可扩展性最佳做法答案 1 :(得分:1)
我建议您使用使用中间件的EDA(事件驱动架构) “胶水”所有这一切。
http://searchsoa.techtarget.com/definition/event-driven-architecture
一条建议:远离批处理过程。
今天,一切都变得越来越实时。想象一下,如果你能在X小时内得到答案......你会满意吗? :)
如果您向我们提供更多信息,我们也可以为您提供更多帮助。
我看到您的输入来自日志文件?这可以改变吗? 您还可以实现观察者模式。