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

Reply via email to