Hi Russ,

Makes sense. Thanks.

Collin

On Sunday, December 21, 2014 5:41:34 PM UTC-6, Russell Keith-Magee wrote:
>
>
> On Sun, Dec 21, 2014 at 12:55 PM, Collin Anderson <[email protected] 
> <javascript:>> wrote:
>>
>> Hi Erik,
>>
>> If you want a nicer interface, I just ran manage.py inspecdb on one of my 
>> databases and got this for the cache table. Not sure why django still does 
>> it by hand.
>>
>
> Gather `round, children, and let Grandpa fill you in on the details... :-)
>
> Although it isn't huge, Django's ORM does have an overhead. If you're 
> looking for the general capability to query rows on a database, this 
> overhead is a reasonable price to pay - you have a little overhead, but 
> it's a lot easier to express complex queries. However, in the case of a 
> cache table, you need to issue exactly 2 queries:
>
> 1) Get me the object with key X.
>
> 2) Set the value of key X.
>
> These two queries are trivial to write -- so trivial in fact, that they 
> don't even need to rewritten as they move across database backends. They're 
> as "vanilla" as a query can get in SQL. 
>
> So - this becomes a case study in when *not* to use the ORM. We know the 2 
> queries that need to be issued. That SQL isn't hard to write or maintain. 
> And using the ORM would impose a non-trivial runtime overhead - and by 
> definition, a cache backend is supposed to be as efficient as possible. Raw 
> SQL is the "right" answer here.
>
> (well.... not using a database backed cache backend is the *really* right 
> answer, but I'll let that slide for the moment...)
>
> If you *do* want to do complex queries on the database cache table, the 
> approach suggested by Collin is as good an approach as any. A managed table 
> will give you ORM operations over an arbitrary table - include Django's own 
> internal tables.
>
> That said, I'll also concur that the database cache backend is the wrong 
> answer here. If you're writing a cron script, the approach I've always used 
> is PIDfile based lock:
>
>
> http://unix.stackexchange.com/questions/12815/what-are-pid-and-lock-files-for
>
> Yours,
> Russ Magee %-)
>

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/django-users.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/d3674731-8421-4ec8-a208-8290e7486330%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to