Hey Ori!
Am 02.10.2014 06:45, schrieb Ori Livneh:
I'm embarrassed to say that I don't know nearly enough about Wikidata to be able to make a recommendation. Where would you recommend I look if I wanted to understand the caching architecture?
And I'm embarressed to say that we have very little high level documentation. There is no document on the overall caching architecture.
The use case in question is accessing data Items (and other Entities, like Properties) from client wikis like Wikipedia. Entities are accessed through an EntityRevisionLookup service; CachingEntityRevisionLookup is an implementation of EntityRevisionLookup that takes an "actual" EntityRevisionLookup (e.g. a WikiPageEntityRevisionLookup) and a BagOStuff, and implements a caching layer.
We use two CachingEntityRevisionLookup nested into each other: the outer-most uses a HashBagOStuff to implement in-process caching, the second level uses memcached. The objects that are cached there are instances of EntityRevision, which is a thin wrapper around an Entity (usually, an Item) plus a revision ID.
Please let me know if you have further questions!
-- daniel
PS: what do you think, where should this info go? Wikibase/docs/caching.md or some such?