본문 바로가기
💻Information Security

Database(DB)와 SQL의 개념과 필요성

by Prof. Panda 2024. 1. 14.

Photo byTobias Fischer on Unsplash

Database의 정의와 개념

Database란 데이터를 모아놓는 저장소를 의미합니다. 인터넷은 각종 정보로 가득 차있고 그렇게 넘쳐나는 정보들을 관리하기 위해서는 관리를 하기 위한 체계가 필요하겠죠? 데이터들을 관리하기 위한 것이 바로 데이터베이스(Database)라고 하는 체계입니다. 그 데이터베이스를 관리하는 프로그램이 바로 DBMS(Database Management System)입니다. 둘은 일반적으로 같이 쓰입니다. 깊게 설명하면 조금 다르지만, 일상적으로는 편의를 위해 데이터베이스로 부릅니다. 데이터는 우리에게 익숙한 개념으로 치면 엑셀시트 같은 구조로 관리가 된다고 보시면 되겠습니다. 엑셀시트를 컴퓨터서버에서 관리하기 위해서 데이터베이스를 쓴다고 생각 봅시다. 

 

필요성

그러면 엑셀시트가 아니라 데이터베이스를 굳이 쓰는 이유가 뭘까요? 보기도 편하고 쓰기도 편한 엑셀을 쓰면 되는 것이 아닌가 생각하기 쉽습니다. 하지만 서버를 관리하는 입장에서는 오히려 데이터베이스가 관리하기 편합니다. 엑셀시트의 경우 엑셀을 열어야만 하고 데이터에 접근하거나 편집하는 것이 불편한 편입니다. 우리들은 대부분 엑셀에 익숙하기 때문에 실감하지 않지만, 데이터들을 관리하는 것에는 더 기본적인 개념인 데이터베이스로 접근해야 관리하는 것이 편리합니다. 특히 서버와 같은 경우 수많은 데이터들을 관리해야 하기 때문에 접근성과 관리들이 더 용이할 필요가 있습니다. DB는 백업과 수정, 생성과 같은 관리에 용이한 개념들과 기능들이 잔뜩 있기 때문에 서버를 관리하는 입장에서는 데이터베이스를 사용해서 관리하는 것입니다. 뿐만아니라, 보안을 위해서도 꼭 필요합니다. 우리가 서버에 데이터를 관리하면서 단지 html에다가 값을 넣기만 한다면 충분히 데이터를 저장하고 관리하는 것이 가능하지만, 프런트엔드만 구현된 웹서버의 경우 권한관리를 하기 어렵습니다. 따라서 민감한 정보를 누구나 열람할 수 있게 되는 문제가 발생합니다. 그렇다면 정보를 백엔드에 넣어두면 어떻게 될까요? 그렇다면 수많은 데이터들을 백엔드를 이루고 있는 페이지에 적어두어야 합니다. 페이지 하나를 보려고 하는데 엄청난 양의 데이터가 딸려온다면 엄청난 낭비이고 오래 걸릴 뿐만 아니라 보안에도 좋지 않겠죠? 그래서 데이터베이스를 따로 관리하면서 백엔드에 연결해서 필요한 정보만 백엔드에서 요청하면 그런 문제를 해결할 수 있습니다. 

 

웹서버, 웹 응용 서버(WAS)와의 관계

 

웹 서버(Web Server)와 WAS(Web Application Server)

웹 서버의 정의와 역할 웹 서버(Web Server)란 클라이언트의 요청을 받아서 서버 내의 자료를 제공해 주는 '서버'를 의미합니다. 클라이언트란 브라우저(Browser)라는 프로그램을 통해서 서버에 정보

panda-university.tistory.com

위 글에서 웹 서버와 웹 응용 서버의 차이점과 역할에 대해 작성해 보았습니다. 짧게 정리하면, 웹 서버는 프론트엔드로 정적 페이지를 사용자에게 주는 역할을 하고, 웹 응용 서버(WAS)는 백엔드로 동적 페이지를 생성해서 웹 서버(프런트엔드)에 전달해 주는 역할을 합니다. 여기에서 데이터베이스는 백엔드의 뒤에 위치해 있습니다. 웹 서버를 만든다고 하면, 웹 서버와 웹 응용 서버, 그리고 데이터베이스까지 별도로 따로 설치를 해주어야 하는 이유입니다. 데이터베이스는 백엔드인 웹 응용 서버와 연결되어서 백엔드의 요청대로 데이터를 관리합니다. 백 엔드와 헷갈릴 수 있겠지만, 대규모 서버라면 따로 데이터베이스를 관리하는 사람이 있는 것이 관리 차원에서 좋습니다. 

 

