Apparently several of my tools rely on the database to provide namespaces for the current wiki. See also: T50625
Description
Status | Subtype | Assigned | Task | ||
---|---|---|---|---|---|
Resolved | jcrespo | T140788 Labs databases rearchitecture (tracking) | |||
Resolved | bd808 | T166402 Program 7 Outcome 3: data services | |||
Resolved | bd808 | T142807 Migrate all users to new Wiki Replica cluster and decommission old hardware | |||
Open | None | T180558 Include namespace IDs and their names to mysql wikireplicas (meta_p database) |
Event Timeline
From the see also task:
@Dispenser can you provide a clear and actionable description of what you are hoping to see changed?
I hope to see a namespace table added to meta_p. And with more thought. Domain isn't needed, dbname should lose _p per Labs convention, and maybe a gender flag to distinguish Benutzer and Benutzerin depending on future MW plans. Here's what it is currently (note: MediaWiki and MediaWiki Diskussion):
SELECT * FROM s51892_toolserverdb_p.namespacename WHERE dbname LIKE "dewiki_p" ORDER BY FLOOR(ns_id/2), ns_is_favorite DESC, ns_type, ns_name;
dbname | domain | ns_id | ns_name | ns_type | ns_is_favorite |
---|---|---|---|---|---|
dewiki_p | de.wikipedia.org | -2 | Medium | primary | 1 |
dewiki_p | de.wikipedia.org | -1 | Spezial | primary | 1 |
dewiki_p | de.wikipedia.org | -2 | Media | canonical | 0 |
dewiki_p | de.wikipedia.org | -1 | Special | canonical | 0 |
dewiki_p | de.wikipedia.org | 0 | primary | 1 | |
dewiki_p | de.wikipedia.org | 1 | Diskussion | primary | 1 |
dewiki_p | de.wikipedia.org | 1 | Talk | canonical | 0 |
dewiki_p | de.wikipedia.org | 2 | Benutzer | primary | 1 |
dewiki_p | de.wikipedia.org | 3 | Benutzer Diskussion | primary | 1 |
dewiki_p | de.wikipedia.org | 2 | User | canonical | 0 |
dewiki_p | de.wikipedia.org | 3 | User talk | canonical | 0 |
dewiki_p | de.wikipedia.org | 3 | BD | alias | 0 |
dewiki_p | de.wikipedia.org | 2 | Benutzerin | alias | 0 |
dewiki_p | de.wikipedia.org | 3 | Benutzerin Diskussion | alias | 0 |
dewiki_p | de.wikipedia.org | 4 | Wikipedia | primary | 1 |
dewiki_p | de.wikipedia.org | 5 | Wikipedia Diskussion | primary | 1 |
dewiki_p | de.wikipedia.org | 4 | Project | canonical | 0 |
dewiki_p | de.wikipedia.org | 5 | Project talk | canonical | 0 |
dewiki_p | de.wikipedia.org | 5 | WD | alias | 0 |
dewiki_p | de.wikipedia.org | 4 | WP | alias | 0 |
dewiki_p | de.wikipedia.org | 6 | Datei | primary | 1 |
dewiki_p | de.wikipedia.org | 7 | Datei Diskussion | primary | 1 |
dewiki_p | de.wikipedia.org | 6 | File | canonical | 0 |
dewiki_p | de.wikipedia.org | 7 | File talk | canonical | 0 |
dewiki_p | de.wikipedia.org | 6 | Bild | alias | 0 |
dewiki_p | de.wikipedia.org | 7 | Bild Diskussion | alias | 0 |
dewiki_p | de.wikipedia.org | 6 | Image | alias | 0 |
dewiki_p | de.wikipedia.org | 7 | Image talk | alias | 0 |
dewiki_p | de.wikipedia.org | 9 | MediaWiki Diskussion | primary | 1 |
dewiki_p | de.wikipedia.org | 8 | MediaWiki | canonical | 1 |
dewiki_p | de.wikipedia.org | 9 | MediaWiki talk | canonical | 0 |
dewiki_p | de.wikipedia.org | 10 | Vorlage | primary | 1 |
dewiki_p | de.wikipedia.org | 11 | Vorlage Diskussion | primary | 1 |
dewiki_p | de.wikipedia.org | 10 | Template | canonical | 0 |
dewiki_p | de.wikipedia.org | 11 | Template talk | canonical | 0 |
dewiki_p | de.wikipedia.org | 12 | Hilfe | primary | 1 |
dewiki_p | de.wikipedia.org | 13 | Hilfe Diskussion | primary | 1 |
dewiki_p | de.wikipedia.org | 12 | Help | canonical | 0 |
dewiki_p | de.wikipedia.org | 13 | Help talk | canonical | 0 |
dewiki_p | de.wikipedia.org | 12 | H | alias | 0 |
dewiki_p | de.wikipedia.org | 13 | HD | alias | 0 |
dewiki_p | de.wikipedia.org | 14 | Kategorie | primary | 1 |
dewiki_p | de.wikipedia.org | 15 | Kategorie Diskussion | primary | 1 |
dewiki_p | de.wikipedia.org | 14 | Category | canonical | 0 |
dewiki_p | de.wikipedia.org | 15 | Category talk | canonical | 0 |
dewiki_p | de.wikipedia.org | 100 | Portal | canonical | 1 |
dewiki_p | de.wikipedia.org | 101 | Portal Diskussion | canonical | 1 |
dewiki_p | de.wikipedia.org | 100 | P | alias | 0 |
dewiki_p | de.wikipedia.org | 101 | PD | alias | 0 |
dewiki_p | de.wikipedia.org | 828 | Modul | primary | 1 |
dewiki_p | de.wikipedia.org | 829 | Modul Diskussion | primary | 1 |
dewiki_p | de.wikipedia.org | 828 | Module | canonical | 0 |
dewiki_p | de.wikipedia.org | 829 | Module talk | canonical | 0 |
Like most things on meta_p, my own opinion is that this should go on production (and replicate to wikireplicas from there), maybe as part of handling better configuration management. It doesn't necessarily have to go into mysql, but it would be blocked by a better option than parsing configuration files.
In any case this is not a trivial thing to do and requires mediawiki experts input if done on production, or if there is already existing code, it would speed up its deployment (there is not non-public data preventing anyone from implementing this), current canonical data is on operations/mediawiki-config git repo.
It's kind of funny that MediaWiki has gone out of its way to abstract namespace names, using namespace IDs so that the namespaces can be localized or renamed somewhat easily and specifically not putting the namespace names into the database. And this effort and architecture gets immediately undermined by having people insist that the namespace names be shoved back in to a database.
Given the small amount of data, the typically easy workarounds (e.g., using {{subst:ns:4}} when posting to a wiki page), and the availability of this data via api.php, I'm not sure it makes sense to continue maintaining this database. There might be some value if we resume using clusters (e.g., 1, 2, 3), as finding which databases were in each cluster was never programmatically exposed elsewhere, as far as I know.
The namespacename database table in particular is basically a cache of https://en.wikipedia.org/w/api.php?action=query&meta=siteinfo&siprop=namespaces%7Cnamespacealiases, which most applications could simply look at themselves or, if needed for performance reasons, could create their own small cache of just the data they need instead of using a shared cache.
I didn't know that was already available on production as an api. If that is the case, I would either reject this or have it with the lowest priority because:
if needed for performance reasons, could create their own small cache of just the data they need instead of using a shared cache
If you like you can shutdown the project.
Can anyone see who queries the DB to inform the users and then turn it off after a reasonable amount of time?