!

SQL vs NoSQL

📌 핵심 차이

항목SQLNoSQL
스키마고정유연
확장수직 (Scale-up)수평 (Scale-out)
트랜잭션ACID 보장결국 일관성
조인지원제한적
사용 사례금융, ERPSNS, IoT, 빅데이터

🎯 실전 사례

사례 1: 전자상거래 - SQL 선택

이유: 재고, 주문, 결제는 정확성 필수

-- 주문 처리 (트랜잭션)
BEGIN TRANSACTION;
 
-- 1. 재고 확인 및 차감
UPDATE products
SET stock = stock - 1
WHERE id = 123 AND stock > 0;
 
-- 2. 주문 생성
INSERT INTO orders (user_id, product_id, amount)
VALUES (456, 123, 29000);
 
-- 3. 결제 처리
INSERT INTO payments (order_id, amount, status)
VALUES (LAST_INSERT_ID(), 29000, 'COMPLETED');
 
COMMIT;  -- 모두 성공하거나 모두 실패

사례 2: 소셜 미디어 - NoSQL 선택

이유: 스키마 유연성, 대규모 트래픽

// MongoDB: 게시물 저장
db.posts.insertOne({
  userId: ObjectId('...'),
  content: '여행 사진',
  images: ['img1.jpg', 'img2.jpg'],  // 배열 자유롭게
  tags: ['여행', '제주도'],
  likes: [],
  comments: [
    { userId: ObjectId('...'), text: '좋아요!', createdAt: ISODate() }
  ],
  createdAt: ISODate()
});
 
// 좋아요 추가 (간단)
db.posts.updateOne(
  { _id: ObjectId('...') },
  { $push: { likes: userId } }
);

💡 선택 가이드

SQL 선택:

  • ✅ 복잡한 관계 (사용자-주문-상품)
  • ✅ 데이터 정합성 중요
  • ✅ 복잡한 쿼리 필요

NoSQL 선택:

  • ✅ 빠른 읽기/쓰기
  • ✅ 스키마 자주 변경
  • ✅ 대규모 확장 필요

🔗 참고 자료