Networks/MySQL&DB

SK networks AI Camp - MySQL

코딩하는 Español되기 2024. 7. 18. 08:00

파이썬을 저번 주 화요일(7/9)부터 시작해서 어제(7/16) 마무리했어요.

이제는 데이터베이스 파트로 교육을 넘어가요.

이제 데이터 부분에 대해서 포스팅해 볼게요.

 

데이터(Data)란?

데이터의 종류는 3가지로 나눌 수 있다. 정형/반정형/비정형 데이터로 구성되어 있어요.

○ 스키마(Schema) :

   데이터의 구조와 제약 조건에 대한 것들을 정의한 것(; 정형/반정형/비정형을 나누는 조건)

○ 정형 데이터(Structured Data)

: 고정된 필드(스키마를 철저히 따른)에 저장된 데이터

 e.g. 관계형 데이터 베이스, 스프레드시트(엑셀) 등

○ 반정형 데이터(Semi-Structured Data)

: 고정된 필드에 저장되어 있지는 않지만, 메타데이터나 스키마 등을 포함하는 데이터

 e.g. XML, HTML, JSON, 이메일 등 

○ 비정형 데이터(Unstructured Data)

: 고정된 필드에 저장되어 있지 않은 데이터

 e.g. Text, Image, Video, Voice Data


데이터베이스(DB; Database)

: 한 마디로 '데이터의 집합'

  일상생활 대부분의 정보가 저장되고 관리. 보내거나 받은 카카오톡 메시지, 인스타그램에 저장한 사진 등 모두 기록

○ 데이터 베이스 특징

  ● 실시간 접근성(Real Time Accessibility) : 사용자 질의에 대해 즉시 처리하여 응답

  ● 계속적인 진화(Continuous Evolution) : 삽입, 삭제, 갱신 등을 통해 항상 최근의 정확한 데이터를 동적 관리   

  ● 동시 공유(Concurrent Sharing) : 여러 사용자가 동시에 원하는 데이터를 공유할 수 있는 특징
  ● 내용에 의한 참조(Content Reference) : DB에 있는 데이터를 참조할 때 튜플의 주소나 위치가 아닌 사용자가 요구하는

                                                                    데이터의 내용에 따라 참조
  ● 논리적 독립성(Independence) : 응용프로그램과 DB를 독립시켜 데이터 논리적 구조를 변경시키더라도 응용프로그램

                                                        변경이 안됨


데이터베이스 관리 시스템(DBMS; Database Management System)

: DB를 조작하는 별도의 소프트웨어

  DBMS를 통해 DB를 관리하여 응용 프로그램들이 DB를 공유하고 사용할 수 있는 환경을 제공

○ DBMS의 기능

  ● 정의 : 데이터에 대한 형식, 구조, 제약조건들을 명세하는 기능

  ● 구축 : DBMS가 관리하는 기억 장치에 데이터를 저장하는 기능

  ● 조작 : 특정한 데이터를 검색하기 위한 질의, DB 갱신, 보고서 생성 기능 등을 포함

  ● 공유 : 여러 사용자와 프로그램이 DB에 동시 접근하도록 하는 기능

  ● 보호 : 하드웨어나 소프트웨어 오작동 또는 권한 없는 악의적인 시스템으로부터 보호

  ● 유지보수 : 시간이 지남에 따라 변화하는 요구사항을 반영할 수 있도록 하는 기능

○ DBMS 유형

  ● Relational DBMS(RDBMS)

     : RDBMS는 RDB(관계형 데이터베이스)를 관리하는 시스템

       RDB를 통해 테이블을 조인하여 정보 간 관계 또는 링크를 설정할 수 있는 기능이 있어, 여러 데이터 포인트 간의
       관계를 쉽게 이해하고 정보를 얻을 수 있다.

       * RDB: 테이블, 행, 열의 정보를 구조화하는 방식

       * 종류 : Oracle, MySQL, PostagreSQL 등

   ● NoSQL DBMS

      : NoSQL은 비관계형 DB를 지칭.

        즉, 관계형 데이터 모델을 지양하며 대량의 분산된 데이터를 저장하고 조회하는데 특화

        스키마 없이 사용 가능하거나 느슨한 스키마를 제공하는 저장소

        * 종류 : MongoDB, Hbase, DynamoDB 등

