데이터 분석 초보자를 위한 RDBMS

Gayeon Kim·2020년 11월 20일
0

데이터 분석

목록 보기
8/9

1. "RDBMS, NoSQL... 이게 다 뭔가요?"


데이터 분석 초보자라면 흥미있는 주제가 생겨도 원하는 데이터 파일을 찾지 못해서 시작하기도 전에 단념해야 했던 적이 있었을 것이다. 내가 찾는 데이터가 항상 .csv 파일 형태로 잘 정리되어 존재하라는 법은 없다. 그렇기 때문에 직접 데이터를 수집해야 할 때도 있다. 데이터를 한 번 모아볼까 하고 데이터를 어떻게 관리하면 좋을지 인터넷에 검색을 해보면 RDBMS, NoSQL 데이터베이스, 그래프 데이터베이스 등 처음 보는 말 들이 쏟아져나올 것이다. 하지만 당황하지 않아도 된다. 아주 낯선 개념은 아니니 말이다.

음식을 보관하는 용기의 종류에는 여러가지가 있듯이, 데이터를 담는 그릇의 종류에도 여러가지가 있다. 이때 이 그릇을 통틀어 데이터베이스라고 한다. 그리고 RDBMS와 NoSQL 데이터베이스는 대표적인 데이터베이스의 종류이다. 오늘은 이 중 RDBMS에 대해서 알아보자.



2. RDBMS(Relational DataBase Management System)


IdTitleAuthor
0Alice's Adventures in WonderlandLewis Carroll
1A Little PrincessFrances Hodgson Burnett
2Peter PanJ. M. Barrie
3The Jungle BookRudyard Kipling
4Little WomenLouisa May Alcott

RDBMS는 Relational DataBase Management System의 약자로, 말 그대로 데이터끼리 관계를 이루고 있는 데이터베이스를 말한다. RDBMS는 위의 표처럼 column과 record가 있는 테이블 형태로 데이터를 저장하며, 이러한 테이블들을 연결하여 관계를 형성한다. 누군가는 테이블이 어떻게 관계를 형성한다는 것인지 상상이 되지 않을 것이다. 먼저 아래의 테이블을 보자.

IdStudent NamePhone NumberRegistration DateLectureTeacher
0Andrew59242020-05-02Korean WritingEmma
1Andrew59242020-05-02Spanish SpeakingOliver
2Clara98732020-05-23Korean WritingEmma
3Clara98732020-05-23French GrammarPaul
4Daniel83482020-05-03Spanish SpeakingOliver

참새 어학원의 수강생과 강좌 정보를 하나의 테이블로 관리한다. 참새 어학원에는 총 3명의 학생과 3개의 강의밖에 없다고 가정하자. 그리고 위 테이블은 참새 어학원의 수강생과 강좌 정보 데이터베이스의 전부이다. 그런데 Clara가 학원을 그만둬서 Clara와 관련된 정보를 모두 지워야 한다고 생각해보자. 그럼 Clara의 정보만 지우려 했는데 Paul 선생님의 French Grammer 강의 정보도 지워야 한다. 이렇게 여러 내용의 데이터를 한 테이블로 관리하면 데이터가 손상될 가능성이 높아진다. 그리고 강좌를 2개씩 수강하는 Andrew와 Daniel은 이름, 전화번호, 등록일에서 같은 정보가 두 번이나 등장한다. 즉, 데이터가 중복해서 계속 등장하는 것이다. 동일한 데이터를 여러 번 저장하는 건 저장 공간이 낭비될 뿐만 아니라 데이터 수정 시 똑같은 작업을 여러 번 실행해야 하므로 비효율적이기도 하다.

[수강생 테이블]

IdStudent NamePhone NumberRegistration Date
S0Andrew59242020-05-02
S1Clara98732020-05-23
S2Daniel83482020-05-03

[강의 테이블]

IdLectureTeacherClassroom
L0Korean WritingEmma101
L1French GrammarPaul102
L2Spanish SpeakingOliver103

[수강 신청 테이블]

IdStudent IdLecture Id
0S0L0
1S0L1
2S1L0
3S1L1
4S2L2

이번에는 참새 어학원이 위와 같이 학생 정보와 강의 정보, 그리고 수강 신청 정보를 각각 관리하고 있다고 생각해보자. 그럼 이제 Clara가 그만둬도 Clara에 대한 정보만 지워지고 French Grammer 강의 정보는 지워지지 않는다. 그리고 더이상 데이터가 중복되어 등장하지도 않는다. 그런데 수강 신청 테이블을 보면, 수강 신청을 한 학생의 모든 정보와 신청 강좌의 모든 정보가 기재된 게 아니라 수강 신청을 한 학생의 번호와 신청한 강좌의 번호만 기재되어 있다. 수강 신청 테이블에는 학생 번호와 강의 번호밖에 없으나, 학생 테이블과 강의 테이블을 찾아보면 S0 학생이 누구인지, L0 강좌는 무엇인지 알 수 있다. 이렇게 학생 테이블과 수강 신청 테이블이, 그리고 강의 테이블과 수강 신청 테이블이 연결되어 있다. 위 테이블들을 그림으로 표현하면 아래와 같다.

네모난 상자는 각 테이블을 의미하고 상자를 연결하고 있는 선은 테이블 사이의 관계를 표현한다. Student 테이블과 Enrolment 테이블이 연결되어 있고, Lecture 테이블과 Enrolment 테이블이 연결되어 있다.



3. RDBMS의 장단점


RDBMS는 각 테이블에 어떤 속성이 필요한지, 속성의 데이터 타입은 무엇인지, 테이블 간의 관계는 어떻게 되는지 미리 정의한 후에 데이터를 저장한다. 정의된 조건에 맞지 않는 데이터는 입력할 수 없기 때문에 잘못된 데이터가 들어올 가능성이 낮다. 그러나 조건을 미리 정의해야 한다는건 RDBMS의 단점이기도 하다. 환경이 급변하거나, 아니면 데이터를 미리 파악할 수 없는 경우에는 테이블의 조건을 정의할 수가 없어서 데이터를 저장할 수 없다. 이렇게 구조를 정의하기 어려운 데이터는 NoSQL과 같은 다른 형식의 데이터베이스를 사용한다.



4. 마치며


누군가는 '나는 데이터 분석을 하고 싶은건데 왜 데이터 구조까지 알아야하지?'라는 생각했을 수도 있다. 하지만 앞서 언급했듯이 데이터 분석을 하다보면 원하는 데이터가 없어서 직접 수집을 해야할 때도 있다. 데이터 분석의 주인공은 파이썬도, 머신러닝 모델도 아닌 바로 데이터이며, 그런 데이터를 담고 있는 게 데이터베이스이다. 그러니 좋은 재료를 모아서 적합한 용기에 담을 수 있도록 데이터베이스에 대해서도 잘 알아두도록 하자.

0개의 댓글