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
- 만화로보는3분철학
- 다국어 입력전환
- nhn_cloud_console
- Mac m1
- nhn cloud
- sm회사
- m1 sts3 설치
- 쿠버네티스기초
- 거래소 운영시간
- 3분철학
- 클라우드기초교육
- sts3
- 도커
- 원씽
- 만화철학
- Rectangle
- si회사
- Kubernetes
- 슬래시24
- 쿠버네티스
- 클라우드입문자
- 일상의행복
- 성장마인드셋
- 미국채권
- 티스토리 야간모드
- 교양철학
- 다크모드
- docker
- spring mvc project
- 코딩 특수문자
Archives
- Today
- Total
Good Morning
DBMS와 NoSQL: 기초부터 활용까지 알아보기 본문
현대 애플리케이션에서 데이터베이스는 필수 요소입니다. 데이터베이스를 효과적으로 관리하기 위해 사용하는 **DBMS(Database Management System)**와 최근 각광받는 NoSQL에 대해 알아보겠습니다.
1. DBMS란?
DBMS(Database Management System)는 데이터를 저장, 관리, 검색, 수정할 수 있도록 돕는 소프트웨어입니다.
관계형 데이터베이스와 비관계형 데이터베이스로 나뉘며, 각각의 특징과 사례가 다릅니다.
RDBMS에서 SQL 사용 예제
-- 사용자 테이블 생성
CREATE TABLE Users (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50),
email VARCHAR(100) UNIQUE
);
-- 데이터 삽입
INSERT INTO Users (name, email) VALUES ('Alice', 'alice@example.com');
-- 데이터 조회
SELECT * FROM Users WHERE name = 'Alice';
2. NoSQL이란?
NoSQL은 전통적인 관계형 데이터베이스가 아닌, 유연한 데이터 모델과 수평적 확장성을 가진 데이터베이스입니다.
MongoDB에서 데이터 저장 예제
// 사용자 데이터 삽입 (MongoDB)
db.users.insertOne({
name: "Alice",
email: "alice@example.com",
age: 25,
hobbies: ["reading", "traveling"]
});
// 데이터 조회
db.users.find({ name: "Alice" });
3. NoSQL 데이터 모델의 유형
① 키-값(Key-Value) 스토어
- 데이터를 Key와 Value 형태로 저장합니다.
- 예: Redis
# Redis 사용 예제 (Python)
import redis
# Redis 연결
r = redis.StrictRedis(host='localhost', port=6379, decode_responses=True)
# 데이터 저장
r.set('name', 'Alice')
# 데이터 조회
print(r.get('name')) # 출력: Alice
② 문서(Document) 데이터베이스
- 데이터를 JSON 형태로 저장합니다.
- 예: MongoDB
// MongoDB 사용 예제
db.products.insertOne({
name: "Laptop",
price: 1200,
tags: ["electronics", "computing"],
stock: 50
});
db.products.find({ price: { $gt: 1000 } }); // 가격이 1000 이상인 상품 조회
③ 열(Column) 기반 데이터베이스
- 데이터를 열 단위로 저장하여 대규모 분석에 적합합니다.
- 예: Cassandra
-- Cassandra에서 테이블 생성
CREATE TABLE users (
id UUID PRIMARY KEY,
name TEXT,
email TEXT,
age INT
);
-- 데이터 삽입
INSERT INTO users (id, name, email, age) VALUES (uuid(), 'Alice', 'alice@example.com', 25);
-- 데이터 조회
SELECT * FROM users WHERE name = 'Alice';
④ 그래프(Graph) 데이터베이스
- 데이터 간의 관계를 노드와 간선으로 표현합니다.
- 예: Neo4j
// 사용자 노드 생성
CREATE (a:User {name: "Alice", age: 25});
CREATE (b:User {name: "Bob", age: 30});
// 관계 생성
CREATE (a)-[:FRIENDS_WITH]->(b);
// 관계 조회
MATCH (a:User)-[:FRIENDS_WITH]->(b:User) RETURN a.name, b.name;
4. NoSQL vs RDBMS 비교
특징 NoSQL RDBMS
데이터 모델 | 비관계형 (문서, 키-값, 그래프 등) | 관계형 (테이블 기반) |
스키마 | 유연한 스키마 | 고정된 스키마 |
확장성 | 수평 확장 (Scale-out) | 수직 확장 (Scale-up) |
일관성 | 약한 일관성 (Eventually Consistent) | 강한 일관성 (ACID 준수) |
사용 사례 | 실시간 처리, 빅데이터 관리 | 트랜잭션 처리, 정형 데이터 관리 |
5. 실제 사례: 카카오톡 데이터베이스 활용
카카오톡은 여러 데이터베이스를 혼합해 사용합니다.
- Redis: 사용자 상태 관리 및 메시지 큐 처리.
- Cassandra: 대규모 메시지 이력 저장.
- MySQL: 사용자 정보 관리.
- Elasticsearch: 대화 검색 및 로그 분석.
Redis를 사용한 세션 관리 예제
# Redis로 사용자 세션 관리 (Python)
import redis
# Redis 연결
r = redis.StrictRedis(host='localhost', port=6379, decode_responses=True)
# 사용자 세션 저장
r.set('user:1001:status', 'online')
# 사용자 상태 조회
print(r.get('user:1001:status')) # 출력: online
'Database' 카테고리의 다른 글
맥북에서 MySQL 중지하는 방법 완벽 가이드 (0) | 2025.06.19 |
---|---|
SQLD 자격증 취득 후기 (비전공자, 한달 공부) (1) | 2024.09.12 |
데이터베이스 관계의 이해: 동영상과 재생목록 예시 (1) | 2024.08.24 |
Oracle SQL에서의 대소문자 구분과 데이터 조작: 주의해야 할 점들 (0) | 2024.08.07 |
SQL 상관 서브 쿼리(Correlated Subquery) 이해하기 (0) | 2024.07.27 |