2011-11-30 50 views
0

我面临着如何更新数据库的两种选择,并且不知道哪一种更适合我的情况。数据库中有三个表,用于读取/存储某些用户的信息,例如URL历史记录或某些输入。 实时,用户可以随时访问数据库,因此对该数据库所做的更改可以立即由该用户查看。 批处理隐藏用户的“更新”,通过解析日志文件来更新数据库,并且每过X个小时就会运行一次这样的过程。所以用户只能在X小时后看到他们的变化。数据库设计,实时或批处理

除了用户可以看到的同步/异步更新的优点/缺点。选择实时或批处理更新数据库更新方法的其他好处是什么?

谢谢

回答

0

我会建议你使用EDA(事件驱动架构),它采用中间件 “胶水”这一切。

http://searchsoa.techtarget.com/definition/event-driven-architecture

一个建议:从批处理过程保持远离。

今天,一切都变得越来越实时。想象一下,如果你在X小时内收到我的答案......你会满意吗? :)

如果您给我们更多的信息,我们也可以帮助您更多。

我看到您的输入来自日志文件?这可以改变吗? 你也可以实现观察者模式。

+0

谢谢,输入来自日志文件。更改?我没有想过这个,以及这可以改变吗? – user200340

+0

我真正的问题是:日志文件从哪里来?它在数据库服务器/ Web服务器/其他应用程序服务器上吗?您可以轻松使用JMS,JAXB来完成所有这些。 –

+0

日志文件来自Web服务器(Tomcat)。 – user200340

2

这一切都取决于您期望的流量。如果要扩展应用程序,则始终建议使用异步处理。但这并不意味着你的用户必须等待X小时。您可以每5分钟甚至每分钟运行一次流程。

通过这种方式,您可以减少并发问题,同时用户将能够以稍微延迟的方式查看其更新的历史记录。

见的可扩展性最佳做法,在这本书Scalability Rules

+0

感谢,+1为“减少并发问题”。在我的情况下,数据库中有三个表,这三个表中的每个记录都有用户电子邮件作为主键/外键,因此用户只能修改自己的数据,并且没有数据在用户之间共享。并发冲突可能会发生,但如果我是对的,这种情况不太可能发生。 – user200340