일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- nat의 작동 방식
- Spring Boot
- 트랜잭션의 acid 특성
- 샤딩(sharding)과 파티셔닝(partitioning)의 개념
- 인덱스의 장단점
- join의 종류
- 데이터 바인딩
- nat(network address translation)의 역할과 사용 이유
- 린크드 리스트
- nat의 장단점
- 로드 밸런서의 종류
- Spring REST API
- REST API
- rest와 soap의 차이점
- 객체지향 프로그래밍
- 트리와 그래프
- 트리 그래프 차이
- rdbms와 nosql의 차이점
- nat의 유형
- orm(object-relational mapping)의 장단점
- 파티셔닝의 종류
- 트리 그래프 차이점
- 정규화와 비정규화의 개념 및 장단점
- Spring
- 인덱스의 역할
- 함수형 객체지향형 차이점
- 데이터베이스 락(lock)의 종류와 동작 방식
- 인덱스의 역할과 사용 이유
- spring rest api 설정
- acid 특성
- Today
- Total
♠개발자의 작은 서재♠
RDBMS와 NoSQL의 차이점 본문
1. RDBMS (Relational Database Management System)
구조 (Structure):
- RDBMS는 관계형 데이터베이스로, 데이터를 테이블 형태로 저장합니다. 이때, 테이블 간의 관계를 설정할 수 있어 서로 연결된 데이터를 쉽게 조회할 수 있습니다.
- 데이터를 행과 열로 정리하며, 특정 규칙에 맞게 정해진 구조(스키마)를 따라야 합니다. 예를 들어, 사용자 정보를 저장하는 테이블을 만들 때 이름, 이메일, 생년월일과 같은 열을 정하고, 모든 데이터가 이 구조에 맞아야 합니다.
SQL을 이용한 질의 (Querying):
RDBMS는 SQL(Structured Query Language)이라는 표준 언어를 사용해 데이터를 조회하고, 추가, 수정, 삭제할 수 있습니다. 예를 들어, SQL을 사용해 특정 사용자의 데이터를 조회할 수 있습니다.
SELECT * FROM users WHERE username = 'john_doe';
이 코드의 의미는
users
테이블에서username
이 "john_doe"인 사용자의 모든 정보를 가져오라는 것입니다.스키마와 제약조건 (Schema and Constraints):
- RDBMS는 스키마가 고정되어 있으며, 모든 데이터가 이 스키마를 따라야 합니다. 예를 들어,
users
테이블에 "주소"를 추가하려면 테이블의 구조를 변경해야 하며, 이미 추가된 데이터에도 해당 열을 추가해야 합니다. - 제약 조건을 통해 데이터 무결성을 유지합니다. 예를 들어, 이메일 열이 비어있을 수 없도록 "NOT NULL" 제약 조건을 설정할 수 있습니다.
- RDBMS는 스키마가 고정되어 있으며, 모든 데이터가 이 스키마를 따라야 합니다. 예를 들어,
트랜잭션과 ACID 특성:
RDBMS는
ACID
특성을 따릅니다.
- 원자성 (Atomicity): 트랜잭션 내 모든 작업이 성공해야만 최종적으로 반영됩니다.
- 일관성 (Consistency): 트랜잭션 완료 후 데이터가 일관된 상태를 유지합니다.
- 고립성 (Isolation): 여러 트랜잭션이 동시에 실행될 때 서로 간섭하지 않습니다.
- 지속성 (Durability): 트랜잭션이 성공하면 시스템 오류가 나도 데이터가 유지됩니다.
사용 사례: 은행, ERP 시스템, 재고 관리 시스템 등 정해진 구조와 높은 데이터 일관성이 필요한 시스템에서 많이 사용됩니다.
쉽게 설명: RDBMS는 데이터를 테이블처럼 "엑셀 시트"에 정리하는 방식입니다. 모든 데이터가 정해진 구조(스키마)에 따라 저장되므로 데이터의 일관성이 높습니다.
2. NoSQL (Not Only SQL)
구조 (Structure):
NoSQL은 테이블 기반이 아닌 문서(Document), 키-값(Key-Value), 컬럼(Column), 그래프(Graph) 등 여러 형태로 데이터를 저장할 수 있습니다. 이 때문에 더 유연하게 데이터 구조를 바꿀 수 있습니다.
NoSQL은 스키마가 없거나 유연해 데이터를 추가할 때 형식에 구애받지 않고 자유롭게 저장할 수 있습니다.
예를 들어, MongoDB와 같은 문서형 데이터베이스에서는 JSON 형식의 데이터를 그대로 저장합니다.
{ "username": "john_doe", "email": "john@example.com", "address": { "city": "Seoul", "country": "South Korea" } }
이 예에서
"address"
필드는 하나의 값으로 묶여 있지만, 또 다른 필드 구조를 포함할 수 있어 복잡한 데이터를 간단하게 저장할 수 있습니다.다양한 데이터 모델 지원:
- 문서 지향(Document-oriented): JSON 형태로 데이터를 저장합니다. MongoDB가 대표적인 예입니다.
- 키-값(Key-Value): 키를 통해 값을 저장하는 방식입니다. Redis, DynamoDB 등이 이에 속합니다.
- 컬럼 지향(Column-oriented): 특정 열 중심으로 데이터를 관리하여 빠른 조회가 가능합니다. Cassandra가 대표적입니다.
- 그래프 지향(Graph-oriented): 데이터가 서로 연결된 관계를 그래프 구조로 저장합니다. Neo4j 같은 그래프 DB가 이에 해당합니다.
수평적 확장 (Horizontal Scaling):
- NoSQL은 데이터를 여러 서버로 쉽게 나누어 저장할 수 있어 큰 규모의 데이터를 처리할 때 유리합니다. 이 때문에 대규모 트래픽과 데이터 처리가 필요한 시스템에서 자주 사용됩니다.
트랜잭션과 일관성:
- NoSQL은 대부분의 경우 ACID 대신 CAP 이론을 따릅니다. CAP 이론은 일관성(Consistency), 가용성(Availability), 분산 허용성(Partition Tolerance) 중 두 가지를 보장하며, 나머지 하나는 포기합니다.
- 일부 NoSQL 데이터베이스는 트랜잭션을 지원하지 않으며, 데이터의 일관성보다는 빠른 읽기와 쓰기에 초점을 맞춥니다.
사용 사례: SNS, IoT, 게임, 실시간 데이터 분석 등 다양한 형태의 데이터를 유연하게 저장하고 빠르게 접근해야 하는 시스템에서 주로 사용됩니다.
쉽게 설명: NoSQL은 데이터를 정해진 틀 없이 "박스 안에 자유롭게 담아두는" 방식입니다. 즉, 추가할 데이터가 정해진 틀에 맞지 않아도 쉽게 저장할 수 있어 다양한 형태의 데이터를 다루기 편리합니다.
3. RDBMS와 NoSQL의 주요 차이점 정리
특징 | RDBMS (관계형 데이터베이스) | NoSQL (비관계형 데이터베이스) |
---|---|---|
데이터 구조 | 테이블 형식 (행과 열 구조) | 문서, 키-값, 컬럼, 그래프 등 다양한 구조 |
스키마 | 고정된 스키마 필요 | 유연한 스키마 |
질의 언어 | SQL (표준화된 쿼리 언어) | SQL이 아닌 각 DB의 특화된 질의 방식 사용 |
확장성 | 수직적 확장 (하드웨어 업그레이드 필요) | 수평적 확장 (서버 추가 가능) |
트랜잭션 | ACID 준수 (높은 데이터 무결성) | 대부분 CAP 이론 기반 (빠른 데이터 처리와 유연성 중시) |
사용 사례 | 은행, ERP, 재고 관리 등 고정된 구조의 데이터가 필요한 경우 | SNS, IoT, 게임 등 데이터의 구조가 다양하고 빠른 처리가 필요한 경우 |
RDBMS와 NoSQL은 각각의 장단점이 있어서, 데이터의 일관성과 구조가 중요한 경우 RDBMS를, 데이터의 구조가 자유롭고 대규모 데이터를 빠르게 처리해야 하는 경우 NoSQL을 선택하는 것이 일반적입니다.
'IT 면접 질문 총정리!! > 데이터베이스' 카테고리의 다른 글
데이터베이스 락(lock)의 종류와 동작 방식 (0) | 2024.10.29 |
---|---|
트랜잭션의 ACID 특성 (1) | 2024.10.29 |
정규화(Normalization)와 비정규화(Denormalization)의 개념 및 장단점 (0) | 2024.10.29 |
조인의 종류(예: INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL OUTER JOIN)와 차이점 (0) | 2024.10.29 |
인덱스의 역할과 사용 이유 (0) | 2024.10.29 |