○ RDB vs NoSQL DB

SQL NoSQL
관계형 비관계형
구조화된 쿼리 언어 사용
미리 정의된 스키마 보유
비정형 데이터에 대한 동적 스키마 보유
수직 확장이 가능 Scale up 수평 확장이 가능 Scale out
테이블 기반 Document, 키-값, 그래프 또는 와이드 칼럼 저장소
다중 레코드 트랜잭션에 좋음 문서 | JSON 같은 비정형 데이터에 좋음
다중 레코드 ACID 트랜잭션을 지원 다중 레코드 ACID 트랜잭션을 지원하지 않음
(MongoDB 같은 일부는 지원)

데이터 모델링 & ERD

(데이터 모델링과 ERD 표기법등에 관한 추가 내용은 따로 포스팅하겠습니다~)

2024.07.17 - [분류 전체보기] - SK networks AI Camp - 데이터 모델링 & ERD

 

○ 데이터 모델링 :

                            - 정보시스템 구축의 대상이 되는 업무 내용을 분석해 이해하고 약속된 표기법에 의해 표현하는 것

                            - 분석된 모델을 가지고 실제 DB를 생성해 개발 및 데이터 관리에 사용

                            - 특히 데이터를 추상화한 데이터 모델은 DB의 골격을 이해하고 그 이해를 바탕으로 SQL 문장을

                              기능과 성능적인 측면에서 효율적으로 작성 가능하기에 DB모델링은 DB 설계의 핵심과정

○ 데이터 모델링 순서

1. 업무파악(요구사항 수집 및 분석)

    : 어떤 업무를 데이터화해 모델링할 것인지에 대한 요구사항 수집

      업무파악을 하기 좋은 방법으로는 UI를 의뢰인과 함께 확인해 나가는 것

      궁극적으로 무엇을 만들 것인지 심도 있게 알아봐야 함.

2. 개념적 데이터 모델링(ERD 작성)

    : Entity를 도출하고 ERD를 작성하는 단계

3. 논리적 데이터 모델링

    : ERD를 사용할 특정 DBMS의 논리적 자료구조에 맞게 사상(Mapping)하는 과정

      e.g. RDBMS를 사용한다면, ERD를 RDB로 사상. 테이블 설계와 정규화도 이 단계에서 이루어짐

4. 물리적 데이터 모델링

    : 최종적으로 데이터를 관리할 DB를 선택하고, 선택한 DB에 실제 테이블을 만드는 작업

○ 정리

○ ERD

   : Entity-Relation Diagram(개체-관계 다이어그램)의 준말.

     DB 설계 단계에서 맨 처음 단계인 개념적 모델링 단계에서 ERD 작성

     * Entity(개체) : 현실에 존재하는 개별적으로 식별할 수 있는 물리적 또는 추상적인 개체

        - 각 Entity는 특징을 나타낼 수 있는 Attribute(속성)들을 가지고 있음

        - e.g. '학생'이라는 Entity는 '학번', '학생 이름' 등의 Attribute를 가질 수 있음

     * ER(개체-관계) 모델: Entity 사이의 Relation(관계)를 통해 현실세계를 표현하기 위한 설계 방식

     * e.g. '학생'과 '수업' Entity 끼리는 '수강하다'라는 관계를 맺을 수 있다.

 


DB 정규화

: DB 설계에서 데이터 중복을 최소화하게 데이터를 구조화하는 프로세스

  목표는 이상이 있는 관계를 재구성해서 작고 잘 조직된 관계를 생성하는 것

○ SQL(Structured Query Language)

: DB에 접근하고 조작하는 언어

    ● DDL(Data Definition Language) : DB와 테이블을 정의, 수정, 삭제하는 문구

    ● DML(Data Manipulation Language) : 테이블의 데이터를 삽입, 조회, 수정, 삭제하는 문구

    ● DCL(Data Control Language) : 데이터의 보안, 무결성, 회복 등을 제어하는 구문

○ MySQL

  : 오픈소스 관계형 DBMS

    사용자는 SQL이라는 구조화된 쿼리 언어를 사용해 데이터를 정의, 조작, 제어, 쿼리 가능

    오픈소스이므로 25년 이상 사용자와 긴밀히 협력해 개발한 여러 기능이 포함되어 있음.