2012-03-30 4 views
2

저는 아마존에서 dynamodb 예제를 시도했습니다.Amazon DynamoDB 클라이언트가 너무 느립니다.

DB 자체의 장점을 알고 있지만 데이터를 쓰고 읽는 데 http 연결을 사용함을 발견했습니다. 1000 개의 쓰기/초가 있다면 1000 개의 연결을 쓸 수 있어야합니까? 그렇다면 클라이언트 서버에 너무 무겁지 않습니까?

정상적인 db로 TCP를 사용하여 연결할 수있는 방법이 있습니까? 감사.

답변

0

각 쿼리에 대해 말마다 연결을 열지 않고 요청하는 중입니다. 아마존 내부에서 매우 빠른 속도의 네트워크를 사용하기 때문에 대기 시간은 http에서도 매우 낮습니다. 물론 TCP는 "빠름"일 수도 있지만 실제로는 비 실제 환경에서 연결 속도를 비교하는 것입니다. HTTP를 사용하면 얻을 수있는 실질적인 이점은 매우 쉽게 확장 할 수 있다는 것입니다. 그들이 한 일은 각 요청마다 수십 ms의 대기 시간을 추가했으며 결과적으로 요청이 10ms 미만임을 보장했습니다. 그들의 문서에서 보증하는 응답 시간은 한자리 숫자 (ms)입니다.

프로토콜을 비교하는 경우 HTTP가 TCP보다 느린 지 확인하십시오. 그러나 실제로 제품을 살펴보면 속도가 느린 것과는 거리가 멀다는 것을 알 수 있습니다. 대용량 데이터 세트를 염두에두고 시작할 때 설계 할 수있는 가장 빠른 데이터베이스 중 하나 일 것입니다.

+0

의미 AWS SDK는 연결 풀 자체를 유지 관리합니까? 그래서 정적 클라이언트 객체를 만들거나 각 요청에 대해 새 객체를 더 잘 초기화해야합니까? – PeiSong

+0

http에 대한 실제 연결 풀이 없습니다. HTTP는 지속적인 연결이라고 부르는 것을 가지고 있으며 http://en.wikipedia.org/wiki/HTTP_persistent_connection을 유지합니다. 그러나 애플리케이션에서 최대한의 성능을 얻으려면 한 번에 여러 개의 연결을 열어야합니다. 각 스레드에 대해 하나의 SimpleDB 인스턴스를 만들 수 있습니다. – bwight

1

처리량을 1000 개의 쓰기/초로 설정하면 데이터를 1 초 내에 1000 회 성공적으로 쓸 수 있도록 데이터가 분산됩니다. dynamodb는 확장 가능한 환경에서 정말 빠르고 안정적입니다.

0

초당 1000 개의 쓰기를 원할 경우 각 데이터 항목 크기가 1KB라고 가정하고 표의 쓰기 처리량을 1000으로 구성해야합니다. 1KB보다 작거나 큰 경우 1KB로 나누어 반올림 숫자를 사용합니다. 1.6kb/1kb = 1.6 ~ 2 ie 쓰기 처리량은 초 당 1000 개의 쓰기에 대해 2000이어야합니다 .HTTP 연결 후에도 삽입 서비스가 동일한 EC2 영역에서도 실행되고 있다는 사실을 고려할 때 매우 빨라졌습니다.

관련 문제