데이터베이스 기초 이론

데이터베이스 기초 이론

1. 데이터베이스 속성

  • 통합 데이터: 데이터베이스에는 중복성이 최소화된 내장 데이터가 있습니다.
    이러한 방식으로 데이터의 일관성과 무결성을 유지할 수 있습니다.

  • 저장된 데이터: 데이터베이스에 저장된 데이터는 시간이 지남에 따라 변경될 수 있지만 항상 액세스할 수 있어야 합니다.
    이를 통해 사용자는 필요한 정보를 빠르게 찾고 사용할 수 있습니다.

  • 공유 데이터: 여러 사용자가 데이터베이스에 접근하여 데이터를 공유할 수 있어야 합니다.
    이를 통해 여러 사용자가 동시에 데이터를 사용할 수 있어 조직의 업무 효율성이 높아집니다.

  • 운영 데이터데이터베이스는 주로 조직 또는 비즈니스의 핵심 비즈니스를 지원하는 운영 데이터를 처리하고 유지 관리합니다.
    이를 통해 실시간 데이터를 기반으로 의사결정을 내리고 업무 효율성을 높일 수 있습니다.

2. 데이터베이스의 장점과 단점

2-1 데이터베이스 이점

  • 중복 최소화: 데이터를 통합 관리하므로 중복 데이터를 최소화합니다.
    이렇게 하면 데이터 저장 공간이 절약되고 데이터 일관성과 무결성이 유지됩니다.

  • 데이터 전송: 여러 사용자가 동시에 데이터베이스에 접속하여 데이터를 공유하고 사용할 수 있습니다.
    이를 통해 조직 내 업무 협업 및 의사 결정 프로세스가 보다 효율적으로 이루어집니다.

  • 데이터 보안: 데이터베이스에서 사용자 권한 관리 기능을 통해 데이터 접근을 통제할 수 있습니다.
    이것은 중요한 데이터의 보안을 보장하고 데이터 유출을 방지합니다.

  • 데이터 무결성 유지: 데이터베이스에서 무결성 제약 조건을 설정하여 데이터의 정확성과 일관성을 유지할 수 있습니다.
    이러한 방식으로 데이터 품질을 높여 신뢰할 수 있는 정보를 제공할 수 있습니다.

2-1-1. 무결성 제약?

  • 엔터티 무결성: 엔터티 무결성은 각 행을 고유하게 식별할 수 있도록 테이블의 기본 키에 대한 제약 조건입니다.
    기본 키는 각 행을 고유하게 식별하기 위해 NULL 값이나 중복 값을 허용하지 않습니다.

  • 참조 무결성: 참조 무결성은 외래 키를 사용하여 두 테이블 간의 관계를 정의할 때 적용되는 제약 조건입니다.
    참조 무결성은 외래 키가 참조하는 기본 키 값이 항상 존재하도록 합니다.
    즉, 참조되는 테이블의 기본 키 값이 변경되거나 삭제되면 참조되는 테이블의 외래 키 값도 변경되거나 삭제되어야 합니다.

  • 도메인 무결성:도메인 무결성은 주어진 컬럼의 값이 해당 컬럼의 데이터 타입, 길이, 범위 등에 적합한지를 검증하는 제약조건이다.
    예를 들어, 나이 열에는 양의 정수만 필요하고 이메일 열에는 이메일 형식과 일치하는 문자열만 입력되도록 규칙을 정의할 수 있습니다.

  • 맞춤형 무결성: 사용자 지정 무결성은 필요에 따라 데이터베이스 디자이너 또는 관리자가 정의한 추가 제약 조건입니다.
    예를 들어 급여 열의 값이 최저 급여와 최고 급여 사이에 있어야 하거나 직원의 퇴사 날짜가 채용 날짜 이후여야 한다는 규칙을 지정할 수 있습니다.

2-2 데이터베이스의 단점

  • 소송 비용: 데이터베이스 시스템을 구축하고 유지하는 데는 많은 비용이 듭니다.
    특히 많은 양의 데이터를 관리할 때 강력한 서버와 저장 장치가 필요하므로 비용이 추가로 증가할 수 있습니다.

  • 복잡성: 데이터베이스 시스템은 많은 기능과 기술을 제공하기 때문에 시스템 설계 및 관리에 복잡성이 발생합니다.
    이 때문에 데이터베이스 관리자(DBA)의 역할은 전문적인 지식과 경험이 필요하기 때문에 중요해질 수 있습니다.

  • 보안 위반: 데이터베이스는 중요한 데이터가 수집되는 곳이기 때문에 해커의 표적이 될 수 있습니다.
    따라서 데이터베이스 보안에 주의를 기울여야 하며 지속적인 보안 업데이트 및 관리가 필요합니다.

3. 데이터베이스의 종류

  • 관계형 데이터베이스(RDBMS): 데이터를 테이블 형태로 저장하고 관련 데이터를 관계를 통해 처리하는 데이터베이스. Oracle, MySQL, SQL Server 및 PostgreSQL이 그 예입니다.

  • 객체 지향 데이터베이스(OODBMS): 객체지향 프로그래밍 개념을 적용한 데이터베이스로 복잡한 데이터 구조 표현에 유리하다.

  • NoSQL 데이터베이스: 관계형 데이터베이스의 한계를 극복한 듯 보였던 데이터베이스로서 분산처리와 대용량 데이터 처리에 강점을 가지고 있다.
    MongoDB, Redis 및 Cassandra가 그 예입니다.

