- RDBS : 새로운 기능을 추가하기 위해 컬럼 추가 => 스키마 변경이 필요
기능이 계속 늘어날 때마다 컬럼이 추가되고, 스키마 변경이 필요한데, 사용량이 많아질 경우 컬럼을 계속 추가하는 것은 비효율적이고, 위험한 작업 ( 서버 부담 )
유연한 확장성이 부족하고, 중복 제거를 위해 정규화를 진행하며 전체 데이터를 조회하고 싶을 때 JOIN을 해야 함 ( 응답시간이 길어짐 )
RDB는 기본적으로 한 대의 컴퓨터에 저장
2000년대 초/중반
SNS의 이용 증가로 트래픽 증가, 비정형 데이터의 증가 ( 예상할 수 없는 데이터 )
그러면서 NoSQL이 등장하게 됨. Not Only SQL
NoSQL의 특징
1. flexible schema : application 레벨에서 스키마 관리가 필요
db. createCollection("student")
MongoDB는 JSON 형태로 데이터 넣어줄 수 있음
테이블이 아닌 collection이라 함
기존 RDBS에서 테이블 생성시
create table student (
id INT PRIMARYKEY,
name VARCHAR(20),
...
);
2. 중복 허용 ( join 회피 )
: 주문 정보를 join할 필요없이 조회해오면 된다. application 레벨에서 중복된 데이터들이 모두 최신 데이터를 유지할 수 있도록 관리해야 함
3. scale-out이 용이
: 서버 여러 대로 하나의 클러스터를 구성하여 사용
4. ACID의 일부를 포기하고, high-throughput, low-latency 추구
: 금융/결제/예약 시스템처럼 consistency가 중요한 환경에서는 사용하기가 조심스러움
Redis
: 메모리를 사용하는 key-value 형태로 데이터를 저장하는 데이터베이스이기도하고, 캐시로도 사용되고 다양한 목적으로 사용된다.
redis > SET name easycode
"OK"
redis > Get name
"easycode"
다양한 값들이 저장된다 => strings, list, sets, hashes, sorted sets
고가용성 지원
redis는 memory cache라서 DB에 비해 매우 빠르다. ( 트래픽에 대응 )
'공부할 것 !' 카테고리의 다른 글
HTTP 상태 코드 이해하기 (0) | 2024.05.12 |
---|---|
HTTP 메서드의 이해와 활용 (0) | 2024.05.12 |
아스키 코드 (0) | 2024.05.08 |
QueryDSL의 주요 기능 ( BooleanExpression, BooleanBuilder, OrderSpecifier) (0) | 2024.04.21 |
사용자 정보 저장 및 사용 방법 ( 쿠키, 세션, 스프링시큐리티 ) (0) | 2024.04.21 |