The not very useful answer would be: It depends on what you are trying to
achieve.

More usefully (I hope):

I work with a complex web application which is also strongly modularized.
This system is generally delivered using several databases, residing on
different servers, to allow us to cope with more user activity.

The whole set-up relies on quite complex replication, since some of the data
in the system is required by all of the constituent parts.

A large cluster, scaled to cope with thousands of users might theoretically
consist of four database servers:

Web, Master, Reporting, Processing.

The first two are strongly paired, with the former serving all direct
requests from web page users (e.g. viewing and submitting data). The second
feeds 'centrally controlled' information (e.g. product information) to all
of the other databases, and is the entry point for maintenance personnel who
maintain the information within the system.

The use of a reporting server is fairly standard - it allows us to shift the
processing requirements of report generation onto a separate server,
lowering the load on the web-facing one. Requests for reports are passed to
this server which generates the required data and passes it to a separate
system responsible for displaying/serving the finished report to the user.

Finally the use of a 'processing' box, would theoretically allow any number
crunching to be done away from the web-facing box - data requiring
processing (e.g. an order which the user has submitted) is churned here, and
the results are replicated back to other databases which require them.

I don't know if it is technically possible to run cross-database
transactions, but I would suspect not. However, I'm sure you can work around
this without too much trouble - the use of replication so that all data
'originates' from one place and is controlled there can help to simplify
this.

To summarise, before I get carried away - if your application/system can be
split down into logical sections, it may be advantageous both from the
organizational point of view (as you say) and scalability pov too, to split
it up into multiple databases.


Thanks, 

Matt

-----Original Message-----
From: news [mailto:[EMAIL PROTECTED] On Behalf Of TO
Sent: 21 March 2004 15:14
To: [EMAIL PROTECTED]
Subject: multiple databases: design question

What are the advantages and disadvantages of using multiple databases,
versus 
placing all tables in one uber-database? 

I understand and appreciate the organizational value of multiple databases,
but what other issues are involved?

I ask this because I'm considering  moving from tables across multiple
DBs (on one server) to all tables in one DB (on one server.)

I don't want to do this, but may need to given the constraints of perl's
Class::DBI and Ima::DBI.  Specifically, I am stuck on successfully 
handling transactions and rollback across multiple databases, because
Ima::DBI creates a different handle (eg connection) to each database,
which stymies rollback (as the work is happening thru different cxns).

I'd welcome any suggestions about structuring databases -- one vs. many --
and if anyone has advice about the perl issues, that'd be great too.

Thanks!


-- 
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]




-- 
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]

Reply via email to