글 작성에 앞서 최근 데이터베이스 관련 지식을 꽤나 까먹은 것 같아 복습할겸 정리하고자 한다. 책은 '이것이 MySQL이다'를 보고 정리했다.
책은 총 4개의 파트로 이루어져 있고 각 파트당 챕터가 여러개 있는 형식이다. 글은 챕터단위로 작성할 것이며 챕터 내의 소제목을 기준으로 문단을 나눠 글을 작성할 것이다.
DBMS 개요
데이터베이스의 정의와 특징
데이터베이스: 대용량의 데이터 집합을 체계적으로 구성해 놓은 것
DBMS: 데이터베이스를 관리하는 소프트웨어 시스템
데이터베이스의 특징
무결성: 데이터에 오류가 있으면 안됨
예시) 학생 데이터에서 모든 학생은 학번이 있어야 하며, 각 학생의 학번은 서로 중복되면 안 되는 제약 조건이 있다. 즉 학번이라는 데이터를 통해 무결한 데이터로 보장할 수 있다.
데이터의 독립성: 데이터베이스의 크기를 변경하거나 데이터 파일의 저장소를 변경하더라도 응용 프로그램은 전혀 영향을 받지 않아야 함.
예시) 데이터베이스가 저장된 디스크가 새 것으로 변경되어도 기존에 사용하던 응용 프로그램은 아무런 변경 없이 계속 사용되어야 함.
보안: 데이터베이스 안의 데이터에 특정 권한이 있는 사람만 접근할 수 있어야 한다.
데이터 중복의 최소화: 동일한 데이터가 여러 개 중복되는 것을 방지한다.
예시) 학교에서 학생 정보를 이용하는 교직원이 여러명이 있다. 이때, 엑셀을 사용한다면 교직원마다 학생 정보를 갖고 있어 중복된 학생 정보를 갖는 엑셀파일이 존재할 수 있다. 하지만 데이터베이스로 관리한다면 학생 테이블은 한개만 있기 때문에 중복이 최소화된다.
응용 프로그램 제작 및 수정이 쉬워짐: 기존 파일시스템을 사용할 때 응용 프로그램 쪽에서 코드를 파일 시스템에 맞춰서 작성해야 했음. 근데 db를 이용하면 특정 db에 종속되지 않고 코드를 작성하는 것이 어느정도 가능해졌음
데이터의 안전성 향상: 대부분의 dbms가 제공하는 백업, 복원 기능을 이용해서 데이터가 깨지는 문제가 발생할 경우 원상으로 복구하는 방법이 명확해짐.
데이터베이스의 발전
기존에는 장부에다가 적어 데이터를 관리했다 -> 기술이 발전함에 따라 파일에 데이터를 저장했다. -> 데이터가 많아질수록 데이터 중복, 보안, 이후 파일과 기존 파일의 불일치 등 여러 문제가 발생했다. -> 이러한 파일시스템의 단점을 보완하기기 위해 DBMS가 등장했다.
DBMS 분류
계층형 DBMS: 계층별로 트리구조를 갖는 DBMS. 그림을 보면 이해가 쉬울 것이다. 구조변경이 어렵고, 임의의 검색에 어려움이 따른다.
망형 DBMS: 계층형 DBMS의 문제를 개선하기 위해 만들어진 DBMS. 빠른 데이터 추출이 가능하지만 내부적으로 포인터를 사용해서 개발자가 이 모든 구조를 이해해야 한다.
관계형 DBMS: 데이터베이스는 테이블이라 불리는 최소 단위로 구성되어 있으며, 테이블은 하나 이상의 열로 구성되어 있다.(RDBMS의 핵심임)
부가설명을 하자면 테이블은 데이터를 효율적으로 저장하기 위한 구조이고, 하나의 테이블을 여러개로 나누고 외래키를 두어 효율적으로 저장 가능하다. 이렇게 나누어진 테이블은 JOIN을 통해 데이터 추출이 가능함.
또한 가장 많이 사용되는 DBMS의 종류이며 변화에 쉽게 대응 가능하다.(이 특징 때문에 가장 많이 사용됨) 하지만 시스템 자원을 꽤나 많이 잡아먹음.
SQL 개요
SQL은 관계형 데이터베이스에서 사용되는 언어다.(시퀄 또는 에스큐엘이라 읽음) RDBMS를 사용한다면 SQL은 필수적으로 익혀야 한다.
다음의 특징을 갖는다.
DBMS 제작 회사와 독립적이다: SQL은 모든 DBMS 제작회사에 공통적으로 공개되고 각 제작회사는 이 표준 SQL에 맞춰서 DBMS를 개발한다. 그러므로 표준 SQL은 대부분의 DBMS에서 공통적으로 호환된다. (조금씩은 다르다. Oracle에서는 PL/SQL, SQL Server에서는 T-SQL, MySQL에서는 SQL이라고 부름)
다른 시스템으로 이식성이 좋다: 위에서 말한 특징의 연장선. SQL은 기본적으로 DBMS마다 상호 호환성이 뛰어나다.
표준이 계속 발전한다: SQL 표준은 계속 개선되어 왔고 현재도 개선되고 있다.
대화식 언어이다: 기존 프로그래밍 언어는 작성, 컴파일, 디버깅, 실행의 과정을 거쳐야 한다면 SQL은 질의하고 결과를 얻는다.
분산형 클라이언트/서버 구조이다: 위 내용의 연장선. 클라이언트에서 질의하고 서버에서 응답한다.
MySQL 소개
MySQL은 Oracle사에서 제작한 DBMS 소프트웨어로 오픈소스로 제공된다.(2010년부터 상용으로는 돈을 내야함 그치만 무료로 이용 가능한 maria db라는 것이 있음)
MySQL의 개요와 변천사
1. 1994년 개발
2. 1995년 5월 국제버전 공개
3. 1998년 1월 윈도우용 릴리즈(3.0버전)
4. 2004년 10월 R-트리, B-트리, 서브쿼리 지원(4.1 버전)
5. 2005년 10월 커서, 저장 프로시저, 트리거, 뷰 등 지원(5.0 버전)
6. 2008년 선마이크로시스템사에 인수됨
7. 2008년 11월 파티셔닝, 복제 지원(5.1버전)
8. 2010년 오라클이 선마이크로시스템사를 인수
9. 2010년 12월 InnoDB를 기본 엔진으로 사용하는 대량의 변화가 일어남
10. 2013년 2월 성능개선, NoSQL 지원(5.6버전)
11, 2015년 10월 보안 강화, InnoDB확장, JSON 지원(5.7버전)
12. 2018년 4월 NoSQL확장, JSON 확장, 정렬 강화(8.0버전)
'DB' 카테고리의 다른 글
MySQL 기본: 데이터베이스 모델링 (0) | 2023.08.03 |
---|---|
MySQL 설치 및 DB 구축과정 미리 실습하기: MySQL 전체 운영 실습 (0) | 2023.08.02 |
정규화 (0) | 2023.01.09 |
데이터베이스 인덱스 (0) | 2023.01.07 |
데이터 베이스의 시작 (0) | 2023.01.06 |