Distributed vs Co-located DB performance
I am busy reading Rod Johnson's excellent book "Expert one-on-one J2EE Design and Development". The most helpful book I have read in years.
In several places in his books he refers to the benefits of co-locating the web tier and biz tier within the same JVM and the on the same phsycial machine. One then uses clustering to handle scalability.
My question is how about the database. This point seems to be glossed over in the book. Most enterprise systems I have dealt with have the database on a seperate physical machine to the business and/or web machines. This is for the purposes of backup, security and shared access.
However, this obviously neccessitates remote access to the DB machine for every DB interaction from any business object. Doesn't this kill performance in the same way as making your EJBs distributed does (as opposed to co-locating them). Or does connection pooling and the lower access overheads (when compared to RMI) make this performance loss negligble?
Any input on this topic would be most helpful as my company is in the process of finalising it's hosting, machine and design requirements for its major application.
Many thanks in advance.