[Mediawiki-l] Wiki Farm with Shared tables on one wiki
Paul Wakfer
paul at morelife.org
Wed Apr 8 08:51:25 UTC 2009
I want to setup 4 wikis ol, ml, ssip and v4v with the last 3 sharing the
tables: 'user', 'user_groups', 'interwiki', 'ipblocks' of the first one: ol
I know that I can do this by using only one database for all 4 wikis and
different table prefixes for each. However, I was hoping to be able to
use 4 separate dbs so that I don't "put all my eggs in one basket", so
to speak. My problem is that my host setup automatically assigns a
different username to each db (as well as arbitrarily placing dbs on
different db servers according to availability at the time of creation,
but I can solved that by simply creating, deleting and creating again
until I get them on the same db server). I can also change the passwords
so that they are the same.
So I was looking into the coding to see if I might be able to make a
change to enable the shared situation even though the db usernames are
all different. I found where the code in database.php where function
tableName( $name ) adjusts the input variable (which is the
concatenation of the simple tablename with the database name) to replace
the database name with that of the shared one for those tables which are
in the shared array - set in local settings. This all looks great, but
it occurred to me, how can this work for table JOIN operations? Don't
JOIN operations necessarily need to be relative to the same database?
Is there any working installation with shared tables on different
databases so that it is known that this works? Given that it does
(somehow?), why would it also not be possible to have different
usernames for the different databases?
Do the experts here see any totally impossibility to me setting things
so that for a shared table the username can be changed in addition to
the database name (and perhaps even change the db server as well)? I am
not asking directly how this would done (although such help would
certainly be appreciated), since I am confident that if it can be done
at all, then I can figure it out myself.
Another possibility that I have thought of (particularly if shared
tables do not actually work on different databases, but only on
different prefixed tables within one database, because of the join
problem that I mentioned above) is to place the db parameters of all 4
dbs in the local settings of each (in an array of course) and then
whenever a shared table is *written to* it will be written to on all 4
wiki databases. In this manner they will all be kept in sync. What do
the experts here think of that idea, given that something easier and
less modifying of the system code is not possible.
Thanks muchly in advance for any helpful ideas.
--Paul Wakfer
MoreLife for the rational - http://morelife.org
Reality based tools for more life in quantity and quality
The Self-Sovereign Individual Project - http://selfsip.org
Self-sovereignty, rational pursuit of optimal lifetime happiness,
individual responsibility, social preferencing & social contracting
More information about the MediaWiki-l
mailing list