Hi!
I have published a draft of how changes on the wikidata repository are going to percolate to the client wikis:
https://meta.wikimedia.org/wiki/Wikidata/Notes/Percolation
Any feedback would be appreciated!
Of course, we are not starting this from scratch. We are currently implementing a stripped down, naive version of the draft. Basically, it works like this:
* Each change on the repository is recorded in the changes table. * On each client wiki, a poll script periodically checks the changes table. * The polling script maintains a local copy of the latest version of each data entity on each cluster used by client wikis. * If any page on the wiki is affected by the change, an entry representing that change is injected into the client's recentchanges table. * Wiki pages that are affected by a change are invalidated.
I think this will work for now, that is, for a small number of client wikis. The new draft is an attempt to make this architecture scale up to several hundred client wikis on multiple database clusters.
-- daniel