오늘 배운 것
- Redis
Redis란
- Redis는 REmote DIctionary Server의 줄인말
- Java의 Map과 같은 방식으로 데이터를 저장하는 DB
- Redis는 가장 대중적인 인메모리 DB
- Redis는 대표적인 NoSQL DB
인메모리 DB = 데이터를 디스크(하드 드라이브나 SSD)가 아닌 시스템의 주 메모리(RAM)에 저장하는 데이터 저장소
NoSQL DB = "Not Only SQL"의 약자로, 관계형 데이터베이스(SQL)와는 다른 방식으로 데이터를 저장하고 관리하는 DB
인메모리 저장소 vs 디스크 기반 저장소
인메모리 저장소 | 디스크 기반 저장소 | |
데이터 접근 속도 | RAM에 저장해 빠름 | 디스크에 저장해 느림 |
데이터 영속성 | 휘발성 메모리 (RAM)에 저장해 영속성 유지 X |
디스크에 저장해 영속성 유지 O |
용량 | RAM이 비싸 용량에 제한 있음 | 디스크는 상대적으로 저렴해 대용량 데이터 저장 가능 |
비용 | RAM은 디스크에 비해 단위당 비용 높음 | 디스크는 RAM보다 훨씬 저렴함 |
확장성 | 확장이 제한적 | 대규모 확장이 용이 |
복잡성 | 데이터가 메모리에 있어 시스템 장애 시 복구 메커니즘 필요해 복잡성 증가 |
장애 복구가 더 용이하며 많은 DBMS가 내장 백업 및 복구 기능 제공 |
활용 사례 | 캐싱, 세션 관리, 실시간 데이터 분석 | DB, 파일 시스템, 백업, 아카이빙 |
NoSQL DB vs 관계형 DB
NoSQL DB | 관계형 DB | |
데이터 모델 | 고정된 스키마 없거나 유연한 스키마 사용 다양한 형태의 데이터 (키-값, 문서) 저장 |
데이터를 테이블에 저장 각 테이블은 미리 정의된 스키마 있음 데이터는 행과 열 형태로 저장 |
확장성 | 서버 추가하는 수평 확장이 용이 | 하드웨어 업그레이드하는 수직 확장이 용이 |
데이터 일관성 | 가용성과 분산성 우선해 일관성 희생 가능 | 트랜잭션을 통해 일관성 보장 |
쿼리 언어 | NoSQL DB마다 고유의 쿼리 언어 사용 | SQL 언어 사용 |
성능 | 높은 성능 | 일반적으로 느린 성능 |
데이터 무결성 | 무결성 관리 어렵거나 제한적 | 높은 데이터 무결성 |
유연성 | 데이터 구조가 유연해 높은 유연성 가짐 | 스키마가 고정되어 있어 낮은 유연성 가짐 |
사용 사례 | 비정형 데이터, 실시간 데이터 분석 등 | 금융 시스템, 재고 관리 등 |
NoSQL
- 관계형 테이블 사용 X
- NoSQL 마다 사용 명령어 조금씩 다름
- NoSQL 마다 데이터 관리 방법, 사용법 다름
종류
Key-Value DB
- key에 value 저장하는 형태
- DB에 value 요구할 때 key 전달
- Redis가 대표적
Document DB
- 객체를 표현하는 Document라는 단위로 데이터 저장
- 데이터를 객체의 모습 표현한 JSON 형태로 표현
- JSON, XML등 복잡한 데이터 저장 및 관리
- MongoDB가 대표적
Column-Family DB
- 각 Row의 Column이 고정 X
- 필요한 Column을 이름, 데이터, Timestamp와 함께 저장
- 각 Row마다 Column의 family를 구성해 Column의 데이터 기록
- cassandra가 대표적
Redis 활용 사례
Redis는 지연이 적은 읽기, 쓰기 성능 가짐
왜냐하면 NoSQL 중에서 Key-Value DB 그리고 인메모리 DB이기 때문
일시적인, 변경이 잦은 데이터 다룰 때 많이 활용
활용 사례
- Session Clustering
- Caching
- 리더보드
- 방문수 트래킹
- 좌표 기반 검색
'TIL' 카테고리의 다른 글
24.08.21 TIL - session clustering (0) | 2024.08.23 |
---|---|
24.08.20 TIL - Redis in Spring (0) | 2024.08.21 |
24.08.14 TIL - GitHub Actions (1) | 2024.08.16 |
24.08.13 TIL - Docker (0) | 2024.08.16 |
24.08.12 TIL - MSA 구성 요소들 (2) | 2024.08.13 |