본 글은 생활코딩 유튜브의 DATABASE1 강의를 복습 겸 글로 정리한 것이다.
유튜브 강의는 총 네 개의 강의로, 재생 시간을 모두 합쳐도 30분이 채 안된다.
데이터베이스에 대한 간단한 소개에 대한 내용들 위주이며,
이 글을 통해 어떠한 강의 내용인지 대략적인 느낌을 받고 위의 유튜브 링크를 통해 영상으로 공부하는 것을 추천한다.
파일의 한계
데이터베이스가 개발되기 전, 사람들은 파일이라는 구조로 데이터를 정리하고 저장하였다.
예를 들어,
"헬창" 쇼핑몰을 이용하는 사용자들의 정보를 관리할 때, 한 명의 사용자마다 하나의 txt 파일을 이용한다고 생각해보자.
해당 쇼핑몰을 이용하는 사람이 10명, 100명, 1000명 정도라면 귀찮지만 txt 파일을 새로 작성하거나 수정하는 행위가 가능할 것이다.
하지만 쇼핑몰이 대박이 터져서 몇 만명이 이용하게 된다면?
쇼핑몰이 아니라 네이버, 구글같은 전국/전 세계적으로 사람들이 이용하는 서비스라면?
위와 같이 파일로 관리하다가는 끝도 없을 것이다.
생각만 해도 지옥이다..
그래서 이러한 파일의 한계를 뛰어넘기 위해 데이터베이스(Database)라는 개념이 탄생하게 되었다.
데이터베이스의 탄생
글을 쓰다가 데이터베이스(Database)라는 이름의 유래가 궁금해져서 찾아보았다.
위키백과에 따르면, 아래와 같다.
"1950년대에 데이터베이스라는 용어가 미국에서 처음 사용되었으며,
본래는 군비의 집중적·효율적 관리를 위해 컴퓨터를 활용한 도서관 개념을 개발하면서
이를 '데이터의 기지'라는 뜻의 데이터베이스(DataBase)로 일컬었다."
위에서 언급한대로,
파일의 한계를 뛰어넘기 위해 만들어진 데이터베이스라는 개념은 이를 관리하고 통제할 시스템이 필요해지게 되었고,
DBMS(DataBase Management System)라는 것이 탄생했다.
현재 MySQL, SQL Server, MongoDB 등 데이터베이스를 관리하기 위한 여러 시스템들이 사용되고 있다.
어떤 종류의 데이터베이스가 가장 많이 사용되는지 궁금하다면,
구글 창을 켜서 "2019 database ranking"으로 검색해보자.
그럼 이런 사이트들과 비슷한 것들이 나올텐데,
어떤 DBMS이 많이 사용되는지, 어떤 유형의 데이터베이스를 사용하는지(Relational, Document, Key-value 등) 등을 알 수 있다.
데이터베이스의 본질
본질이란 "그것이 그것으로서 있기 위해 없어서는 안 되는 것"을 뜻한다.
데이터베이스의 본질,
즉, 데이터베이스가 데이터베이스로서 있기 위해 없어서는 안 되는 것에 대해 알아보자.
데이터베이스는 어떻게 입력하고 어떻게 출력하냐는 것에 그 본질이 있다.
이것을 CRUD라고 표현하기도 하는데,
Create, Read, Update, Delete 의 앞 글자들을 가져와 합쳐놓은 것이다.
각각에 대한 자세한 내용은 나중의 글에서 다뤄볼 예정이다.
여기서는 각각이 어떤 것인지만 알아보자.
어떻게 입력
"어떻게 입력하냐"는 CRUD 중 Create, Update, Delete에 해당된다.
데이터베이스에서 데이터를 저장할 공간을 만들고(Create),
그 공간에 데이터를 추가/삭제/수정하며(Update),
혹은 공간 자체를 삭제하는(Delete) 행위라고 알아두자.
하지만 DB 관리자로 살면서 Create나 Delete할 경험은 거의 없을 것이라고 한다.
그래서 밑에 나올 Read와 Update에 대해 잘 배워서 잘 써먹을 줄 아는 것이 중요하다.
어떻게 출력
"어떻게 출력하냐"는 CRUD 중 Read에 해당된다.
DB 관리자가 데이터베이스로부터 원하는 데이터를 얻어와 화면에 출력하기 위한 행위이다.
"쿼리(Query)를 날린다"라고도 표현하기도 한다.
데이터베이스(Database) vs 파일(File)
이제 '데이터베이스'와 '파일'을 비교해보며 데이터베이스의 훌륭함을 알아보자.
원하는 정보 검색
위의 "파일의 한계" 부분에서 언급한 데이터베이스가 없는 세상의 "헬창" 쇼핑몰을 다시 생각해보자.
만약 어떠한 회원이 본인의 주문 내역을 조회하고자 쇼핑몰 회사에 문의하면,
담당자는 수많은 회원 txt 파일에서 해당 회원을 찾아 파일을 열고,
또 원하는 주문내역을 검색이나 스크롤을 내려가며 찾아야 한다.
하지만 데이터베이스를 이용하면 데이터를 구조적으로 관리할 수 있기 때문에,
회원들의 정보를 몽땅 저장해둔 데이터베이스에서 Read 기능을 가능하게 해주는 쿼리 하나만 슥 입력하여 날리면,
쉽고 빠르게 특정 회원의 주문 내역을 조회할 수 있다.
자동화
이번에는 "헬창" 쇼핑몰의 여러 회원들이 '동시에' 주문 내역을 조회하거나 수정하거나 취소하고 싶은 경우를 생각해보자.
회원들이 회사에 전화를 걸거나 이메일을 보내어 요청하면,
담당자는 요청받은 것에 해당하는 정보를 수만개의 파일들에서 직접 찾아서 알려줘야 한다.
하지만 데이터베이스를 이용하면,
쇼핑몰 회원으로부터 요청된 '주문 내역 조회', '주문 내역 수정', '회원 정보 변경', '회원 가입' 등과 같은 특정 행위들을 자동화시킬 수 있다!
예를 들어, '주문 내역 조회'인 경우에는
회원이 주문한 상품들 중 어떤 상품에 대한 것을 조회할 것인지에 대해 사용자가 상품명을 입력하거나 선택하기만 하면,
데이터베이스에 해당 상품명과 회원 정보를 포함한 쿼리를 날려 원하는 정보를 Read 해오는 것이다.
마무리
"데이터베이스의 탄생" 부분에서 "2019 database ranking"으로 검색하여 나온 사이트들을 둘러봤으면 알겠지만,
현재 데이터베이스 시장의 절대 강자는 관계형 데이터베이스이다.
관계형 데이터베이스가 데이터를 저장하거나 찾기가 쉽고,
데이터 무결성(데이터의 정확성과 일관성을 유지하고 보증하는 것)을 보장하며,
중복된 데이터가 없도록 저장하기 때문이다.
하지만 SNS, IoT 등 수많은 다양한 데이터가 쏟아져 나오는 요즘에는 모든 데이터가 관계형 데이터베이스에 적합하다고는 할 수 없다.
이에 대응하기 위해 대표적으로 NoSQL과 같은 관계형 데이터베이스가 아닌 다양한 형식의 데이터베이스가 만들어지고 있다.
참고로 SQL은 Structured Query Language의 줄임말로,
관계형 데이터베이스에서 데이터를 관리하기 위해 설계된 프로그래밍 언어이다.
NoSQL의 뜻에 대해서는
No SQL, Not Onlyl SQL, Non-Relational Operational Datablase SQL 등 여러 의견들이 있지만,
현재는 Not Only SQL로 풀어 설명하는 것이 다수를 차지하고 있다.
(삼성 SDS에서 이에 대해 자세하게 설명해놓은 글이 있다)
끝!
'Study > Database' 카테고리의 다른 글
[DB][MSSQL] PIVOT, UNPIVOT으로 여러 컬럼 합치기 (0) | 2021.04.08 |
---|---|
[DB] SQL 작성 표준 가이드 (0) | 2021.02.25 |
[DB] 트랜잭션(Transaction)이란? (+ ACID) (0) | 2021.02.12 |
[DB][MSSQL] 저장 프로시저(Stored Procedure)란? (0) | 2021.01.22 |
[DB][PostgreSQL] PostgreSQL 완전 삭제하는 방법 (0) | 2020.08.28 |