[프로그래밍] DataBase

[DataBase] DBMS

JHVan 2024. 5. 9. 12:08

DBMS (Database Management System)

 

데이터를 효율적으로 저장, 검색, 갱신 및 관리할 수 있게 해주는 소프트웨어 시스템이다.

MySQL, PostgreSQL, Oracle, Microsoft SQL Server, MongoDB 등이 있으며, 각각은 구조화된 데이터, 대량의 데이터 관리, 고속 처리 등 특정 요구 사항을 충족시키기 위해 설계되었다.

 

주요 기능과 특징

 

데이터 추상화

  • 사용자가 데이터의 물리적 저장 위치나 복잡한 저장 세부 정보를 몰라도 데이터를 처리할 수 있다.

데이터 독립성

  • 데이터의 물리적 저장 구조가 변경되어도 응용 프로그램에 영향을 주지 않다.

데이터 보안

  • 사용자 인증 및 권한 부여를 통해 데이터에 대한 접근을 제어하며, 무단 접근으로부터 데이터를 보호한다.

데이터 무결성

  • 데이터베이스 내의 데이터가 항상 정확하고 일관된 상태를 유지하도록 규칙과 제약 조건을 설정한다.
데이터 무결성
데이터베이스 내의 데이터가 정확하고 일관성 있으며 
신뢰할 수 있는 상태를 유지하는 것
데이터 무결성을 확보하는 것은 데이터베이스 관리의 핵심 요소

개체 무결성(Entity Integrity)
모든 테이블이 고유한 키(primary key)를 가지고 있어야 하며, 
이 키의 값은 고유하고 null이 될 수 없다는 것을 보장 
이를 통해 각 행의 데이터가 유일하게 식별될 수 있다.

참조 무결성(Referential Integrity)
외래 키(foreign key)를 사용하여 서로 다른 테이블 간의 관계를 정의할 때, 
참조되는 테이블의 기본 키 값만 참조할 수 있도록 한다.
데이터 간의 일관된 관계를 유지하는 데 중요

도메인 무결성(Domain Integrity)
테이블의 각 필드가 정의된 도메인(유효 값의 집합)에 속한 값만을 가질 수 있다.
데이터 타입, 데이터의 길이, 가능한 값의 범위 등을 제한하여 데이터의 정확성을 보장

사용자 정의 무결성(User-Defined Integrity)
특정 애플리케이션의 요구 사항에 맞게 사용자가 정의하는 무결성 규칙
비즈니스 규칙이 데이터베이스 수준에서도 반영되도록 한다.

데이터 백업 및 복구

  • 데이터 손실이 발생할 경우를 대비하여 데이터를 정기적으로 백업하고, 필요 시 복구할 수 있는 기능을 제공한다.

동시성 제어

  • 여러 사용자가 동시에 데이터베이스에 접근할 때 발생할 수 있는 충돌을 관리하고, 데이터 일관성을 유지한다.

트랜잭션 관리

  • 데이터베이스 작업을 트랜잭션 단위로 관리하여, 작업이 완전히 성공하거나 실패했을 때 데이터의 일관성을 보장한다.

RDBMS (Relational DBMS)

 

관계형 데이터베이스를 생성, 관리, 조작하기 위한 시스템.

관계형 데이터베이스는 데이터를 테이블로 구성하고, 이 테이블들 사이의 관계를 통해 데이터를 관리한다.

대표적인 RDBMS 예로는 Oracle, MySQL, Microsoft SQL Server, PostgreSQL 등이 있다.

 

RDBMS의 주요 특징

 

테이블 기반 구조 

  • 데이터는 행과 열로 구성된 테이블에 저장된다.
  • 각 행은 고유한 데이터 레코드를 나타내고, 각 열은 해당 레코드의 속성을 나타낸다.

데이터 무결성 

  • RDBMS는 데이터 무결성을 유지하기 위한 다양한 제약 조건(기본 키 제약 조건, 외래 키 제약 조건 등)을 제공한다.

