And unless I'm explictly creating a query cache somewhere in my application,
I won't have one?

> Am 08.03.2017 um 22:05 schrieb John Huss <[email protected]>:
> 
> Unless you are using a query cache then running an ObjectSelect will always
> give you fresh data from the DB.
> On Wed, Mar 8, 2017 at 3:01 PM Musall, Maik <[email protected]> wrote:
> 
>> Can someone confirm this? Will I always get fresh data from DB with an
>> explicit query, or am I at risk being returned stale data from a
>> context-local cache that doesn't even see changes that haven been recorded
>> in the shared snapshot cache in the meantime, let alone in the database?
>> 
>> I'm still a bit puzzled and out of documentation about the question of how
>> to control data freshness. Cayenne seems to be a bit different than EOF in
>> this regard, with it's multi-level caching.
>> 
>> Maik
>> 
>> 
>>> Am 24.02.2017 um 23:24 schrieb Markus Reich <[email protected]
>>> :
>>> 
>>> I think if you start a "standard" query it goes always against the DB,
>> this
>>> would be the query cache but this is not implicit done, you have to use
>>> groups for that.
>>> Object cache as I understand works behind the scenes, when you access
>>> properties of you persistent entity with getters, then values where read
>>> through the GraphManager from Cache.
>>> Only OID Queries and RelationalQueries can get their data from cache.
>>> Standard SelectQuery always runs a query on DB. But maybe I'm wrong :-/
>>> 
>>> Musall, Maik <[email protected]> schrieb am Fr., 24. Feb. 2017 um
>>> 23:14 Uhr:
>>> 
>>>> Hi Lon,
>>>> 
>>>> so with a context-local cache, you would still execute a regular query,
>>>> but that query would not actually hit the database but the cache would
>>>> return the result instead? Is it like a result set per query SQL string
>>>> which is cached? I don't really understand how those local caches are
>> keyed.
>>>> 
>>>> If there is any Cayenne documentation explaining this which I missed,
>> I'd
>>>> be happt to get a pointer to that.
>>>> 
>>>> Maik
>>>> 
>>>>> Am 24.02.2017 um 18:25 schrieb Lon Varscsak <[email protected]>:
>>>>> 
>>>>> I built something similar in EOF to local cache, so I think I can
>> answer
>>>> at
>>>>> least part of the question.
>>>>> 
>>>>> It’s not uncommon for me to have a complex set of queries to do
>> something
>>>>> like compute pricing on an order.  Rather than having to maintain many
>>>> tiny
>>>>> caches or ivars with query results, all of my code executes queries to
>>>> get
>>>>> the data set it needs whenever the pricing calculation is called.  It
>>>> makes
>>>>> the code simpler, but gives you the performance of having stored the
>>>>> results yourself in an ivar (or dictionary).
>>>>> 
>>>>> Add in EHCache and now you can control how long those objects live
>>>> (rather
>>>>> than the life of an ivar). If they get removed from cache due to cache
>>>>> control settings, the next time through the code, it will refetch them
>>>> but
>>>>> I don’t have to be aware of this from a code perspective.
>>>>> 
>>>>> Where I’m still hung up, is that it’s common for me to have many parts
>> of
>>>>> my code that are not aware of each other that display/operate on the
>> same
>>>>> data, and I’m unsure how to update the cache (since there are multiple
>>>>> local caches) in between those two components after commit (since
>> change
>>>>> propagation is turned off by default and even when on is in a separate
>>>>> thread so I can’t assume the objects will be refreshed when I need).
>>>>> 
>>>>> -Lon
>>>>> 
>>>>> On Fri, Feb 24, 2017 at 3:00 AM, Musall, Maik <[email protected]>
>>>> wrote:
>>>>> 
>>>>>> Hi all,
>>>>>> 
>>>>>> I'd like to extend this question a bit. I just read the entire
>>>> performance
>>>>>> tuning chapter again [1], and I'm a bit puzzled especially about the
>>>>>> ObjectContext's local caches, which Andrus also recommended to use in
>>>> the
>>>>>> "A way to refreshObject()" thread:
>>>>>> 
>>>>>>> So instead of micro-optimizations with shared snapshot cache, you
>>>> should
>>>>>> use queries with cache groups and query cache. They get refetched
>> when a
>>>>>> cache group is flushed in response to an object commit. So technically
>>>> you
>>>>>> are not reusing the snapshot cache, but it really doesn't matter. The
>>>>>> benefit you get in code simplicity, consistency, and often
>> performance,
>>>>>> always outweighs that. Besides this approach is cluster-friendly.
>>>>>> 
>>>>>> Coming from EOF I grew the habit of frequently creating short-lived
>>>>>> ObjectContexts, so basically every page load uses it's own new
>>>>>> ObjectContext to get fresh data from the shared global cache, because
>>>> other
>>>>>> users may have altered data between page loads. While working on a
>>>> page, I
>>>>>> have references to the objects that I need there anyway, so I don't
>>>>>> understand at all what that context-local cache mechanism should do
>> for
>>>> me,
>>>>>> unless that "create new contexts all the time" strategy is just plain
>>>> wrong
>>>>>> for Cayenne-based applications?
>>>>>> 
>>>>>> And even if I would use a longer-lived ObjectContext for something,
>>>> where
>>>>>> would that local cache get in effect? Either I have references to
>>>> objects
>>>>>> anyway, or I would need to refetch them, which would go through to the
>>>>>> database, right? In what case would I get a benefit from a local
>> cache?
>>>> I
>>>>>> didn't find answers to this in the Cayenne Guide.
>>>>>> 
>>>>>> Thanks
>>>>>> Maik
>>>>>> 
>>>>>> [1] https://cayenne.apache.org/docs/4.0/cayenne-guide/
>>>>>> performance-tuning.html <https://cayenne.apache.org/
>>>>>> docs/4.0/cayenne-guide/performance-tuning.html>
>>>>>> 
>>>>>> 
>>>>>>> Am 23.02.2017 um 09:43 schrieb Markus Reich <
>>>> [email protected]
>>>>>>> :
>>>>>>> 
>>>>>>> Hi,
>>>>>>> 
>>>>>>> I'm looking for a more detailed explaination of the caching
>> mechanism,
>>>> as
>>>>>>> we are running a quite important and big web application with
>> cayenne,
>>>> I
>>>>>>> want to fine tune, because we run in some performance issues.
>>>>>>> 
>>>>>>> I only found this
>>>>>>> https://cayenne.apache.org/docs/3.0/individual-object-caching.html
>>>>>>> 
>>>>>>> In 4.0 docu I can't find anything
>>>>>>> 
>>>>>>> br
>>>>>>> Meex
>>>>>> 
>>>>>> 
>>>> 
>>>> 
>> 
>> 

Reply via email to