본문 바로가기
개발

[MySQL] 챕터 1. DBMS 개요와 MySQL 소개

by jwcs 2024. 2. 26.
728x90

1.1 DBMS 개요

1.1.1 데이터베이스의 정의와 특징

 데이터베이스는 구조화된 데이터의 집합으로, 데이터를 효율적으로 저장, 검색, 관리할 수 있도록 돕는 시스템이다. 또한, 데이터베이스는 여러 명의 사용자나 응용 프로그램이 공유하고 동시에 접근이 가능해야 한다.

 데이터베이스는 다음과 같은 특징을 가진다

  • 데이터 무결성: 데이터 무결성은 데이터의 정확성, 일관성 및 신뢰성을 보장하는 것을 말한다. 데이터베이스는 데이터 무결성을 유지하기 위해 여러 제약 조건을 사용한다. 기본 키 제약, 외래 키 제약, 유니크 제약 등이 이에 해당한다. 이러한 제약 조건들은 데이터가 데이터베이스에 입력, 수정, 삭제될 때 정해진 규칙을 따르도록 함으로써 오류를 최소화하고 데이터의 정확성을 유지한다
  • 데이터 독립성: 데이터 독립성은 데이터베이스의 구조가 응용 프로그램의 구조와 독립적으로 변경될 수 있는 능력을 의미한다. 데이터 독립성은 두 가지 유형으로 나뉜다. 논리적 데이터 독립성과 물리적 데이터 독립성이다. 논리적 데이터 독립성은 응용 프로그램을 수정하지 않고도 데이터베이스의 논리적 구조를 변경할 수 있음을 의미하며, 물리적 데이터 독립성은 물리적 저장소 구조의 변경이 응용 프로그램이나 데이터베이스의 논리적 구조에 영향을 미치지 않음을 의미한다.
  • 보안: 데이터베이스 보안은 무단 접근, 사용, 공개, 파괴로부터 데이터를 보호하는 것을 말한다. 데이터베이스 관리 시스템은 사용자 인증, 역할 기반의 접근 제어, 데이터 암호화 등 다양한 보안 기능을 제공하여 데이터의 기밀성, 무결성 및 가용성을 보장한다.
  • 데이터 중복의 최소화: 데이터베이스는 데이터의 중복을 최소화하여 데이터 저장 공간을 효율적으로 사용하고, 데이터 불일치의 가능성을 줄인다. 정규화 과정을 통해 데이터베이스를 설계함으로써 중복을 제거하고, 데이터의 일관성과 무결성을 유지할 수 있다.
  • 응용 프로그램 제작 및 수정의 용이성: 데이터 독립성과 데이터 베이스 관리 시스템의 고급 기능 덕분에, 응용 프로그램의 개발과 수정이 더욱 용이해진다. 개발자들은 데이터 구조의 복잡성을 신경 쓰지 않고도 데이터를 효율적으로 관리하고 활용할 수 있는 다양한 도구와 인터페이스를 이용할 수 있다.
  • 데이터 안정성 향상: 데이터베이스는 데이터를 안전하게 보관하고, 시스템 장애나 데이터 손상이 발생했을 때 데이터를 복수할 수 있는 메커니즘을 제공한다. 백업 및 복구 전략, 트랜잭션 관리, 롤백과 롤포워드 기능을 통해 데이터 안정성을 높이고, 데이터 손실의 위험을 최소화한다.

1.1.2 데이터베이스의 발전

  • 오프라인으로 데이터 관리: 최초의 데이터 관리는 전적으로 오프라인에서 관리됐다. 주로 종이에 적어서 관리했다. 아직도 수기로 적어서 관리하는 회사가 존재한다
  • 파일 시스템의 사용: 컴퓨터 기술의 발전과 함께 데이터 관리는 종이에서 디지털 형태로 발전했다. 주로 메모장이나 엑셀을 활용하여 저장해왔다.
  • 데이터베이스 관리 시스템의 도입: 데이터 관리의 복잡성과 한계를 극복하기 위해 데이터베이스 관리 시스템(DBMS)가 개발됐다. DBMS는 데이터의 중앙 집중식 관리를 가능하게 하여 데이터 중복을 최소화하고, 데이터 무결성과 일관성을 유지할 수 있도록 지원한다. 또한, 다양한 사용자와 응용 프로그램이 동시에 데이터에 접근할 수 있도록 동시성 제어를 제공한다.

1.1.3 DBMS 분류

데이터베이스는 여러 유형을 가진다. 현재는 관계형 DBMS가 가장 많은 부분을 차지하고 있다.

  • 계층형 DBMS: 계층형 DBMS는 데이터를 트리 구조로 조직화하여 관리하는 시스템입니다. 이 구조에서는 각 레코드가 하나 이상의 자식 레코드를 가질 수 있지만, 단 하나의 부모 레코드만을 가질 수 있다.
    • 데이터는 부모/자식 관계를 통해 계층적으로 관리된다. 경로를 따라 데이터를 쉽게 검색할 수 있으나, 구조가 고정되어 있어 유연성이 떨어진다.
    • 구조 변경이 어렵고, 다양한 관계를 표현하는 데 한계가 있다.
    • 계층을 잘 나타내는 조직도를 저장할 때 쓰일 수 있다
  • 망형 DBMS: 망형 DBMS는 데이터 항목들이 그래프 구조를 통해 서로 연결되는 방식으로 데이터를 조직화한다.
    • 레코드 간에 복잡한 관계를 나타낼 수 있으며, 하나의 레코드가 여러 개의 부모 레코드를 가질 수 있다.
    • 계층형 DBMS보다 유연하지만, 구조가 복잡하여 관리와 이해가 어려울 수 있다.
    • 데이터 검색과 연결이 효율적이지만, 설계와 구현이 복잡하다
    • 관계가 복잡한 전자 부품 관리에 쓰일 수 있다
  • 관계형 DBMS: 관계형 DBMS는 데이터를 테이블 형태로 저장하며, 테이블 간의 관계를 통해 데이터를 조직화하는 시스템이다. 각 테이블은 행(레코드)과 열(속성)로 구성되며, SQL을 사용하여 데이터를 관리한다.
    • 데이터의 논리적 구조와 물리적 구조가 분리되어 있어 유연성이 높다
    • 데이터 무결성을 보장하기 위한 다양한 제약 조건을 설정할 수 있다
    • 광범위한 응용 프로그램에서 사용되며, 현재 가장 널리 사요되는 DBMS 유형이다
    • 고객 관리 시스템에 쓰일 수 있다.