SQL 사용 

  • SQL(Structured Query Language)은 RDBMS에서 데이터를 관리하기 위해 사용되는 표준적인 언어이다.
  • SQL을 사용하여 데이터를 삽입, 조회, 수정, 삭제할 수 있다.

트랜잭션 관리 

  • RDBMS는 데이터베이스 내에서 수행된 작업들이 완전하고 정확하게 처리되도록 트랜잭션 기능을 제공한다.

보안 

  • 사용자 권한 관리와 데이터 액세스 제어를 통해 데이터 보안을 제공한다.

백업 및 복구 

  • 데이터의 정기적인 백업 및 필요 시 복구를 지원한다.

대표적인 RDBMS

  • 썬 마이크로시스템즈에서 개발
  • LAMP (Linux, Apache, MySQL, PHP/Perl/Python) 스택의 주요 구성 요소
  • MySQL은 GPL(General Public License)에 따라 배포되므로 무료로 사용할 수 있다.
  • 상업적으로 사용하려는 경우에는 상업 라이선스를 구매해야 한다.
  • 다양한 운영 체제에서 실행될 수 있으며, Linux, Windows, macOS 등 주요 플랫폼을 지원
  • MySQL은 다양한 스토리지 엔진을 지원, 사용자가 특정 작업에 가장 적합한 스토리지 엔진을 선택할 수 있게 해줌

  • MariaDB는 MySQL과의 호환성을 중요시하며, MySQL 대비 몇 가지 주요한 개선 사항을 포함
  • MariaDB는 MySQL과의 높은 호환성을 유지하며, MySQL에서 바로 MariaDB로의 전환을 쉽게 할 수 있도록 설계
  • Aria, ColumnStore와 같은 다양한 저장 엔진을 통한 최적화와 확장성 향상
  • 오픈 소스 커뮤니티에 의해 관리

ORACLE

  • 엔터프라이즈 환경에서 복잡한 데이터 관리 요구를 충족시키도록 설계되었으며, 대규모 데이터베이스와 트랜잭션 처리에 매우 강력하다.
  • 금융, 제조, 소매 등 다양한 산업 분야에서 고객 정보, 재고 관리, 온라인 트랜잭션 처리 등의 중요한 데이터를 관리하는 데 널리 사용된다.
  • 데이터 웨어하우스, 데이터 마이닝, 분산 데이터베이스, 고가용성 구성(예: 오라클 리얼 애플리케이션 클러스터 (RAC)) 등의 고급 기능을 지원한다.
  • 클라우드 환경에서의 사용을 위해 Oracle Cloud에서 제공되며, 클라우드 전환을 지원하는 다양한 도구와 서비스를 제공한다.

MSSQL

  • Microsoft 개발
  • Windows뿐만 아니라 Linux와 Docker 컨테이너에서도 실행 가능
  • T-SQL(Transact-SQL)을 주요 쿼리 언어로 사용하며, .NET 프레임워크와의 통합을 통해 다양한 프로그래밍 언어로 데이터베이스 애플리케이션을 개발할 수 있음
  • Azure SQL Database와의 높은 호환성을 제공하여, 온프레미스와 클라우드 환경 간의 데이터 마이그레이션이 용이
  • SQL Server Integration Services(SSIS), SQL Server Reporting Services(SSRS), SQL Server Analysis Services(SSAS) 등 다양한 도구를 제공하여 데이터 통합, 분석 및 보고 기능을 지원

 

 

'[프로그래밍] DataBase' 카테고리의 다른 글

[DataBase] 무결성  (0) 2024.05.12
[DataBase] Key  (0) 2024.05.11
[DataBase] DataBase Table  (0) 2024.05.10
[DataBase] Schema  (0) 2024.05.09
[DataBase] DataBase?  (0) 2024.05.08