본문 바로가기

Major Study/25-1 Database

[Database] 01 데이터베이스 시스템

01 데이터베이스 개괄

데이터과학

데이터과학이란 데이터로부터 결과물을 만들어내는 것이다.

가능한 결과물에는 2종류가 있다.

 

1) 데이터로부터 '분석'을 통해서 과학적/산업적 의사결정 근거를 산출한다.

2) 데이터로부터 '모델링'을 통해서 인공지능 제품을 산출한다.

 

데이터과학 과정 (풀스택 4단계)

1. 데이터수집 : 통계조사, 센서 개발/측정, 웹 크롤링

2. 데이터 가공 및 보관 : 라벨링, 구조화, 데이터베이스

3. 분석 및 모델링 : 통계 분석, 시각화, 기계학습, 인공지능

4. 제품화 : 웹/앱 개발, 시스템 구축

 

데이터과학과 데이터베이스의 관계

- 데이터과학 :

1) 데이터로부터 '분석'을 통해서 과학적/산업적 의사결정 근거를 산출한다.

2) 데이터로부터 '모델링'을 통해서 인공지능 제품을 산출한다.

 

- 데이터베이스 :

데이터과학에서 데이터를 보관/관리/검색하는 세부 분야

 

02 데이터베이스 시스템

데이터베이스 시스템

- 데이터를 보관하고 관리하는 총체이다.

- 데이터베이스는 데이터베이스 시스템에서 보관되는 정보를 말하고,

- 데이터베이스 관리 시스템은 데이터베이스를 관리하는 소프트웨어(프로그램)이다.

 

- 데이터베이스는 데이터의 집합체이다.

- 데이텀 -> 데이터 -> 데이터셋으로 확장되고, 다수의 데이터셋은 데이터 모델로 서로 연결 되어서 데이터베이스가 되는 것이다.

 

데이터 구조 용어 

데이터 구조에는 비정형 데이터, 반정형 데이터, 정형 데이터 등이 있다.

비정형 데이터는 이미지 형식이 있다.

반정형 데이터는 lxml 형식이 있다.

정형 데이터는 table 형식이 있다.

 

개체 (entity)

- 관찰/관측하고자 하는 현실 세계의 대상이다. ex) 연예인

 

객체 (instance)

- 대상에 속하는 구체적 실체이다. ex) 강호동, 유재석

 

속성 (attribute)

- 관측하고자 하는 대상의 성질이다. ex) 키, 나이

 

값 (value)

- 대상의 속성을 관측하여 얻은 값이다. ex) 180cm, 50세

 

데이텀 (datum)

- 한 대상의 한 속성에 대한 값이다. ex) 강호동의 키의 값

 

데이터 (data)

- 한 대상의 여러 속성에 대한 값이다. ex) 강호동의 키, 나이, 몸무게 값

 

데이터셋 (dataset)

- 같은 종류의 여러 대상의 데이터 (a set of data)

ex) 강호동, 유재석의 신상 데이터

 

데이터베이스 (database)

- 다른 종류의 여러 데이터셋 ex) 운동선수와 연예인의 데이터셋

 

논리적 데이터

논리적 데이터란 머리 속에 이해하고 있는 형식의 데이터이다.

- 반정형이나 정형 데이터가 이에 속한다.

- 물리적 데이터 표현을 모르는 사람들과 의사소통 하기 위함이다.

- key-value 파일을 요구할 수 없다.

 

물리적 데이터

실제 컴퓨터에 약속된 형식에 따라 저장되어 있는 데이터이다.

- 반정형이나 정형 데이터가 이에 속한다.

- 논리적 데이터를 저장하거나 사용할 때 효율성을 고려해서 선택해야 한다.

- json 파일을 요구할 수 있다.

 

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

- 물리적 데이터를 관리하기 위한 시스템이다.

ex) (준전문)MS excel, 한셀, Google Sheets -> 엑셀데이터베이스파일 (xlsx)을 관리하는 스프레드시트 프로그램

      (전문) SQLite, MySQL, Oracle SQL, PostgreSQL, Microsoft SQL server ->  관계형데이터베이스파일을 관리하는 관계형데이터베이스 프로그램

 

범용 데이터베이스 관리 소프트웨어

물리적 데이터를 관리하기 위한 시스템이다.

- json -> 텍스트편집기 및 파서 (파이썬 json 라이브러리)

- xml ->  텍스트편집기 및 파서 (파이썬 Element Tree 라이브러리)

- csv -> 텍스트편집기 및 파서 (파이썬 pandas 라이브러리)

 

범용 소프트웨어를 사용하여 데이터베이스를 관리하면 다음과 같은 장점이 있다.

- 추가 프로그램이 필요하지 않다.

- 데이터베이스 전문 지식 습득이 필요하지 않다.

- 비전문가들도 빠른 교육과 프로젝트에 참여가 가능하다.

 

하지만 다수의 데이터를 유지보수해야 하는 문제와 다수 사용자의 데이터베이스 공유 환경을 지원해야 문제가 있다.

1. 무결성 유지

- 데이터의 값이 정해진 제약에 부합하는지 확인해야 한다.

 ex) 날짜는 숫자로만 되어야 한다.

2. 일관성 유지

- 새로운 데이터가 기존의 데이터베이스 환경에 부합하는지 확인해야 한다.

 ex) 회원가입 데이터에서 회원 아이디는 고유해야 한다.

3. 공유 제어

- 데이터베이스에 대한 여러 사람이 접속하여 작업할 수 있어야 한다.

ex) 구글 스프레드시트는 다른 사람이 글 쓰는 걸 수동적으로 확인해야 한다.

4. 보안 설정

- 역할에 따라 사용자의 권한을 다르게 부여해야 한다.

ex) 온라인 쇼핑 회원이 다른 회원의 가입정보에 접근할 수 없게 해야 한다.

 

관계형 데이터베이스 관리 시스템(Relational DataBase Management System, relational DBMS)

- table 형태의 데이터셋으로 이루어진 데이터베이스를 관리하는 전문 관리 프로그램이다.

- 데이터베이스를 다수의 사용자가 공유하여 관리하는 자동화 시스템이다.

- 관리자와 사용자는 오직 DBMS를 통해서만 데이터베이스에 접근할 수 있다.

- DBMS는 다수 사용자의 동시 접근을 제어하고, 각 사용자 요청을 반영하여 자동적으로 무결성과 일관성을 유지하며 데이터베이스를 수정한다.

 

관계형 데이터베이스 관리 시스템의 구성 모듈

- 관계형 데이터 관리 소프트웨어와 관계형 데이터 언어로 이루어져 있다.

- 관계형 데이터 관리 소프트웨어는 table 형태 데이터의 생성, 수정, 삭제, 검색을 관리하는 프로그램이다.

- 관계형 데이터 언어는 사용자가 데이터베이스 관리 소프트웨어와 의

사 소통하기 위한 언어로 SQL 언어가 있다.

 

# "유명인DB.sqlite3"라는 데이터베이스파일을 생성한다.
.open 유명인DB.sqlite3

# "연예인"이라는 테이블을 만든다.
create table 연예인(이름 varchar(10), 키 int, 나이 int, 몸무게 int);

# 현재 데이터베이스에 있는 table의 정보를 보여줌
.schema

# 연예인 table에 강호동, 유재석의 데이터를 입력
insert into 연예인 values('강호동',180,50,90);
insert into 연예인 values('유재석',178,48,70);

# 연예인 table 안의 데이터를 보여줌
select * from 연예인;

# 출력 형식을 변경함
.mode column
.mode table

# sqlite 종료
.exit