DB의 구조와 용어

index 이름 나이
1 김밥 15
2 치킨 20
3 햄버거 25

 

위의 표를 보면서 데이터베이스의 구조를 한번 살펴보겠습니다. Database는 엑셀로 비유하면 엑셀파일 자체와 같습니다. 엑셀파일에는 여러 시트들이 있고 각각의 시트들은 세로줄과 가로줄들이 있습니다. DBMS는 이러한 데이터베이스들을 관리자가 설정한 규칙과 이름에 따라서 관리되고 있습니다. 그리고 각각의 데이터베이스들은 테이블(table)이라고 하는 엑셀시트(표)를 여러개 가지고 있을 수 있습니다. 위에 보이는 저 표도 table이라고 할 수 있습니다. 이제 저 표에서 가로줄을 row라고하고, 세로줄을 column이라고 부릅니다. 세로줄은 '이름', '나이'처럼 밑에 있는 데이터들이 어떤 의미인지를 설명해 주고, 가로줄은 그런 세로줄이 정의한 데이터들의 세트가 되겠습니다. 1번 데이터의 이름은 '김밥'이고 나이는 '15'라는 '데이터'를 정의하고 모아둔 것이라고 할 수 있겠습니다. 꽤나 간단한 개념이지요?

 

DBMS는 어떤 종류가 있을까?

데이터베이스를 관리하는 DBMS는 프로그램이기 때문에 다양한 회사나 기관, 단체들이 만들고 관리합니다. 잘 알려지지 않은 수많은 DBMS들이 있을 수 있겠지만, 유명한 DBMS만 몇 개 언급해 보겠습니다. 먼저, 누구나 편하게 쓸 수 있는 오픈소스 기반의 DBMS는 MySQL이 있으며 이 MySQL을 기반으로 만들어진 MariaDB가 있습니다. 회사에서 관리하는 상업용 데이터베이스는 Oracle이 있습니다. 데이터베이스의 이름과 회사명이 모두 Oracle입니다. 또한, 우리에게 익숙한 Microsoft에서 만든 MSSQL도 있습니다. MSSQL의 경우 윈도우에 특화된 특성이 있습니다만, 대부분의 경우 Oracle을 사용합니다. 상업 데이터베이스에서는 Oracle이 가장 좋다는 인식과 평가가 있으며 상당 부분 사실입니다. 따라서 데이터베이스를 공부하고 싶다면 MySQL로 개념을 익히고, Oracle을 실습함으로 실무를 대비할 수 있습니다. 

 

데이터베이스와 대화하는 언어, SQL!

SQL의 언어나 사용법 등에 대해서는 추가적으로 자세하게 얘기할 필요가 있기 때문에 간단하게 SQL이 무엇인지, 왜 필요한지에 대해서만 적어보겠습니다. SQL은 "Structured Query Language"의 약자로 데이터베이스를 관리하고 정보를 받거나 입력하는 등을 요청할 수 있는 '데이터 처리 언어입니다. 즉, 영국인과 대화하려면 영어로 얘기해야 하듯, 데이터베이스와 얘기하고 싶다면 이 SQL이라는 언어를 통해서 할 수 있다는 뜻입니다. 프로그래밍 언어와는 많이 다르지만 논리적인 구조에 대한 것도 해석할 수 있고, 일상언어(영어)의 문법 구조를 상당 부분 가져왔기에 나름 직관적이라는 장점이 있습니다. 사용하는 DBMS 마다 조금씩 다를 수 있지만, 거의 대부분 비슷하다고 볼 수 있습니다. MySQL을 통해서 어느정도 연습을 해본다면 다른 DBMS를 다룰 때 영국식 영어와 미국식 영어가 다른 정도의 차이점만 느낄 정도라고 생각할 수 있습니다. SQL에 대해서는 이후 더 자세하게 얘기해 보도록 하겠습니다.