나는 대화식으로 더 많거나 적게 수백만 개의 레코드를 대량 태그하는 기능이 포함 된 응용 프로그램을 작성합니다. 사용자 상호 작용은 사용자가 개별 전자 메일에 태그를 추가하거나 많은 양의 전자 메일을 대량 태그 할 수있는 Gmail과 매우 유사합니다. 또한 이러한 태그 멤버쉽에 대한 빠른 읽기 액세스와 읽기 패턴이 어느 정도 임의적이어야합니다.낮은 대기 시간 읽기 및 쓰기에 대한 지속성 전략
지금 우리는 Mysql을 사용하고 모든 태그 - 문서 쌍에 대해 하나의 행을 삽입하고 있습니다. 수백만 개의 행을 MySQL에 작성하는 것은 대량 삽입과 무거운 최적화를 사용하는 경우에도 (높은 I/O) 시간이 걸립니다. 배치 프로세스가 아닌 대화식 프로세스가 필요합니다.
우리가 저장하고 읽는 데이터의 경우 데이터의 일관성 및 가용성은 성능 및 확장 성만큼 중요하지 않습니다. 따라서 쓰기가 발생하는 동안 시스템 오류가 발생할 경우 데이터 손실이 발생할 수 있습니다. 그러나 어떤 시점에서는 데이터를 확실히 2 차 저장소에 보관해야합니다.
그래서, 요약하기, 여기에 요구 사항 : 잠재적으로 수십 기록의 수백만의
- 낮은 지연 시간 벌크 쓰기
- 데이터
- 낮은 대기 시간이 랜덤 읽기 어떤 방법으로 지속되어야한다
- 내구성 쓰기 필요하지
- 최종 일관성 괜찮
- 쓰기 :
는 여기에 내가 검토 한 결과 몇 가지 솔루션입니다. 그들은 내가 피하고 싶을만한 앱에 일정한 복잡성을 더하는 것처럼 보이기 때문에 조금 놀랐다. MongoDB를, HBase를, 도쿄 폭군 같은
- 확장 성이 뛰어난 키 - 값 저장,