On 01/10/12 01:28, Carl (CBM) wrote:
* "User databases will not be able to be joined
against replicated
databases." The reasoning behind this seems to be a misunderstanding
of the role of "application logic". For Mediwiki itself, which works
with only a few articles at a time, joins can be efficiently simulated
within Mediawiki itself, or by making changes to the database schema
on the live servers. For a toolserver application that works with
millions of articles in a single query, it is silly to essentially
re-implement a SQL engine in the application logic - joins of this
size, which may require filesorts, should be done at the database
server level, not at the application level. That's why we use a
database server in the first place.
Note that it's false that MediaWiki doesn't perform joins.
There are many of them. The statement about that was (probably) talking
about cross-db joins.
But the reason for using different dbs on toolserver is based on user
permissions, not in that those tables conceptually should go with the
data in the wiki db.
Looking at the discussions about labs in the past few
days, it seems
clear to me that labs will be useful for some projects, particularly
for developing Mediawiki extensions.
Even for MediaWiki extensions, not having user tables can be hard. If
your extension needs a new table, with you can create it at another db
and link them with $wgSharedTables (a configuration change, without
touching the extension code).
Without that, testing one extension with an additional table would need
it to be created in the master wiki db! (plus have a user with
permissions to write it, and all related maintenance)