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