daniel added a comment.
@brion: yeeeessss! I have been thinking about this a lot lately. I have done
some code experiments I would like to share and document. I'm pretty busy, but
I'll do my best to squeeze this in. Keep poking me :)
Veeery quick overview (mostly for my own good):
- PageStore -> create/update/delete pages. Uses RevisionStore. Does all the
secondary data update stuff.
- RevisionStore -> returns RevisionBuilder; Caller adds RevisionSlots and
meta-data to RevisionBuilder
- RevisionBuilder maintains transactional context. Needs to be aware of
base rev id for "late" conflict detection!
- late add support for RevisionUpdater, for updating persistent derived
revision data
- RevisionLookup returns RevisionRecord objects; LazyRevisionRecord for lazy
loading?
- RevisionRecord can enum RevisionSlots for primary content. LazyRevisionSlot
for lazy loading of content.
- RevisionSlots has Content and meta-data (size, hash, content model, change
date, etc); Do we need a RevisionSlotLookup/RevisionSlotStore?
- Primary content implements Content. Derived content implements Data(?!);
Content extends Data.
- RevisionStore/RevisionLookup is based on BlobStoreMultiplexer. Read/write
is routed based on a prefix in the blob id.
- BlobStoreMultiplexer manages multiple BlobStores
- RevisionStore turns blobs into ContentObjects and creates RevisionSlot and
RevisionRecord objects from them (or creates a LazyRevisionRecord that loads
data on demand)
Note: primary (user generated) content slots must be enumerable. Which
revision has which primary slots is recorded in the database. Secondary
(derived) content slots may also be persistent in the database, but can just as
well be purely virtual. As a point in case, we'd want a) a ParserCache
implementation based on persistent derived slots as well as b) a virtual slot
implementation based on the existing ParserCache.
TASK DETAIL
https://phabricator.wikimedia.org/T107595
EMAIL PREFERENCES
https://phabricator.wikimedia.org/settings/panel/emailpreferences/
To: daniel
Cc: RobLa-WMF, Yurik, ArielGlenn, APerson, TomT0m, Krenair, intracer, Tgr,
Tobi_WMDE_SW, Addshore, Lydia_Pintscher, cscott, PleaseStand, awight,
Ricordisamoa, GWicke, MarkTraceur, waldyrious, Legoktm, Aklapper,
Jdforrester-WMF, Ltrlg, brion, Spage, MZMcBride, daniel, D3r1ck01, Izno,
Wikidata-bugs, aude, jayvdb, fbstj, Mbch331, Jay8g, bd808
_______________________________________________
Wikidata-bugs mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/wikidata-bugs