2010-03-26 4 views

답변

-4

Memcache 및 관계형 데이터베이스는 두 가지 별도의 기능을 제공하며, 동일한 방식으로 작동하지 않습니다. Memcache는 간단한 조회 버킷으로, 많은 요청 사이에서 공유되는 부분 웹 페이지와 같은 모양을 덤프하는 데 유용하며 생성에 오래 걸릴 수 있습니다 (데이터베이스 스키마를 충분히 최적화/비정규화할 수 없을 때 생기게 하다).

전체 백엔드 데이터 저장소와 같이 memcache를 사용하는 것은 좋지 않습니다. memcache 또는 데이터베이스에 연결된 SQL 인터페이스를 제공하는 것은 유용하지 않습니다. 두 가지 모두에서 최악의 상황이 발생할 수 있습니다. memcache의 단순성/속도 또는 관계형 데이터베이스의 ACID- 준수.

데이터베이스 서버에 이미 캐시가 있습니다. 캐시를 더 많이 사용하려면 어리석은 하드웨어를 사용하지 않고 가능한 한 캐시의 크기를 높게 설정하십시오. 프론트 엔드를 더 빠르게 만드려면 memcache를 사용하십시오. 그러나 데이터 일관성에 대한 타협이 필요하기 때문에 데이터베이스에서 원하는 성능을 실제로 얻을 수없는 경우에만 사용해야합니다. 정말로 필요할 때까지 memcache에 의지하지 마십시오.

+4

더 이상 동의 할 수 없습니다. 네트워크를 통해 행을로드하고 내부 구조로 변환하여 페이지를 렌더링합니다. 더 빠른 데이터베이스로는 개선 할 수없는 모든 고비용 프로세스. 모든 종류의 원격 시스템을 사용하여 데이터를로드하는 대부분의 중요하지 않은 웹 응용 프로그램은 기본적으로 Memcached와 같은 캐시 사용을 가정해야합니다. 결과 집합 캐싱 만이 캐싱의 한 측면 일뿐입니다. – zzzeek

+3

결과 집합 캐싱조차도 매우 적합합니다. 필자는 필연적으로 느린 쿼리 (예 : 큰 테이블 전체에서 일부 값의 표준 편차 집계)가 필요할 수 있으며 하루에 몇 번만 필요합니다. 이 쿼리에 대해서만 데이터베이스를 대규모 하드웨어로 확장하거나 캐시에 무료로 추가 할 수 있습니다. – zzzeek

+1

@zzzeek 당신이 자리하고 있습니다. "좋은 생각이 아니야 ..."로 시작하는 문장은 "유한하고 제한적인 경험에서 보면 좋은 생각이 아닙니다 ..."라고 쓰여질 것입니다. –

9

캐싱을 SQLAlchemy 응용 프로그램에 통합하는 방법을 보려면 SQLAlchemy 소스의 beaker caching example을 참조하십시오. 비커는 Memcached를 캐시 저장소로 사용할 수 있습니다.

+0

데드 링크. 어쨌든, 비커가 dogpile.cache로 교체 된 것 같습니다 : http://techspot.zzzeek.org/2012/04/19/using-beaker-for-caching-why-you-ll-want-to-switch- to-dogpile.cache / –

관련 문제