티끌모아 태산

데이터베이스 기본 개념(1) 본문

CS 지식/데이터베이스

데이터베이스 기본 개념(1)

goldpig 2023. 9. 5. 22:32
728x90

  우선, 앞으로 데이터베이스에 대해서 배워 볼건데, 그 전에 우리가 데이터베이스를 왜 사용하는지 알아야한다. 가령, 엑셀에 데이터를 저장하면 안되냐는 할 수 있는데 엑셀에 어느정도 데이터를 저장할 수 있지만, 저장하는 데이터의 양이 굉장히 많이 늘어난다면 엑셀을 켜는데도 시간이 오래 걸릴것이고, 그 많은 데이터 중에서도 내가 원하는 데이터를 찾고, 수정하고, 삭제하는 등의 작업이 굉장히 느릴 수있다. 하지만 데이터 베이스를 사용한다면 앞서 말했던 속도 문제가 해결될 수 있으며 데이터를 더 체계적으로 그리고 효율적으로 관리(데이터 중복 최소화, 보안성 유지, 데이터 공유 등)할 수 있기때문에 데이터베이스를 사용하는 것이다.

1. DB & DBMS & DB system

database(db)

  ⭐️데이터베이스란 전자적으로(eletronically) 저장되고 사용되는 관련있는(related) 데이터들의 조직화된 집합(organized collection)의미한다. 여기서 전자적이라는 말은 말그대로 컴퓨터상에서 저장되고 사용된다는 의미이고 관련있는 데이터 또한 유사 혹은 서로 같은 출처, 목적, 카테고리가 같은 등의 뜻이며 조직화된 집합이란 예를들어, 책을 정리정돈 되지 않은 상태로 놓으면 어떤 책을 찾을 때 찾기 힘들기 때문에 정리 정돈된 데이터들의 집합이라 생각하면 좋다.

database management systems

  ⭐️DBMS란 사용자들이 DB를 정의하고 만들고 관리하는할 수 있도록 기능(추가, 수정, 삭제, 등)을 제공하는 소프트웨어 시스템을 말한다. 간단히 데이터베이스 프로그램이다. 대표적으로 PostgreSQL, mySQL, ORACLE 등이 있다. 이때, DB를 정의하다 보면 부가적인 데이터가 발생한다. 이때 부가적인 데이터를 메타 데이타 라고 한다. ⭐️즉, 데이터를 설명하기 위한, 데이터의 정보를 담고 있는 데이터를 의미한다. 예를들어, 이미지 데이터가 있으면 이 이미지를 설명하는 데이터 즉, 어떤 유형인지, 찍은 날짜, 포맷 등이 meta data에 해당한다. 따라서 데이터베이스에서 메타 데이터는 database를 정의하거나 기술(descriptive)하는 data이다. 예를들어, 데이터의 유형, 구조, 제약 조건, 인덱스, 사용자 그룹 등등이 이에 해당한다. 여기서 metadata DBMS를 통해 저장/관리 된다.

⭐️데이터 모델링이란 무엇인가? 복잡한 현실 세계의 데이터를 단순화해서 컴퓨터 세계의 데이터베이스로 변환하는 과정을 말한다.

database system

  데이터베이스 시스템이란 database + DBMS + 데이터베이스와 연관된 applications 을 통칭하는 언어라 볼 수 있다. 초기에는 database applications 들이 file system 위에 올려졌었다. 즉, 데이터를 저장하기 위해 파일 시스템을 사용. 하지만 데이터를 저장하는데 파일 시스템을 사용하는 것은 몇가지 단점이 있다.

  1. Data redundancy(데이터 중복)과 inconsistency(불일치)
  2. 데이터에 접근하는 것이 어려움
  3. integrity problem -> 데이터의 정확성, 일관성, 유효성의 문제
  4. Security problems(보안상의 문제)
  5. concurrent access by multiple users(여러 이용자의 동시 엑세스)

DBMS offers solutions to all the above problmes

*쿼리(Queries)란 데이터베이스에 접근해서 원하는 데이터를 가져오거나 원하는 형태로 데이터를 수정하는 요청이라고 생각하면 쉽다. 

데이터베이스 시스템의 전체적인 동작 방식은 다음과 같다.

  1. 백엔드에서 데이터베이스로 요청(쿼리)을 보낸다.
  2. DBMS가 그 쿼리를 받아서 우선, 그 쿼리가 무엇을 의미하는지 분석한 후 파악이 되면  요청을 처리한다.
  3. 그럼 요청을 처리하기 위해서는 그 데이터가 어떤 형태로 되어 있는지, 부가적인데이터 즉, 메타데이터를 확인한 후에 데이터를 찾아서 꺼내온다.
  4. 그렇게 꺼낸 데이터를 다시 Application Programs(백엔드)에 전달한다.

