파이썬을 저번 주 화요일(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년 이상 사용자와 긴밀히 협력해 개발한 여러 기능이 포함되어 있음.
'Networks > MySQL&DB' 카테고리의 다른 글
SK networks AI Camp - DB 명령어 (2) | 2024.07.20 |
---|---|
SK networks AI Camp - MySQL & DBeaver설치 (0) | 2024.07.19 |
SK networks AI Camp - 데이터 베이스 정규화 (0) | 2024.07.18 |
SK networks AI Camp - 데이터 모델링 & ERD (1) | 2024.07.18 |