2009-10-24 3 views
12

그래서 다양한 키 : 값 (값은 엄격하게 단일 값 또는 가능한 객체)이 파이썬에서 사용하기 위해 저장되어 있으며 몇 가지 유망한 것을 발견했습니다. 나는 아직 평가 단계에 있기 때문에 구체적인 요구 사항이 없습니다. 나는 무엇이 좋고, 무엇이 나쁜지, 이런 것들이 잘 처리되는 코너 케이스인지 등을 찾고 있습니다. 여러분 중 일부는 이미 그들을 시도해 보았습니다. 그래서 여러분의 발견/문제를 듣고 싶습니다. /기타. 다양한 키 : Python으로 값을 저장하십시오. http://www.danga.com/memcached/ 파이썬 클라이언트 -다음 키 : Python에서 사용할 값 저장소는 무엇입니까?

memcached를 : http://pypi.python.org/pypi/python-memcached/1.40http://www.tummy.com/Community/software/python-memcached/

CouchDB를 - http://couchdb.apache.org/ 파이썬 클라이언트 : http://code.google.com/p/couchdb-python/

도쿄 폭군 - http://1978th.net/tokyotyrant/ 파이썬 클라이언트 : http://code.google.com/p/pytyrant/

Lightcloud - http://opensource.plurk.com/LightCloud/ 기반 난에서 주로 찾고 있어요 Tokyo Tyrant, Python으로 작성

R EDIS - http://redis.io/ 파이썬 클라이언트 : http://pypi.python.org/pypi/txredis/0.1.1

MemcacheDB - http://memcachedb.org/

은 그래서 (단순히 키를 삽입하고 그들에게 읽기) 숫자 키 및 "텍스트의 짧은 문자열"의 값을 생성하는 간단한 수를 사용하여 벤치마킹을 시작했다 :

memcached : python-2.4.3-24.el5_3.6, libevent 1.4.12-stable, memcached 1.4.2 기본 설정, 1 기가 메모리, 초당 14000 개의 삽입, 16,000 초의 읽기. 진정한 최적화는 없습니다.

memcachedb는 초당 17,000 - 23,000 개의 인서트, 초당 44,000 - 64,000 회의 판독 량을 제공합니다.

나는 다른 사람들이 어떻게 속도를 현명하게하는지 궁금해.

+0

키 값이 저장 되나요? 데이터베이스 란 뜻인가요? – Soviut

+2

귀하의 요구 사항에 대한 자세한 정보? (데이터베이스 크기, 항목 수 등) – peufeu

+1

글쎄, CouchDB는 키가 아닙니다. 값 저장소 그 자체는 문서 데이터베이스입니다. 저장된 데이터는 임의의 데이터가 아니라 json 문서입니다. 그래서 질문이 왜 더 구체적으로 찾고 있습니까? Schemaless 데이타베이스, 아니면 정말로 열쇠일까요? 당신이 필요로하는 가치 저장소입니까? Schemaless 데이터베이스가 필요하다면 ZODB를 그 목록에 포함시켜야합니다. –

답변

6

대부분 사용자의 필요에 따라 다릅니다.

평가 방법을 이해하려면 Caveats of Evaluating Databases을 읽으십시오.

+0

지금까지 본 최고의 페이지 중 하나입니다. – Kurt

-1

아마존의 SimpleDB는 어떻습니까?

파이썬이 Amazon 웹 서비스를 인터페이스 할 수 있도록 오픈 소스 파이썬 라이브러리 boto가 있습니다.

+3

효율성 (대기 시간이 거의, 원격 = 느림) 및 비용, 나는 차라리 로컬로 실행하고 싶습니다. – Kurt

3

선반

ZODB (/ 표준 파이썬 모듈 파일에 dictonaris를 저장) - persisatnce 객체 데이터베이스 (파이썬 데이터베이스 오브젝트, 아니 SQL)

더 지속성 도구 : http://wiki.python.org/moin/PersistenceTools

+0

니스, 나는 키워드로 "끈기"를 사용하는 생각하지 않았을 것이다. – Kurt

+0

나는 또한이 aproach 더 좋아한다. 이 방법으로 파이썬 언어의 네이티브 데이터베이스를 사용할 수 있습니다. 프로그램에서 필요한 것은 다음과 같습니다 (의사 코드 경고) a = load_database (database) newtable = {} newtable [ 'key'] = '값'[ 'new_table'] = newtable a.save –

3

내 5 센트 :

테라 바이트 크기의 데이터 또는 대량 쓰기 성능을 갖춘 분산 시스템이 필요합니까?

음, big/bigTable/Dynamo 유형의 큰 키 중 하나가 필요합니다. Cassandra, Tokyo Tyrant, Redis 등에 의해 그렇게 될 것입니다. 클라이언트 라이브러리가 샤딩을 지원하는지 확인해야 쓰기 위해 여러 데이터베이스를 가질 수 있습니다. 여기에 사용할 데이터는 사용자가 필요하다고 생각하는 데이터로 테스트 한 후에 만 ​​결정할 수 있습니다.

파이썬 이외의 다른 시스템/언어에서 데이터에 액세스 할 수 있어야합니까?

데이터베이스는 데이터에 전혀 구조가 없으므로 다른 언어/클라이언트에서 액세스 할 수있는 경우 데이터베이스에 저장하는 대상에 따라 다릅니다. 하지만이 CouchDB가 필요한 경우 JSON 문서의 데이터를 저장하므로 상호 운용성이 보장됩니다. CouchDB가 실제로 방대한 양의 데이터와 샤딩에 얼마나 좋은지는 불분명합니다.

파이썬이나 분산 형 멀티 서버 스토리지가 아닌 다른 언어와의 상호 운용성이 필요합니까?

ZODB를 사용하십시오.

+2

ZODB 사용 . 규모를 조정해야하는 경우 서버가 있습니다 (ZEO 참조). –