Mysql과 postgresql중 Mysql을 선택한 이유
https://aws.amazon.com/ko/compare/the-difference-between-mysql-vs-postgresql/
속성/솔루션 | Redis | Memcached |
---|---|---|
데이터 타입 | 키-값, 리스트, 셋, 해시, 정렬된 셋 | 키-값 (주로 문자열) |
확장성 | 클러스터링을 통한 수평 확장 가능 | 수평 확장 가능 (멀티 인스턴스) |
지속성 | RDB, AOF를 통한 지속성 제공 | 제공하지 않음 |
속성/솔루션 | Hazelcast | Apache Ignite |
---|---|---|
데이터 타입 | 맵, 큐, 멀티맵, 리스트, 셋 등 | 키-값, SQL 쿼리 지원 |
확장성 | 클러스터링을 통한 수평 확장 가능 | 클러스터링을 통한 수평 확장 가능 |
지속성 | 디스크 지속성 옵션 제공 | 디스크 지속성, 외부 DB 연동 가능 |
속성/솔루션 | Aerospike | Tarantool |
---|---|---|
데이터 타입 | 키-값, 리스트, 맵 | 키-값, 튜플 |
확장성 | 클러스터링을 통한 수평 확장 가능 | 복제 및 샤딩을 통한 확장 |
지속성 | 인메모리 및 SSD 스토리지 지원 | 디스크 지속성 옵션 제공 |
속성/솔루션 | Etcd |
---|---|
데이터 타입 | 키-값 |
확장성 | 클러스터링을 통한 수평 확장 가능 |
지속성 | 디스크 지속성 제공 (RAFT 프로토콜 사용) |
데이터 타입의 다양성
Redis는 키-값 구조뿐만 아니라 리스트, 셋, 해시, 정렬된 셋 등 다양한 데이터 구조를 제공한다.
이러한 다양한 데이터 구조는 읽기 작업을 최적화하고 다양한 읽기 패턴을 효율적으로 지원할 수 있게 한다.
예를 들어 순서가 중요한 데이터를 정렬된 셋에서 관리하면 데이터의 일부만 효과적으로 읽을 수 있다.
클러스터링과 확장성
Redis는 클러스터링을 지원하여 대량의 데이터를 여러 노드에 분산 저장할 수 있다.
이를 통해 대용량 데이터를 빠르게 읽을 수 있으며 요청이 많은 상황에서도 고성능을 유지할 수 있다.
인메모리 데이터 처리
Redis는 주로 인메모리에서 동작하기 때문에 데이터 접근 시 디스크 I/O의 지연 없이 빠르게 읽을 수 있다.
이로 인해 특히 읽기 중심의 작업에서 높은 성능을 발휘한다.
지속성 옵션
Redis는 RDB와 AOF를 통한 데이터 지속성을 제공한다.
따라서 장애 상황에서도 데이터를 안전하게 보호하면서 빠른 읽기 성능을 제공할 수 있다.
--
Redis의 데이터 구조의 다양성, 인메모리 데이터 처리, 그리고 안정적인 클러스터링 기능은 대용량 데이터의 읽기 작업에서 매우 빠르고 효율적인 성능을 제공한다.
이러한 특징들로 인해 많은 시스템에서 읽기 중심의 캐싱 또는 데이터 처리에 Redis를 선호하고 사용하고 있고 현재 우리팀 역시 Redis를 선택하게 되었다.