요즘IT
위시켓
최근 검색어
전체 삭제
최근 검색어가 없습니다.

IT 지식이 무엇보다 중요해진 요즘, 여러분은 어떻게 공부하고 있나요? 가장 먼저 눈길이 가는 건 다양한 IT 강의 영상일 겁니다. 강의를 제공하는 교육 기업들과 함께, 요즘IT에서 ‘IT 강의 시리즈’를 준비했습니다. 엄선한 교육 영상을 텍스트로 읽고 필요한 정보를 빠르게 가져가세요.

회원가입을 하면 원하는 문장을
저장할 수 있어요!

다음

회원가입을 하면
성장에 도움이 되는 콘텐츠를
스크랩할 수 있어요!

확인

개발

데이터의 보관 창고, 데이터베이스 기초 이해하기

년차,
어떤 스킬
,
어떤 직무
독자들이 봤을까요?
어떤 독자들이 봤는지 궁금하다면?
로그인

IT 지식이 무엇보다 중요해진 요즘, 여러분은 어떻게 공부하고 있나요? 가장 먼저 눈길이 가는 건 다양한 IT 강의 영상일 겁니다. 강의를 제공하는 교육 기업들과 함께, 요즘IT에서 ‘IT 강의 시리즈’를 준비했습니다. 엄선한 교육 영상을 텍스트로 읽고 필요한 정보를 빠르게 가져가세요.

 

이번 강의는 ‘웹 개발 첫걸음’입니다. IT 교육 기업 코드잇의 강의 ‘프로그래밍 오버뷰’와 ‘웹 개발 기초 지식’ 콘텐츠를 정리했습니다. 다양한 개발 분야부터 꼭 알아야 할 기초 지식까지, 웹 개발의 기초를 다져 보세요. 전체 영상은 코드잇에서 확인할 수 있습니다.


웹 개발 첫걸음 시리즈

프론트엔드와 백엔드, 무엇을 어떻게 시작할까?
웹사이트는 어떻게 찾아갈까? IP, DNS, URL 개념 잡기
정적? 동적? 웹사이트 화면은 어떻게 채워질까?
④ 데이터의 보관 창고, 데이터베이스 기초 이해하기

 

앞서 글에서는 웹 페이지의 두 가지 형태에 대해 배워 봤습니다. 하나는 이미 만들어진 웹 페이지를 그대로 받아오는 정적(Static) 방식이고, 다른 하나는 유저의 요청에 따라 정보를 적절히 채워 넣어서 받아오는 동적(Dynamic) 방식이었죠. 동적 웹 페이지의 경우, 또 데이터를 클라이언트와 서버 어느 쪽에서 채우는 지에 따라 두 가지로 나눠지고요. 그래도 둘 다 요청에 따라 정보를 적절히 채워 넣는다는 점에서는 동일합니다.

 

자, 그럼 이 정보는 어디서 가져오는 걸까요? 이번 글에서 다룰 주제, 바로 데이터베이스(Database), 줄여서 DB입니다.

 

 

 

데이터베이스(DB)

데이터베이스는 쉽게 데이터를 보관해 두는 창고라고 생각하면 됩니다. 그런데, 이 데이터를 우리가 메모장에 대충 기록해 두듯이 아무렇게나 쌓아 두는 게 아니라 ‘체계적으로 관리’하는 게 핵심입니다.

 

즉, 데이터를 쉽게 꺼내 볼 수 있어야 하고, 또 효과적으로 추가, 수정, 삭제할 수 있어야 됩니다. 데이터를 잃어버리거나, 노출되는 문제도 없어야 하고요.

 

 

행과 열로 이루어진 테이블

그렇다면, 이 데이터베이스란 건 도대체 어떻게 생긴 걸까요? 사실 개발자들이 가장 많이 사용하는 데이터베이스는 우리에게 이미 익숙한 표 형식으로 되어 있습니다. 보통 표라는 표현보다는 ‘테이블’이라고 부르죠. 테이블은 이렇게 행과 열로 구성되어 있어요.

 

 

우리가 어떤 쇼핑몰의 상품 목록을 데이터베이스로 관리한다고 해볼게요. 각 행은 상품 하나하나를 나타내고, 각 열은 상품에 대한 세부 정보를 나타냅니다. 예를 들어 상품의 이름, 가격, 원가, 재고, 판매량 이런 정보가 열에 들어가는 거죠. 각 열에 들어가 있는 세부 정보를 다른 표현으로는 속성이라고도 합니다. 그래서 지금 이 상품 데이터는 총 5개의 속성이 있다고 할 수 있는 거죠.

 

 

엑셀과 무엇이 다를까?

그런데 이렇게만 얘기하면 우리가 평소 쓰던 엑셀이랑 크게 다를 게 없어 보입니다. 실제로도 이렇게 표 형태로 정보를 저장한다는 점에서는 데이터베이스나 엑셀이나 비슷해요.

 