주로 관계형 DBMS가 쓰이지만, 특정한 구조적 요구 사항이 있는 경우 여전히 유용하다.

 

1.1.4 SQL 개요

SQL은 RDBMS에서 데이터를 관리하기 위해 사용되는 표준화된 프로그래밍 언어이다. SQL은 관계형 데이터베이스에서 데이터를 정의, 조작, 제어하는 데 사용되며, 그 사용 용도에 따라 DDL(Data Definition Language), DML(Data Manipulation Language), DCL(Data Control Language) 등으로 분류된다.

 

  • DBMS 제작 회사와 독립적이다: SQL은 ANSI(American National Standards Institute)에 의해 표준화된 언어이다. 이는 SQL이 특정 데이터베이스 제조업체에 종속되지 않고, 다양한 데이터베이스 시스템에서 사용될 수 있음을 의미한다. 따라서 개발자들은 데이터 베이스 제조업체를 변경하더라도 동일한 SQL 쿼리를 사용하여 데이터베이스 작업을 수행할 수 있다.
  • 다른 시스템으로의 이식성이 좋다: SQL의 표준화는 다양한 시스템과 환경에서의 높은 이식성을 가능하게 한다.
  • 표준이 계속 발전한다: SQL 표준은 지속적으로 발전하고 있다. 새로운 기능과 개선 사항이 지속적으로 추가되고 있다. 이는 기술의 변화에 적응하고 있다는 뜻이다.
  • 대화식 언어이다: SQL은 사용자가 직접 쿼리를 작성하고 실행할 수 있는 대화식 언어이다. 컴파일 및 디버깅의 단계를 거치지 않아도 된다. 따라서 질의에 대한 즉각적인 피드백을 받을 수 있다. 이러한 특성은 데이터베이스 관리 및 분석 작업을 수행할 때 매우 유용하다.
  • 분산형 클라이언트/서버 구조이다: SQL은 클라이언트/서버 구조를 지원한다. 다시 말해, 클라이언트가 질의하면 서버에서 이를 해석한다. 다수의 사용자들이 공동으로 열람, 복사, 수정, 관리하는 데이터를 여러 곳에 분산시키지 않고 단일한 중앙 서버에 저장하여 관리함으로써 데이터의 유일성과 통일성을 보장할 수 있다.

1.2 MySQL 소개

1.2.1 MySQL 개요

MySQL은 가장 인기있는 오픈 소스 RDBMS이다. MySQL은 그 사용의 용이성, 신뢰성, 그리고 오픈 소스로서의 무료 이용 가능성 때문에 소규모 프로젝트부터 대규모 엔터프라이즈 애플리케이션까지 다양한 곳에서 선택되고 있다.

 

1.2.2  변천사

  • 1995년: 스웨덴의 MySQL AB회사에 의해 처음 개발됐다
  • 2008년: Sun Microsystems이 MySQL AB를 인수했다
  • 2010년: Oracle Corporation이 Sun Microsystems을 인수하면서 MySQL도 Oracle의 제품 포트폴리오에 포함됐다.
  • 오픈 소스 라이선스 변경: Oracle 인수 후, MySQL의 오픈 소스 라이선스 정책과 개발 방향에 대한 커뮤니티 내 우려가 커졌고, 이에 따라 MariaDB와 같은 포크 버전이 등장하기 시작했다.

1.3 MySQL 에디션

다음과 같은 주요 에디션으로 제공된다.

  • Community Edition
    • 무료로 제공되는 버전
    • 기본적인 RDBMS 기능
    • 트랜잭션 지원
    • 다양한 스토리지 엔진 지원
  • Standard Edition
    • Coummunity Edition의 모든 기능
    • 기술 지원
    • 데이터베이스 모니터링 도구
  • Enterprise Edition
    • Standard Edition의 모든 기능
    • 고급 보안 기능
    • 고급 백업 기능
    • 데이터베이스 감사
    • 성능 모니터링 및 분석 도구
  • MySQL Cluster CGE
    • 분산 데이터베이스 지원
    • 거의 실시간의 데이터베이스 처리
    • 높은 가용성과 확장성

 

728x90
반응형

'개발' 카테고리의 다른 글

[MySQL] 챕터 4. 데이터베이스 모델링  (0) 2024.02.29
[MySQL] 챕터 3. MySQL 전체 운영 실습  (1) 2024.02.28
[Node.js] 로그인, 회원가입 기능 구현  (0) 2024.02.18
[Node.js] 8장  (0) 2024.02.16
[Node.js] 7장  (0) 2024.02.16