3 minute read

데이터베이스

데이터베이스란?

- 데이터를 체계화하고 통합 관리하는 시스템
- 데이터베이스는 게임 개발에서 필수적인 도구이다. 데이터베이스를 사용하면 게임 데이터를 효율적으로 저장하고 관리할 수 있으며, 게임 데이터를 안전하게 보호할 수 있다. 또한
데이터베이스를 사용하면 게임 데이터를 확장할 수 있다.

데이터베이스 종류

- RDB (Relational Database)
    - SQL (Structured Query Language)
        - 데이터베이스의 데이터를 관리하기 위해 설계된 프로그래밍 언어
        - 관계형 데이터베이스의 관리 시스템에서 자료 검색 및 관리
        - 데이터베이스에서 테이블 생성과 수정, 데이터 관리를 위헤 고안됨
    - 종류
        - MySql, Oracle, DB2 등등...
- NoSql
    - SQL을 사용하지 않는 데이터베이스 시스템
    - RDB와 다르게 다른 형식으로 데이터를 저장
        - Document, key-value 등등..
    - 종류
        - MongoDb, Redis

RDB

- 테이블
    - 쉽게 말하면 표 라고 생각하면 됩니다. (ex. 엑셀)
    - 열
        - 유일한 이름을 가지고 있는 값
            - 학생 번호, 이름, 성별, 주소
                - 열에 들어가는 값들은 각 데이터 형을 가지고 있음
                    - (int, string 등등..)
        - 필드(Field), 속성(Attribute), 컬럼(column)
    - 행
        - 테이블의 가로줄을 의미한다. (학생 테이블 기준 학생 개개인)
        - 레코드(Record), 튜플(Tuple), 로우(Low) 등등..
    - 값
        - 각각 열이 가지고 있는 값들
            - 1, "김철수", "남자", "서울"
    - 데이터 저장 방식
        - B+ tree
            - 과제
  • 수강 등록 테이블
    • 수강 등록 테이블에서 김철수를 찾고 싶다.
      • select ‘회원 번호’, ‘회원 이름’ from ‘수강 등록 테이블’ where ‘회원 이름’ = “김철수
        • 회원 번호 회원 이름
        • 1 김철수
    • 데이터 베이스를 듣고 있는 사람을 찾고 싶다.
      • select ‘회원 이름’ from ‘수강 등록 테이블’ where ‘과목’ = “데이터베이스”
        • 회원 이름
        • 김영희
    • 데이터베이스를 포함하는 것을 찾고 싶다면?
      • select ‘회원 이름’ from ‘수강 등록 테이블’ where ‘과목’ LIKE = “%데이터베이스%”
        • 회원 이름
        • 김영희
        • 김멍멍

데이터베이스 이상현상

  • 데이터베이스 이상현상은 불필요한 데이터 중복으로 인해 릴레이션에 대한 데이터 삽입, 수정, 삭제 연산을 할 때 발생할 수 있는 부작용이다.
    • 삽입 이상현상: 데이터를 삽입할 때 데이터 중복으로 인해 데이터베이스의 일관성이 깨질 수 있다
    • 갱신 이상현상: 데이터를 수정할 때 데이터 중복으로 인해 데이터의 정확성이 떨어질 수 있드
    • 삭제 이상현상: 데이터를 삭제할 때 데이터 중복으로 인해 데이터의 손실이 발생할 수 있다
  • 데이터베이스 이상현상을 방지하기 위해서는 데이터베이스를 정규화해야 한다.
  • 정규화는 데이터베이스를 설계하는 프로세스이며, 데이터베이스의 데이터 중복을 제거하고 데이터베이스의 일관성을 유지하는 것을 목표로 한다.

  • 정규화 (Normal form)
    • 이상현상이 있는 테이블을 분해해서 이상현상을 없애는 과정
    • 1정규화 (1NF)
      • 릴레이션의 모든 도메인이 더 이상 분해될 수 없는 원자 값(atomic value)만으로 구성되야아 함.
      • 릴레이션의 속성 값 중에서 한 개의 기본키에 대해 두 개 이상의 값을 가지는 반복 집합이 있어서는 안됨.
    • 2정규화
      • 릴레이션이 제1정규형이며 부분 함수의 종속성을 제거한 형태.
      • 부분 함수의 종속성 제거란 기본키가 아닌 모든 속성이 기본키에 완전 함수 종속적인 것을 말함.
      • 분해할 때는 동등한 릴레이션으로 분해해야 하고, 정보 손실이 발생하지 않는 무손실 분해로 분해되어야 함.
    • 3정규화
      • 릴레이션이 제2정규형이며 기본키가 아닌 모든 속성이 이행적 함수 종속을 만족하지 않는 상태
        • 이행적 함수 종속: A→B이고 B→C이면 A→C. C가 A에 이행적으로 함수 종속이 됨.
    • BCNF
      • 3정규형을 강화한 버전, 강한 3정규화
      • BCNF는 릴레이션이 제3정규형이고, 결정자가 후보키가 아닌 함수 종속 관계를 제거하여 릴레이션의 함수 종속 관계에서 모든 결정자가 후보키인 상태.
        • 결정자: 함수 종속 관계에서 특정 종속자(dependent)를 결정짓는 요소, ‘X→Y’일 때 X는 결정자, Y는 종속자이다.
    • 4정규화
      • 여러 컬럼이 하나의 컬럼을 종속되는 경우 분해해서 다중값 종속성을 제거
    • 5정규화
      • 조인에 의해서 종속성이 발생되는 경우 분해
    • 특정 컬럼을 이 테이블에서 보관해도 되는걸까요?
      • 상황에 맞게 해야됩니다.
      • 사람마다 정규화를 보는 관점이 다르기 때문에 사람마다 케이스가 다를 수 있음
  • 정규화의 장단점
    • 정규화는 데이터베이스의 데이터 중복을 제거하고 데이터베이스의 일관성을 유지하는 것을 목표로 한다.
    • 그러나 정규화를 하게 되면 데이터베이스의 크기와 복잡성이 증가할 수 있다.
    • 또한, 데이터베이스의 조회 성능이 저하될 수 있으며, 데이터베이스의 유지보수가 어려워질 수 있다.
  • 역정규화
    • 특정 정규화를 만족하고 있던 테이블을 성능이나 관리 용의성을 더 높이기 위해 적용된 정규화를 제거하는 것

컴퓨터 구조

instruction dispatch

Instruction dispatch는 CPU가 명령어를 실행하는 첫 번째 단계입니다. 명령어 디스패치는 명령어를 실행할 수 있는 장치(예: 연산 장치, 메모리 장치)에 할당하는 것입니다. 명령어 디스패치는 CPU의 명령어 캐시에서 발생합니다. 명령어 캐시는 CPU가 실행할 수 있는 명령어를 저장하는 하드웨어 리소스입니다.

명령어 디스패치는 다음과 같은 단계를 거칩니다.

  1. 명령어를 명령어 캐시에서 가져옵니다.
  2. 명령어의 종류를 확인합니다.
  3. 명령어를 실행할 수 있는 장치를 찾습니다.
  4. 명령어를 장치에 할당합니다.

명령어 디스패치는 CPU의 성능을 향상시키는 데 중요한 역할을 합니다. 명령어 디스패치가 효율적이면 CPU는 더 많은 명령어를 더 빨리 실행할 수 있습니다.

Branch prediction

Tags:

Categories:

Updated:

Leave a comment