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)