Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- JPA
- jwt토큰
- QA
- 하이브리드접근법
- 한화시스템부트캠프
- 테스트케이스
- 자료구조
- 프로세스와스레드의차이
- 티스토리챌린지
- 오블완
- N+1문제
- 부트캠프
- Kafka
- STOMP
- XSS
- 캐시의 작동 원리
- kafka배포
- Java
- 엘라스틱서치
- springboot
- 프로토콜역할
- 메소드
- 스프링시큐리티
- 오버로딩
- 자바
- selenium
- nplus1
- 헥사고날아키텍처
- 자동화워크플로우
- n8n
Archives
- Today
- Total
아쿠의 개발 일지
SQL과 NoSQL의 차이 및 실제 활용 사례 본문
1. 관계형 데이터베이스와 비관계형 데이터베이스의 개념 및 차이
관계형 데이터베이스 (RDBMS)
- 구조: 데이터를 테이블(행과 열)로 구성하며, 각 테이블은 관계를 통해 연결됩니다.
- 언어: SQL(Structured Query Language)을 사용해 데이터를 관리합니다.
- 특징:
- 정형화된 스키마(사전 정의된 데이터 구조)
- 데이터 무결성과 일관성을 유지 (ACID 특성 지원)
- 사용 사례:
- 금융 시스템, ERP, CRM, 트랜잭션이 중요한 시스템
비관계형 데이터베이스 (NoSQL)
- 구조: 테이블 대신 다양한 데이터 모델(키-값, 문서, 열, 그래프 등)을 사용합니다.
- 언어: SQL이 아닌 다양한 쿼리 언어 및 API를 사용합니다.
- 특징:
- 스키마가 없거나 유연한 구조
- 대규모 데이터 처리와 빠른 읽기/쓰기 작업에 최적화
- CAP 이론에서 Consistency보다 Availability에 중점을 두는 경우가 많음
- 사용 사례:
- 실시간 분석, 소셜 미디어, IoT, 캐싱 시스템
항목 | SQL | NoSQL |
스키마 | 고정된 스키마 | 유연한 스키마 |
확장성 | 수직적 확장 | 수평적 확장 |
트랜잭션 | ACID 지원 | BASE |
성능 | 트랜잭션에 강점 | 대규모 데이터 처리에 강점 |
2. 데이터 정규화와 반정규화의 실전 사례
데이터 정규화
- 데이터 중복을 제거하고, 데이터 무결성을 유지하는 과정.
- 목표:
- 데이터 저장 효율성 증대
- 중복 최소화 및 업데이트 이상(Anomalies) 방지
- 단계:
- 1NF: 각 컬럼이 원자값을 가져야 함.
- 2NF: 기본 키에 완전 함수 종속성을 만족해야 함.
- 3NF: 비-기본 속성이 기본 키에만 종속해야 함.
- 실제 예:
- 고객 정보 테이블에서 이름, 주소, 주문 내역을 별도 테이블로 분리.
데이터 반정규화
- 성능 향상을 위해 중복과 일부 무결성을 허용하는 과정.
- 사용 시점:
- 복잡한 조인으로 성능 저하가 발생할 때
- 읽기 작업이 쓰기 작업보다 훨씬 빈번할 때
- 실제 예:
- 고객 정보와 주문 내역을 하나의 테이블에 병합
3. 트랜잭션과 ACID 특성, CAP 이론
트랜잭션
- 데이터베이스에서 하나의 논리적 작업 단위.
- ACID 특성:
- Atomicity(원자성): 트랜잭션이 완전히 수행되거나 전혀 수행되지 않아야 함.
- Consistency(일관성): 트랜잭션 후에도 데이터베이스 상태가 일관성을 유지해야 함.
- Isolation(독립성): 여러 트랜잭션이 동시에 실행되더라도 서로 간섭하지 않음.
- Durability(지속성): 트랜잭션 완료 후 결과는 영구적으로 저장됨.
CAP 이론
- 분산 시스템에서 세 가지 특성을 동시에 만족시킬 수 없음:
- Consistency(일관성): 모든 노드가 동일한 데이터를 가지는 것.
- Availability(가용성): 모든 요청이 실패하지 않고 응답하는 것.
- Partition Tolerance(파티션 허용성): 네트워크 분할 시에도 시스템이 작동 가능.
4. 데이터베이스 설계 시 흔히 저지르는 실수와 해결책
실수:
- 과도한 정규화로 인해 성능 저하.
- 해결책: 필요한 경우 반정규화를 적용.
- 스키마 설계 시 미래의 확장성 미고려.
- 해결책: 스키마를 유연하게 설계하고 NoSQL 사용 검토.
- 대규모 조인 사용으로 인한 성능 저하.
- 해결책: 적절한 인덱스 설정과 테이블 분리.
- ACID 준수 실패로 데이터 무결성 문제 발생.
- 해결책: 트랜잭션과 롤백을 적절히 설정.
1. SQL 데이터베이스 실습 (PstgreSQL)
-- 테이블 생성
CREATE TABLE Customers (
CustomerID SERIAL PRIMARY KEY,
Name VARCHAR(100),
Email VARCHAR(100)
);
CREATE TABLE Orders (
OrderID SERIAL PRIMARY KEY,
CustomerID INT REFERENCES Customers(CustomerID),
OrderDate DATE,
Amount DECIMAL
);
-- 데이터 삽입
INSERT INTO Customers (Name, Email) VALUES ('Alice', 'alice@example.com');
INSERT INTO Orders (CustomerID, OrderDate, Amount) VALUES (1, '2025-01-01', 100.50);
-- 데이터 조회
SELECT Customers.Name, Orders.OrderDate, Orders.Amount
FROM Customers
JOIN Orders ON Customers.CustomerID = Orders.CustomerID;
2. NoSQL 데이터베이스 실습 (MongoDB)
// 데이터 삽입
db.posts.insertOne({
title: "SQL과 NoSQL의 차이",
author: "Admin",
tags: ["SQL", "NoSQL", "Database"],
publishedDate: new Date(),
content: "SQL과 NoSQL의 차이에 대해 알아봅니다."
});
// 데이터 조회
db.posts.find({ tags: "SQL" });
SQL과 NoSQL은 각기 다른 특성과 강점을 가진 데이터베이스 유형으로, 상황과 요구사항에 따라 적절하게 선택하는 것이 중요합니다 ! 정규화와 반정규화를 이해하고, 활용하면 효율적인 데이터 설계가 가능해집니다.
데이터가 중심이 되는 시대에 살고 있는 지금, 올바른 데이터베이스 이해와 선택은 성공적인 서비스 개발의 핵심입니다.
읽어주셔서 감사합니다~! 😊❤️
728x90
'DataBase' 카테고리의 다른 글
데이터 웨어하우스 vs 데이터 레이크: 주요 차이와 활용 사례 (0) | 2025.01.24 |
---|---|
[Data] Apache Spark : 대규모 데이터 처리 (0) | 2025.01.10 |