하지만 데이터가 몇십만 개, 몇백만 개로 늘어났다고 생각해 보세요. 엑셀은 데이터가 몇천, 몇만 개만 돼도 엄청 버벅이며 감당이 안 되기 시작합니다. 간편하다는 장점이 있는 대신 많은 데이터를 안정적으로 관리하는 게 어려운 거죠.

 

 

웹사이트나 앱을 운영하면 엄청나게 많은 데이터가 쌓이는데요. 그 많은 데이터를 잘 관리하려면 데이터베이스를 써야만 하는 거예요.

 

대신 엑셀은 인터페이스가 잘 되어 있어서 굉장히 직관적이지만, 데이터베이스는 다루는 방법이 좀 더 복잡합니다. SQL 같은 데이터베이스 전용 언어도 배워야 하고, 그 외에도 데이터베이스에 대한 지식과 숙련도를 키워야 하죠.

 

 

데이터베이스는 언제 쓸까?

사실 모든 서비스에 데이터베이스가 필요한 건 아니에요. 예를 들어 앞서 배웠던 정적 웹 페이지를 생각해 봅시다. 만약 우리가 제공하는 서비스가 모두 정적 웹 페이지로 이루어져 있다면, 어쩌면 데이터를 쌓을 필요가 없을 겁니다. 그럼 데이터베이스를 굳이 안 써도 문제 없는 거죠. 실제로 그런 서비스들도 물론 있긴 합니다.

 

하지만, 우리가 알 만한 요즘 대부분 서비스들이 유저 개개인 맞춤형으로 제공됩니다. 그러니까 아주 기본인 회원가입이랑 로그인 기능만 있어도 데이터베이스가 필요한 거예요. 그래서 웹 분야를 제대로 이해하고 싶다면, 데이터베이스는 기본적으로 알아야 하는 개념입니다.

 

 

 

데이터베이스의 종류

지금까지 데이터베이스의 개념에 대해 간략하게 살펴봤는데요. 데이터베이스는 또 종류가 한 두 가지가 아닙니다. 이를 분류하려면 여러 방식이 있을 텐데, 가장 일반적인 방식은 관계형 데이터베이스와 비관계형 데이터베이스로 분류하는 겁니다.

 

 

테이블 중심의 관계형 데이터베이스

예전부터 지금까지 가장 많이 쓰이는 데이터베이스 형태는 관계형 데이터베이스입니다. 기본적으로 테이블의 형태를 띠고 있어요. 테이블은 행과 열로 구성되어 있다고 했습니다. 또 다른 예를 들어 볼게요.

 

배달 앱에서 가게 목록을 테이블로 관리한다고 하겠습니다. 각 행은 가게 하나하나를 나타내고, 각 열은 이 가게에 대한 세부 정보를 나타낼 거예요. 가게 ID, 가게 이름, 가게 주소, 가게 전화번호 같은 게 여기 들어가는 거죠.

 

 

이 배달 앱에서는 메뉴 목록도 테이블로 관리할 수 있습니다. 각 행은 메뉴를 하나씩 나타내는 거고, 각 열은 이 메뉴에 대한 세부 정보를 나타내는 거예요. 메뉴 ID, 메뉴 이름, 메뉴 가격, 메뉴 이미지 같은 걸 저장할 수 있겠죠.

 

 

이제 중요한 게 있습니다. 이 메뉴 테이블이 어떤 가게의 메뉴인지 알아야 한다는 거죠. 그래서 이 메뉴 테이블은 가게 ID도 따로 보관해야 합니다.

 

자, 그러면 이제 가게 목록 테이블에서 일치하는 가게를 찾을 수 있습니다. 이 열을 연결 지어 두 테이블 사이에 관계가 만들어졌죠? 이렇게 테이블 간에 관계를 지어서 관리한다는 의미로 이를 관계형 데이터베이스라고 부르는 거예요.

 

 

관계형 데이터베이스의 특징: 체계적인 구조와 SQL

관계형 데이터베이스의 핵심 특징은 ‘체계적’이라는 겁니다. 개발자들은 서비스를 설계하는 단계에서부터 테이블의 구조를 딱 정해 놓고, 반드시 그 구조에 맞춰 데이터를 쌓도록 합니다. 이렇게 항상 예상할 수 있는 형태로 데이터를 저장하기 때문에 체계적이고 안정적으로 데이터를 관리할 수 있는 거죠. 그래서 관계형 데이터베이스를 데이터베이스의 가장 기본이라 할 수 있는 겁니다.

 

 

관계형 데이터베이스를 다룰 때는 ‘SQL’이라는 언어를 사용합니다. SQL을 써서 데이터베이스에 값을 추가하고, 수정하고, 삭제하고, 또 조회할 수 있는 거죠. 단순히 한 테이블에서 값을 받아오는 것뿐만 아니라 테이블들 사이 관계를 이용해 테이블을 합쳐 조회하는 그런 복잡한 연산도 가능합니다.

 

 

아마 SQL은 개발을 잘 모르는 사람도 대부분 들어 봤을 단어죠? 사실 요즘은 개발자가 아니더라도 기획자나 마케터, PM 같은 다양한 직군에서 데이터 분석 목적으로 SQL을 배우는 분위기예요. 특히 한국에는 SQLD라는 자격증 시험이 있어, 요즘 취준생 분들이 정말 많이 준비합니다.

 

