Massively Parallel transactioning?

Поиск
Список
Период
Сортировка
От Benjamin Smith
Тема Massively Parallel transactioning?
Дата
Msg-id 201008181632.06347.lists@benjamindsmith.com
обсуждение исходный текст
Ответы Re: Massively Parallel transactioning?  (Steve Atkins <steve@blighty.com>)
Re: Massively Parallel transactioning?  (ChronicDB Community Team <community@chronicdb.com>)
Re: Massively Parallel transactioning?  ("Joshua D. Drake" <jd@commandprompt.com>)
Re: Massively Parallel transactioning?  (Adrian von Bidder <avbidder@fortytwo.ch>)
Список pgsql-general
Is there a way to update a number of databases hosted on a single server
without opening a separate psql connection to each database?

We have a cluster of servers hosting an application on Postgres. Right now, we
have dozens of databases per server, enough that we're starting to have
problems with our update process.

When we release updates, we have a migrate script within our update process
that runs all the database schema updates for all our clients. The way that it
works is to open a transaction on all the databases concurrently, run the
commands in sequence on the databases within the transactions, and then commit
them all (or rollback if there was a problem)

This way we can be sure that either all the databases are in synch, or that we
need to rollback the program patch/update.

So far, it's been a dream, but now, as we continue to grow, we're starting to
reach connection limits per server. Short of raising the number of
simultaneous connections, is there a way to run all the transactions for a
single server for all databases within it on a single (or small number) of
connections?

I've tried the following:

# ATTEMPT 1
$psql -U postgres template1 -h server1;
template1=# begin transaction; create table testtable (name varchar);
BEGIN
CREATE TABLE
\c somedatabase; ri
psql (8.4.4, server 8.4.0)
SSL connection (cipher: DHE-RSA-AES256-SHA, bits: 256)
You are now connected to database "somedatabase".
somedatabase=# rollback;
NOTICE:  there is no transaction in progress
ROLLBACK
somedatabase=# \c template1;
template1=# rollback;
NOTICE:  there is no transaction in progress
ROLLBACK
template1=#

# ATTEMPT 2
$psql -U postgres template1 -h server1;
template1=# alter table somedatabase.testtable add address varchar;
ERROR:  cross-database references are not implemented:
"somedatabase.public.students"
template1=#

Is there a better way?

--
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.


В списке pgsql-general по дате отправления:

Предыдущее
От: Ogden
Дата:
Сообщение: mod_perl and PostgreSQL 8.3.3 causing "message type 0x44 arrived from server while idle"
Следующее
От: Benjamin Smith
Дата:
Сообщение: Re: Clustering, parallelised operating system, super-computing