4. 데이터베이스 설계

데이터베이스 설계는 데이터베이스의 구조와 관계를 정의하는 프로세스입니다.
효율적인 데이터베이스 디자인은 데이터 일관성, 무결성, 검색 속도 및 확장성을 높일 수 있습니다.

데이터베이스 디자인 코스주로 다음 단계를 포함합니다.

  1. 요구 사항 수집 및 분석: 데이터베이스 설계의 초기 단계로 데이터베이스에서 처리할 정보 및 기능에 대한 사용자 및 기타 이해 관계자의 요구 사항을 수집하고 분석합니다.

  2. 컨셉 디자인: 요구사항을 기반으로 데이터베이스의 전체적인 구조와 관계를 추상적으로 표현하는 과정입니다.
    엔터티-관계 모델과 같은 도구는 데이터베이스의 개념적 구조를 나타내기 위해 이 단계에서 자주 사용됩니다.

  3. 논리적 설계: 개념 설계를 구체화하여 특정 DBMS(데이터베이스 관리 시스템)에 적합한 형태로 변환하는 과정입니다.
    이 단계는 테이블, 열, 데이터 유형 및 제약 조건과 같은 세부 정보를 정의하고 정규화를 수행하여 중복 및 이상을 제거합니다.

  4. 물리적 디자인: 논리적 설계를 바탕으로 실제 데이터베이스 시스템에 구현할 수 있는 물리적 구조를 설계하는 과정입니다.
    이 단계에서는 인덱스, 클러스터 및 파티셔닝과 같은 성능 향상 기술을 적용하고 스토리지 및 메모리 구성을 계획합니다.

  5. 구현 및 테스트: 물리적 설계를 기반으로 데이터베이스를 구축하고 테스트를 통해 성능과 무결성을 검증하는 단계. 문제가 발견되면 이전 단계로 돌아가 문제를 해결하고 최적화를 계속하십시오.

  6. 유지: 운영 중 데이터베이스를 지속적으로 모니터링하고 필요에 따라 최적화, 백업, 복원 등의 작업을 수행합니다.
    데이터베이스의 성능과 안정성을 유지하고 변화나 새로운 요구사항에 대응하기 위해 데이터베이스를 관리하고 업데이트하는 단계입니다.

4-1 데이터베이스 설계 프로세스 요약

  1. 요구 사항 수집 및 분석 (요구사항 수집 및 분석)

  2. 컨셉 디자인 (컨셉 디자인)

  3. 논리적 설계 (논리적 설계)

  4. 물리적 디자인 (물리적 디자인)

  5. 구현 및 테스트 (구현 및 테스트)

  6. 유지 (유지)

이와 같이 데이터베이스 설계는 사용자의 요구를 충족하는 효율적이고 유지하기 쉬운 구조를 만드는 과정입니다.
각 단계에서 성능과 안정성을 최적화하기 위해 데이터베이스의 구조와 관계를 정의하는 데 서로 다른 도구와 기술이 사용됩니다.

5. 거래

트랜잭션은 데이터베이스의 논리적 작업 단위입니다.

트랜잭션은 여러 데이터베이스 작업(예: INSERT, UPDATE, DELETE 등)에 걸쳐 있을 수 있으며 모든 작업이 성공적으로 완료되거나 모두 중단되어야 하는 원자성을 나타냅니다.

트랜잭션의 주요 기능(해당 속성의 첫 글자를 따서 만든 약자) 속성으로 요약할 수 있습니다.

  • 원자성트랜잭션은 여러 데이터베이스 작업으로 구성될 수 있으며 원자성은 이러한 모든 작업이 성공적으로 완료되어야 하거나 하나라도 실패하면 전체가 중단되어야 함을 의미합니다.
    즉, 거래는 “전부 아니면 전무” 원칙을 따라야 합니다.

  • 일관성: 일관성은 데이터베이스가 트랜잭션 실행 전후에 일관된 상태를 유지해야 함을 의미합니다.
    트랜잭션 실행은 데이터베이스 무결성 제약 조건이나 데이터 일관성을 위반해서는 안 됩니다.

  • 격리: 격리는 동시에 실행되는 여러 트랜잭션이 서로 영향을 미치지 않아야 함을 의미합니다.
    즉, 각 트랜잭션은 독립적으로 실행되어야 하며 한 트랜잭션의 중간 결과가 다른 트랜잭션에 영향을 미치지 않아야 합니다.

  • 내구성: 지속성은 트랜잭션의 결과가 성공적으로 완료된(커밋) 후 데이터베이스에 영구적으로 저장되어야 함을 의미합니다.
    즉, 커밋된 트랜잭션의 결과는 시스템 장애가 발생하더라도 보존되어야 합니다.

ACID 특성을 만족하는 트랜잭션 처리는 데이터베이스의 일관성, 안정성, 동시성 문제를 최소화하여 사용자에게 안정적인 데이터 관리 환경을 제공합니다.