2010-03-31 6 views
2

약 300 만 개의 항목이있는 AWS SimpleDB 도메인이 있다고 가정 해 봅시다. 각 항목의 속성은 임의의 정수 값을 갖는 "foo"입니다 (실제로 SimpleDB에 저장됩니다. 문자열,하지만 지금부터는 변환을 무시하자). 최대 값에 도달 할 때까지 각 항목의 foo 값을 60 초마다 증가시킵니다 (최대 값은 각 항목에 동일하지 않으며 항목의 최대 값은 항목의 다른 속성 값으로 저장 됨). 그런 다음 foo를 0으로 재설정합니다. : 읽기, 증가, 평가, 저장.SimpleDB의 모든 항목 반복

많은 수의 항목과 60 초 제한 시간이 주어지면 SimpleDB에서이 접근 방식을 사용할 수 있습니까? 누구나이 작업을 할 수있는 방법이 있습니까?

답변

1

할 수는 있지만 실행 가능하지 않습니다. 단일 도메인에 대해서만 초당 100-300 PUT을 얻을 수 있습니다. 초당 1000 개 이상의 항목을 읽을 수 있으므로 쓰기가 병목 현상이됩니다.

보수적 인 측면에서 보면 도메인 당 초당 100 회의 저장 작업을 수행 할 수 있습니다. 매분 3 백만 개를 저장할 충분한 처리량을 열려면 500 개의 도메인이 필요합니다. 기본적으로 100 개 밖에 없으므로 더 많은 것을 요구해야합니다.

또한 비쌉니다. 적은 수의 속성을 가진 글은 백만 달러 당 3 달러이며, 읽기는 백만 달러 당 약 $ 1.30입니다. 약 $ 13/분입니다.

내가 제안 할 수있는 유일한 방법은 300 만 개 항목을 더 적은 수의 항목에 결합하는 방법이 있다면 가능할 것입니다. 각 실제 항목에 50 개의 "항목"을 넣는 방법이 있다면 약 15.50 달러/시간으로 10 개의 도메인을 사용하여 수행 할 수 있습니다. 그러나 당신이 $ 6.80/시간 동안 10 대의 초대형 High-CPU EC2 서버 인스턴스의 클러스터를 얻을 수 있기 때문에 여전히 실현 가능성은 없습니다.

+0

와우, 나도 비용 문제를 고려하지 않았다! 그걸 가져 주셔서 고맙습니다. 제 고객은 아마 저를 끌어 당겼을 것입니다.) –

0

에 값을 생성하면 신뢰할 수있는 시계의 시간이입니까? 일부 이름을 만들겠습니다 :

  • Touch_time - 항목이 0으로 초기화되었을 때의 기준 값 (초).
  • Max_age - 시간이 랩 어라운드하는 시간 (분)입니다.
  • Current_time - 현재 에포크 값입니다.

그래서 언제든지, 당신은

하여이 속성에 저장하기 위해 제안 된 값을 얻을 수 있습니다 (CURRENT_TIME - touch_time) % (MAX_AGE * 60) 비교적 자주 MAX_AGE 변화를 가정

, 모두가 touch_time 및 current_time을 1 분 이내에 신뢰하며 이것이 NTP의 목적입니다.

관련 문제