Ar SQLAlchemy palaiko talpyklą?

Ar SQLAlchemy palaiko tam tikrą talpyklą, taigi, jei kartoju tą patį užklausą, ar jis grąžina atsakymą iš talpyklos, o ne į užklausą į duomenų bazę? Ar ši talpykla automatiškai pašalinama, kai atnaujinama duomenų bazė?

Arba tai yra geriausias būdas tai įgyvendinti „CherryPy + SQLAlchemy“ sąranka?

20
15 окт. 15 danielų 2008-10-15 17:26 '08 at 17:26 pm 2008-10-15 17:26
@ 5 atsakymai

Turime gana išsamų talpyklų sprendimą, pvz., Pavyzdį kartu su įdėtais kabliukais, 0,6. Tai yra užklausos poklasio receptas, informuojantis apie stiklinę, ir gebėjimas valdyti užklausų talpyklą aiškioms užklausoms, taip pat tingūs krautuvai per užklausos parametrus.

Dabar aš jį pradedu gaminti. Pats pavyzdys yra atstumu, o įvesties dokumentacija yra http://www.sqlalchemy.org/docs/orm/examples.html#beaker-caching .

UPDATE: „Beaker“ dabar pakeičiamas dogpile : http://docs.sqlalchemy.org/en/latest/orm/examples.html#module-examples.dogpile_caching

41
28 янв. atsakymas pateikiamas zzzeek 28 jan. 2010-01-28 06:43 '10, 6:43, 2010-01-28 06:43

Ne atsakymas į antrąjį klausimą, tačiau iš šios nuorodos komentarų matyti, kad SQLAlchemy nepalaiko spartinimo: http://spyced.blogspot.com/2007/01/why-sqlalchemy-impresses-me.html

Crow sakė ...

 Does SQLAlchemy do any kind of internal caching? For example, if you ask for the same data twice (or an obvious subset of the initially requested data) will the database be hit once or twice? I recently wrote a caching database abstraction layer for an application and (while fun) it was a fair bit of work to get it to a minimally functional state. If SQLAlchemy did that I would seriously consider jumping on the bandwagon. I've found things in the docs that imply something like this might be going on, but nothing explicit. 4:36 PM 

Jonathan Ellis sakė ...

 No; the author of SA [rightly, IMO] considers caching a separate concern. What you saw in the docs is probably the SA identity map, which makes it so if you load an instance in two different places, they will refer to the same object. But the database will still be queried twice, so it is not a cache in the sense you mean. 
14
24 окт. atsakymas pateiktas spalio 24 d 2008-10-24 06:16 '08, 6:16, 2008-10-24 06:16

Arba naudokite programos lygio talpyklą per silpnąsias nuorodas (heikref.WeakValueDictionary), žr. Pavyzdį čia: http://www.sqlalchemy.org/trac/wiki/UsageRecipes/UniqueObject p>

4
21 нояб. Atsakymas suteiktas ychaouche 21 nov. 2009-11-21 22:37 '09, 10:37 pm 2009-11-21 22:37

SQLAlchemy palaiko dviejų tipų talpyklas:

  • Rezultatų rinkinio talpinimas, kad to paties užklausos pakartotinis vykdymas patektų į talpyklą vietoj duomenų bazės. Jis naudoja dogpile , kuris palaiko daug skirtingų backends, įskaitant memcached , redis ir pagrindinius plokščius failus.

    Dokumentai yra čia: http://docs.sqlalchemy.org/en/latest/orm/examples.html#module-examples.dogpile_caching

  • query objekto talpinimas taip, kad „Python“ vertėjas kiekvieną kartą nereikėtų rankiniu būdu surinkti užklausos eilutės. Šios užklausos vadinamos baked queries , o talpykla vadinama baked queries . Iš esmės ji saugo visus sqlalchemy veiksmus, prieš ištrindama duomenų bazę - ji nesumažina duomenų bazės skambučių. Pradiniai testai rodo, kad query generavimo metu pagreitėja iki 40%, o kompromisas šiek tiek padidėja.

    Dokumentai yra čia: http://docs.sqlalchemy.org/en/latest/orm/extensions/baked.html

3
02 нояб. atsakymą pateikė Jeff Widman 02 lapkričio. 2015-11-02 21:35 '15 - 21:35 2015-11-02 21:35

Ne, bet galite išsaugoti atmintinę su atmintine.

-3
03 нояб. atsakymą pateikė Lucky 03 lapkričio. 2008-11-03 11:50 '08 at 11:50 2008-11-03 11:50

Kiti klausimai apie žymes arba Užduoti klausimą