2. Data models

  데이터 모델이란 DB의 구조(structure), 예를들면 데이터 유형이나 데이터들 간의 관계(relationship), 제약 사항 등등 을 기술하는데 사용될 수 있는 개념들이 모인 집합을 의미한다. 이 데이터 모델은 DB의 구조를 원하는 형태로 추상화해서 표현할 수 있는 수단을 제공한다. 또한 이 모델은 여러 종류가 있으며 종류에 따라 추상화 수준과 DB 구조화 방식이 조금씩 다르다. 그리고 이 모델은 DB에서 읽고 쓰기 위한 기본적인 동작들(operations) 도 포함한다. 데이터 모델의 종류는 다음과 같다.

  • conceptual (or high-level) data models: 일반 사용자(개발자 + 비개발자)들이 쉽게 이해할 수 있는 개념들로 이루어진 모델이며, 추상화 수준이 가장 높다. 이 모델은 비즈니스 요구사항을 추상화하여 기술할 때 사용한다. 대표적으로 entity-relationship model
  • logical (or representational ) data models: 이해하기 어렵지 않으면서도 디테일하게 DB를 구조화 할 수 있는 개념들을 제공 데이터가 컴퓨터에 저장될 때의 구조와 크게 다르지 않게 DB 구조화를 가능하게 한다. 그리고 특정 DBMS나 storage에 종속되지 않는 수준에서 DB를 구조화할 수 있는 모델. 대표적으로 relational data model 이 있으며 가장 많이 사용한다. 오라클, mySQL, SQL Server 등등이 이 모델을 기반으로 하고 있고 PostgreSQL 은 object-relational data model로 relational 을 포함하고 있다. 

  • physical (or low-level) data models: 컴퓨터에 데이터가 어떻게 파일 형태로 저장되는지를 기술할 수 있는 수단을 제공한다. data format, data orderings, access path 등등 * access path: 데이터 검색을 빠르게 하기 위한 구조체, e.g.) index

3. Schema & state

Schema

  데이터베이스 스키마란 데이터 모델을 바탕으로 database의 구조를 기술(description)한 것. 스키마는 데이터베이스를 설계할 때 정해지며 한번 정해진 후에는 자주 바뀌지 않는다. 

데이터 베이스가 어떤식으로 이루어져 있는지 데이터베이스의 구조를 파악하는데 사용될 수 있다.

state

  데이터베이스 스테이트란 특정 시점에 database에 있는 데이터를 의미하고 snapshot이라고도 한다. 또 다른 말로 데이터베이스에 있는 현재 instances의 집합이라고도 한다. 데이터베이스에 있는 실제 데이터는 빈번하게 바뀔 수 있다.(추가, 수정, 삭제 등) 따라서 특정 시점에 있는 데이터베이스에 있는 데이터들을 state라고 한다. 

three-schema architecture (데이터 베이스 구조에서 중요)

출처: https://medium.com/nixis-institute/dbms-three-level-architecture-c96ba7a21f5b

  데이터베이스 시스템을 구축하는 아키텍처중 하나로 (보통은 이 구조를 따른다) user application으로 부터 물리적인 physical database를 분리시키는 목적이다. 즉, 유저 애플리케이션에는 영향을 미치지 않기 위해 분리시킨다. 그리고 이 아키텍처는 세가지 level이 존재하며 각각의 level마다 schema가 정의되어 있다. 결국에는 안정적으로 데이터베이스 시스템을 운영하기 위해서 사용되는 아키텍처로 각 레벨을 독립시켜서 어느 레벨에서의 변화가 상위 레벨에 영향을 주지 않기 위함이다. 대부분의 DBMS가 three level을 완벽하게 혹은 명시적으로 나누지는 않지만 어느정도 따르려고 하는 경향이 있다.

  1. external schemas (or user views ) at external level: 실제 사용자가 바라보는 스키마라고 생각하면 된다. 특정 유저들이 필요로 하는 데이터만 표현한다. 즉, 유저들이 필요로하는 데이터만 표현한다. 그 외에 알려줄 필요가 없는 데이터는 숨김. logical data model을 통해 표현
  2. conceptual schemas at conceptual level: 전체 database에 대한 구조를 기술하고 물리적인 저장 구조에 관한 내용은 숨긴다. 즉, entities, data types, relationships, user operations, constraints에 집중. logical data model을 통해 기술
  3. internal schemas at internal level: 물리적으로 데이터가 어떻게 저장되는지 physical data model을 통해 표현! 물리적인 저장 장치에 가장 가깝게 위치해 있는 스키마로 data storage, data structure, access path 등등 실체가 있는 내용 기술.

마지막으로 이 각각의 스키마들은 데이터의 구조를 표현하는 것이지 실제로 데이터가 존재하는 곳은 internal level에만 있다는 것을 기억하도록 하자.

4. database language

data definition language (DDL)

conceptual schema를 정의하기 위해 사용되는 언어로, internal schema까지 정의할 수 있는 경우도 있음. Language for defining the database structure

storage definition language (SDL)

internal schema를 정의하는 용도로 사용되는 언어로, 요즘은 특히 relational DBMS에서는 SDL이 거의 없고 파라미터 등의 설정으로 대체됨.

view definition language (VDL)

external schemas를 정의하기 위해 사용되는 언어로, 대부분의 DBMS에서는 DDL이 VDL 역할까지 수행한다.

data manipulation language (DML)

데이터 베이스에 있는 실제 데이터를 활용하기 위한 언어로, 데이터를 추가, 삭제, 수정, 검색 등등의 기능을 제공하는 언어이다.

 

하지만 오늘날의 DBMS에는 이렇게 DDL, SDL, VDL, DML 등 언어들이 따로 있다기 보다는 통합된 언어로 존재한다. 대표적인 예가 relational database language : SQL

 

지금까지 데이터베이스의 기본적인 개념에 대해서 알아보았습니다. 다음시간부터는 본격적으로 데이터 베이스의 개념들에 대해서 배워보도록 하겠다.

 

 

728x90