CS_01_데이터베이스

Kingyj·2025년 3월 19일
post-thumbnail

🐤 What is CS?

Cs는 Computer Science로 직역하면 컴퓨터 과학이다.

  • 컴퓨터 구조
  • 운영체제
  • 소프트웨어
  • 네트워크
  • 알고리즘

이렇게 컴퓨터에 관련된 모든 것을 CS라 한다.

"개발자는 컴퓨터가 아니라 코드로 프로그래밍을 짜는거니까 몰라도 되지않을까?"

나는 요리사가 되기위해서 한식과 양식 조리법만 배우면 되지 왜 각 음식의 상성과 재료의 속성 조미료의 관계 그리고 식당이 돌아가는 방식과 운영 노하우를 알아야하지? 하는것과 같고 생각한다.

물론 김치찌개만 잘 끓여서 김치찌개 가게를 열 수는 있다. 하지만 유명한 쉐프들은 각 음식의 상성과 재료의 속성을 이해하고 음식을 디벨롭시키고. 가게 운영방식과 노하우를 통해 효율적으로 가게를 운영한다.


🐤 데이터베이스의 기본 지식

  • 데이터베이스는 일정한 규칙과 약속을 통해 구조화되어 저장된 데이터를 말한다.

데이터를 규칙을 통해 구조화된 틀로 저장한 형태.

  • DBMS는 데이터베이스를 관리하는 시스템이다.

말 그대로 데이터베이스를 직관적이고 쉽게 관리하기 위해 만들어진 시스템이다.

  • 엔티티(Entity)는 사람, 장소, 물건, 사건 개념 등 여러 개의 속성을 지닌 명사. 예를 들어 회원이라는 엔티티를 만들고 안에 이름,아이디,주소,전화번호 등 여러 속성을 가질 수 있다.

데이터베이스에서 저장할 대상이 되는 개체를 뜻한다. 쉽게 말해서 사용자와 게시글을 데이터로 관리할려면 각각 사용자와 데이터 엔티티를 만들어야 한다.

  • 릴레이션은 데이터베이스에서 정보를 구분하여 저장하는 기본 단위이다.

  • 데이터베이스의 종류는 크게 “관계형 데이터베이스(MySQL)”와”NoSQL 데이터베이스로(MongoDB)”로 나눌 수 있다. 두 테이블의 차이는 구조설계가 다르다.

  • 데이터베이스의 테이블들은 여러 관계를 맺는다.

    • 1:1관계 - 유저 : 유저 이메일
    • 1:N관계 - 유저 - 상품
    • N:M관계 - 학생 : 강의 : 학생_강의

🐤 ERD

ERD는 데이터베이스를 구축할 때 가장 기초적인 뼈대 역할을 하며, 릴레이션의 관계를 정의한 것이다.

건축의 골조와 같은 개념으로 서비스 구축 단계에서 ERD의 정의에 따라 서비스의 품질이 결정된다.

시스템 요구 사항 > ERD > 데이터베이스

정규화 :

  • 릴레이션의 모든 도메인은 더 이상 분해될 수 없는 원자의 형태로 구성되어야 한다.
  • 부분 함수의 종속성을 제거한다. ( 테이블 속 중복된 키를 나눈다 )

🐤 트랜잭션

트랜잭션은 데이터베이스에서 하나의 논리적 기능을 수행하기 위한 작업의 단위를 말한다.

데이터베이스에 접근하는 방법은 쿼리. 여러 개의 쿼리들을 하나로 묶는 단위를 말한다.

원자성, 일관성, 독립성, 지속성이 있으며 이를 ACID특징이라 한다.

원자성 : 일이 모두 수행되었거나 되지 않았거나를 보장하는 특징.

10원을 가진 A가 0원을 가진 B에게 5원을 이체한다.

  1. A의 잔고 조회
  2. A의 잔고에서 5원을 뺀다.
  3. B의 잔고에 5원을 넣는다.

위 과정의 결과만을 나타낸다.

롤백시 어떻게 해야 할 것인지에 대한 방법이 있어야하며, 외부 API를 호출하는 것이 있으면 안된다.

일관성 : 허용된 방식으로만 데이터 변경이 가능.

10원이 있는 A는 인출과 송금이 가능. 0원이 있는 B는 인출과 송금이 불가능.

격리성 : 수행 시, 서로 끼어들 지 못하는 기능.

실행 중인 트랜잭션의 중간결과를 다른 트랜잭션이 접근할 수 없다.

동시성이 강해지면 격리성이 약해지고 그 반대도 똑같다.

(격리성높음)

↑ SERIALIZABLE(팬텀 리드)

REPEATABLE_READ(반복 가능하지 않은 조회)

READ_COMMITTED(더티리드)

↓ READ_UNCOMMITTED

(격리성낮음)

지속성 : 성공적으로 수행된 트랜잭션은 영원잉 반영된다.


🐤 데이터베이스 종류

관계형 데이터베이스 : MySQL

  • 데이터를 테이블 형식으로 구조화하여 저장하는 방식.
  • 데이터는 SQL을 사용하여 쿼리하고 조작 가능

특징

  • *스키마 - 각 테이블 구조는 사전 정의된 형식을 따른다.
  • 정합성 - ACID 원칙을 따른다.
  • 정규화 - 데이터 중복을 최소화하고, 효율적으로 관리하기 위해 일관성을 유지한다.
  • JOIN 연산 - 여러 테이블을 조인하여 관련 데이터를 가져오는 기능 제공. 관계형 모델의 핵심적인 기능이다.

NoSQL 데이터베이스 : MongoDB

  • 비관계형 데이터베이스로, 스키마가 유연한 데이터를 저장한다. 주로 대규모 데이터 처리와 수평 확장을 필요하는 애플리케이션에 적합.
  • 데이터를 JSON 형태로 저장한다.

특징

  • 스키마리스 - 유연한 스키마 제공. 각 문서는 동일한 구조를 가질 필요가 없으며, 필드는 동적으로 추가될 수 있다. 빠르게 변화하는 데이터 모델 지원.
  • 확장성 - 수평 확장을 지원한다. 서버를 쉽게 추가하고 분산 환경에서 데이터를 관리할 수 있다.
  • JSON 기반 - 복잡한 관계형 데이터를 자연스럽게 JSON(문서형식)으로 모델링할 수 있다.
  • 내장된 복제와 *샤딩 - 데이터를 여러 서버에 분산 저장하고, 고가용성과 확장성을 보장한다.

*스키마 : 데이터베이스에서 데이터의 구조를 정의한 것. 데이터가 어떻게 구성되고 어떤 형태로 저장될지에 대한 초기 도면 같은 역할.

E) 학생 테이블의 스키마

학생 이름 : 텍스트

나이 : 숫자

학번 : 고유 숫자

*샤딩 : 대규모 데이터를 여러 개의 서버에 나누어 저장하는 분산 데이터베이스 기술.


0개의 댓글