Index, Document를 분리하는 방법을 이용한 대용량 데이터 저장소 설계
- 데이터의 용량이 많아 지게되면 관계형 데이터베이스로는 한계가 있다.
- scale out(sharding) 관계형 데이터베이스로 구현할수 있지만 Application Logic이 복잡해진다
- index table or look-up table와 document table를 따로 구별하기 설계를 할수 있다.
- 각각의 저장소에는 cache를 두는 방식으로 응답성을 좋게 할수 있다.
- 각각의 cache는 데이터의 성격에따라 다르게 설정을 해야된다.
- 실시간성 데이터, 중요성이 높은 데이터 (ex, 재고 데이터)는 TTL를 적게 두는 방식으로 취한다.
- 잘 바뀌지 않는 데이터, 느리게 바뀌어도 문제가 없는 데이터 (ex, 상품의 타이틀)을 1분~10분 TTL를 설정을 하는 방식으로 할수 있다.
- 읽기 요청이 들어올 경우 cache의 데이터가 ttl 유효기간이 지났을 경우 처리방법이 2가지가 있다
- db에 read 요청을 보낸다음, 데이터가 읽은 동시에 cache의 데이터를 바꿔치기 하고 읽기에 응답한다.
- cache의 데이터를 먼저 보낸다음 백그라운드에서 read 요청을 보내 cache 데이터를 바꿔치기한다.
- 데이터의 중복은 허용한다. (비정규화)
'아키텍처' 카테고리의 다른 글
CQRS (Command Query Read Segregation) (0) | 2018.08.20 |
---|---|
Log 성격을 가진 데이터의 수집 / 분석 아키텍처 (0) | 2018.07.27 |
람다 아키텍처 (0) | 2018.07.22 |