2012-04-08 2 views
2

고성능이 필요한 데이터를 직렬화해야합니다. 분리 된 스레드는 매 초마다 액세스하며 메모리에 데이터를로드해야합니다. 사용자 세션 (id, sessid, 로그인 날짜)에 대한 약 1000 - 10000 개의 사전 형 항목이 있습니다. 일부 데이터는 로그인 시간이 오래 걸리기 때문에 자주 업데이트됩니다.Python - 고성능으로 데이터를 직렬화하는 가장 좋은 방법은 무엇입니까?

이 데이터는 Python 서버와 Django 응용 프로그램간에 공유됩니다. 나는 pickle이나 빠른 버전의 cPickle을 사용한다고 생각합니다. 나는 또한 marshal을 발견했다.

가장 좋은 방법은 무엇입니까? cPickle은 충분히 효율적입니까? 아니면 총사령관일까요?

편집 : 매우 중요한 것은 액세스 시간입니다. 그것은 실시간 websocket 서버가 될 것이므로 매우 낮은 지연이 필요합니다. cPickle 데이터에 1 초에 한 번 액세스하거나 Redis와 같은 데이터베이스에 연결하는 것이 더 빠릅니까?

답변

4

더 나은 접근 방법은 필요한 메모리가 부족한 경우 memcached를 사용하거나 redis와 같이 기능 세트가 조금 더 필요한 경우를 사용하는 것입니다.

+0

c 빠름은 속도를 고려하여 매우 느리게 나타납니다. –

3

메모리의 실제 데이터베이스를 사용하십시오. pickle, cPickle 또는 marshal 등을 사용하지 마십시오.

1

redis은 모든 데이터를 단순한 키와 간단한 값으로 나타내지 않으면 python object이라는 일련의 값을 직렬화해야하므로 redis은이 문제를 해결하지 못합니다. redis은 비 직렬화 솔루션이 아니며 문자열 용 데이터 저장소 일뿐입니다. 어쨌든 redis은 속도가 느린 옵션 중 하나입니다. https://charlesleifer.com/blog/completely-un-scientific-benchmarks-of-some-embedded-databases-with-python/

관련 문제