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 Wikidata-bugs@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/wikidata-bugs