비관계형 데이터베이스(NoSQL)

전통적으로 가장 많이 쓰여온 것도 관계형 데이터베이스, 여전히 가장 많이 쓰인다고 할 수 있는 것도 관계형 데이터베이스입니다. 하지만 갈수록 ‘비관계형 데이터베이스’가 점점 많이 쓰이고 있습니다. 비관계형 데이터베이스는 흔히들 NoSQL 데이터베이스라고도 하는데요. 가장 대표적으로는 mongoDB가 있습니다. 이것 역시 들어본 분들이 꽤 있을 거예요.

 

 

관계형 데이터베이스의 체계적인 관리는 가장 큰 장점이지만, 또 체계적이기 때문에 생기는 제약들도 있습니다. 예를 들어 조금 빠르게 서비스를 만들고 싶은데, 관계형 데이터베이스로 개발하려면 기본적으로 구조를 잘 잡아 놓고 시작해야 합니다. 그 때문에 개발 속도가 약간 더딜 수 있어요. 그럴 때 비관계형 데이터베이스를 쓰면 체계적이지는 않더라도 빠르게 개발을 시작할 수 있습니다.

 

한편 개발을 하다 보면, 변동 사항들이 많이 생기기도 합니다. 만약 관계형 데이터베이스를 쓰면 그럴 때마다 테이블의 구조를 매번 새롭게 바꿔야 한다는 번거로움이 있습니다. 반면 비관계형 데이터베이스를 쓰면 꼭 따라야 하는 구조가 딱 있는 게 아니어서 훨씬 유연하게 대응할 수 있죠.

 

 

어쩔 때는 데이터베이스의 구조를 잘 설계하는 건 좀 덜 중요하고, 그냥 데이터를 저장하는 일 자체에 의미를 두는 경우가 있어요. 예를 들어 유저들이 사이트에서 하는 행동 하나하나를 다 기록한다고 생각해 보세요. 그러면 정말 셀 수 없을 정도로 많은 데이터가 쌓일 겁니다. 이런 기록들을 막 쌓아 두는 용도로도 비관계형 데이터베이스를 많이 씁니다.

 

관계형과 비관계형, 무엇이 더 좋을까?

자, 그래서 관계형 데이터베이스와 비관계형 데이터베이스 중에 뭐가 더 좋을까요?

 

사실 대부분의 경우, 어느 것이든 쓸 수 있습니다. 다만 상황에 따라 좀 더 적합한 형태가 있죠. 그래서 정말 큰 서비스들은 필요에 따라 두 가지를 섞어서 사용합니다. 체계적으로 관리해야 하는 정보는 관계형 데이터베이스, 확장성과 유연성이 더 중요한 영역에서는 비관계형 데이터베이스를 쓰는 거죠.

 

그래도 일단 하나만 추천해 달라고 하면, 저는 가장 많이 쓰이며 기본이라 생각하는 관계형 데이터베이스를 추천할 겁니다. 체계적이라는 점에서 처음에 어렵게 느껴질 수도 있지만, 한편으로는 체계적이기 때문에 어떻게 관리해야 되는지에 대한 명확한 가이드라인이 잘 잡혀 있으니까요. 그리고 굉장히 오랜 기간 많은 사람이 써 왔기 때문에 참고할 수 있는 자료들도 훨씬 많죠.

 

 

 

마치며

지금까지 데이터베이스의 기본 개념부터 두 가지 종류, 관계형 데이터베이스와 비관계형 데이터베이스에 대해 알아보았습니다.

 

웹 개발을 제대로 이해하려면 반드시 알아야 할 영역인 만큼, 기초를 잘 다지고 가는 것이 좋겠습니다. 언제 데이터베이스가 필요하며, 무슨 데이터베이스로 개발해야 할지 개념을 잘 이해해 보세요.

 

원본 강의 보러가기

 

요즘IT의 모든 콘텐츠는 저작권법의 보호를 받는 바, 무단 전재와 복사, 배포 등을 금합니다.

좋아요

댓글

공유

공유

댓글 0
코드잇
기업
코딩, 쉬워질 때도 됐다
19
명 알림 받는 중

작가 홈

코드잇
기업
코딩, 쉬워질 때도 됐다
19
명 알림 받는 중
강의 만족도 98%, 회원 수 41만 명!
실제 수강생이 입증하는
코드잇의 학습 효과를 확인해 보세요.

프로그래밍, 생산성 도구, 디자인 등
다양한 IT 분야 강의 콘텐츠를 제공합니다.

코드잇과 함께 레벨업 하세요.
IT 교육, 쉬워질 때도 됐으니까!

좋아요

댓글

스크랩

공유

공유

요즘IT가 PICK한 뉴스레터를 매주 목요일에 만나보세요

요즘IT가 PICK한 뉴스레터를
매주 목요일에 만나보세요

뉴스레터를 구독하려면 동의가 필요합니다.
https://auth.wishket.com/login