elasticache 와 memorydb의 가장 두드러지는 차이는 데이터 쓰기시 memorydb 는 transaction log 기록 후 응답을 전송하고, elasticache for redis는 그렇지 않다는것이다. 이 차이로 인해서 가격, 쓰기성능, 장애발생시 데이터유실가능성(내구성) 면에서 차이가 발생하게 된다.
엘라스티캐시는 특수한 경우에 데이터가 유실될수있고 데이터의 완전한 내구성을 보장하지 않는다. 이 이유는 위에서 언급한 레디스 자체가 노드간 데이터복제를 통해 싱크 할때 비동기방식만 제공하기때문이다. 프라이머리가 다운될때 아직 리플리카로 전달되지않은 데이터가 있는 경우엔 그대로 데이터유실이 된다.
메모리디비에서는 별도의 트랜잭션로그를 기록하는 저널로그공간을 별도로 관리한다. 여기에 기록이되면 클라이언트로 성공했다고 ack보내주게 된다. 어떤상황에서도 복제본에대한 쓰기가 보장되니 프라이머리가 다운되어도 유실되지 않는다. 그러나 이런 점 때문에 엘라스틱캐시에 비해서는 쓰기성능이 떨어지게 됨. 초당 1만건 set에서 엘라스티캐시는 0.15초, 메모리디비는 0.91초라고한다.
아래는 여러 측면에서의 비교.
ElastiCache for Redis | MemoryDB for Redis | |
내구성 | 세컨더리에 비동기 복제. 장애발생시 데이터유실 가능 | transaction log 기록 후 응답을 보내므로, 장애발생하더라도 데이터 완전복구 가능. |
성능 | 상대적으로 쓰기성능 빠름(micro second) read/write 모두 micro second |
상대적으로 쓰기성능 느림(ms) read는 micro second |
cluster mode | enable/disable 가능 | enable only |
복원 | RDB 스냅샷 복원 | RDB 스냅샷 복원 특정시점복원 불가 |
복제 | async 복제(primary node 장애시 데이터유실 가능) | transaction log 사용한 async 복제(primary node 장애발생해도 데이터 완전복원 가능) |
가격 | 상대적으로 저렴 | 상대적으로 비쌈 |
참고
https://hyunki1019.tistory.com/169
https://www.youtube.com/watch?v=iBHXaxs2gdw&t=1453s
https://www.youtube.com/watch?v=Jbq_XZMZEKY
'tech > database' 카테고리의 다른 글
[MySQL] 트랜잭션 및 잠금 (1) | 2024.09.16 |
---|---|
[MySQL] InnoDB 스토리지 엔진 아키텍처 (0) | 2024.09.15 |
AWS Elasticache(redis) 내부동작 정리 (0) | 2024.03.31 |
apache lucene 내부구조 (0) | 2023.10.22 |
dynamodb 내부구조 (0) | 2023.10.08 |