이전 글에서는 빅데이터와 관련된 특별한 기술이나 개념이 필요한 원인인 데이터에 대해서 알아보았다. 혹시 아직 못 보고 왔다면 아래 링크를 참조하자.
오늘의 주제는 과연 기존 데이터 관리 기술(관계형 데이터베이스)과 새롭게 나온 기술(NoSQL)의 차이가 무엇이길래!!! 빅데이터의 85% ~ 90% 이상을 차지하는 비정형 데이터를 다룰 때는 관계형 데이터베이스가 아닌 NoSQL을 사용하는지 쉽게 알아보는 시간을 가져보려고 한다. 그 전에 관계형 데이터베이스가 무엇인지 정리하고 넘어가자.
간단한 용어 정리
- 데이터베이스(Database, DB) : 데이터를 관리하는 시스템이라고 생각하자. 즉, 데이터 입력, 출력, 삭제, 수정 등이 가능하다.
- 관계형 데이터베이스(Relational Database, RDB) : 각 데이터 간의 관계를 정의할 수 있도록 만든 시스템이다. 단순한 예로 유튜브를 생각해보자. 유튜브는 사용자가 영상을 올리고 그 올린 영상들을 보는 구조이다. 즉, 사용자와 영상의 관계가 가장 중요하다. 사용자가 영상을 올린다, 영상을 본다는 관계를 정의할 수 있다. 이렇게 데이터의 관계를 쉽게 연결할 수 있도록 만들어진 시스템이다.
- SQL(Structured Query Language) : 데이터베이스에서 데이터를 찾기위해 따로 정의한 언어이다. 단순히 이 데이터 보여줘. 이 데이터 수정해줘. 등이라고 생각하고 넘어가자.
- NoSQL(Not only SQL) : 관계형 데이터베이스 구조의 한계를 느껴 나온 데이터베이스 시스템이다. 이 녀석이 빅데이터에 유용하다.
기존 데이터 관리 방법
자, 이제 용어 정리를 했으니 이제 기존 관계형 데이터베이스의 구조를 쉽게 느껴보자.
이 글을 보는 사람들 중에 엑셀 데이터를 보지 않은 사람은 아마 없다고 생각한다. 완벽히 똑같진 않지만 엑셀의 표 형식과 기존 데이터 관리방법이 아주~ 비슷하다.
유튜브를 예시로 조금씩 접근해보자.
아래는 유튜브 사용자의 일부를 표현했다.
이름 | 성별 | 나이 |
철수 | 남자 | 18 |
영희 | 여자 | 18 |
아래는 유튜브 영상의 일부를 표현했다.
영상이름 | 영상시간(초) | 영상경로 |
10분으로 빅데이터 개념 정리! | 621 | 내문서 |
10분으로 IT 트렌드 훑기 | 600 | 내문서 |
여기까지 보고 알 수 있는 내용은 아래 두가지 정도이다.
1. 유튜브 사용자 중에는 철수, 영희가 있다.
2. 유튜브 영상 중에는 '10분으로 빅데이터 개념 정리!', '10분으로 IT 트렌드 훑기' 가 있다.
그런데 철수가 올린 영상이 '10분으로 빅데이터 개념 정리!' 이고 영희가 본 영상이 '10분으로 IT 트렌드 훑기' 이라고 한다. 그럼 어떻게 표현해야 할까? 꼭 혼자 생각해보고 아래 답을 보도록 하자.
이름 | 성별 | 나이 | 올린 영상 | 본 영상 |
철수 | 남자 | 18 | 10분으로 빅데이터 개념 정리! | |
영희 | 여자 | 18 | 10분으로 IT 트렌드 훑기 |
어떤가? 생각했던 답인가?
자 그런데 철수가 올린 영상이 2개 이상, 영희가 본 영상이 2개 이상이라고 한다면...? 여러분이라면 어떻게 해결할 것인가?
사용자
번호 | 이름 | 성별 | 나이 |
1 | 철수 | 남자 | 18 |
2 | 영희 | 여자 | 18 |
번호 | 영상이름 | 영상시간(초) | 영상경로 |
1 | 10분으로 빅데이터 개념 정리! | 621 | 내문서 |
2 | 10분으로 IT 트렌드 훑기 | 600 | 내문서 |
사용자 번호 | 영상 번호 |
1 | 1 |
사용자 번호 | 영상 번호 |
2 | 2 |
또는 위 두 표를 아래 하나로 만들 수 있다.
영상을 올린경우 1, 본 경우 2사용자 번호 | 영상 번호 | 올림/봄 |
1 | 1 | 1 |
2 | 2 | 2 |
어떤가? 여러분이 생각했던 답인가?
철수를 1, 영희를 2라는 숫자에 매핑하고 각 영상들도 숫자로 매핑 후 각 관계를 나타내는 표를 다시 만들었다. 위와 같이 지속적으로 데이터를 쌓게 되면 철수가 몇 개의 영상을 올리든 영희가 몇 개의 영상을 보든 상관없다. 조금 복잡해 보이지만 구조는 명확히 알 수 있다. 그리고 그렇게 어렵지 않게 찾을 수 있다.
하지만... 벌써 영상을 올렸다, 봤다의 관계를 만드는데에도 3개 이상의 표가 생겼다. 그러면 좋아요/싫어요, 댓글 등 수많은 기능이 생길 때마다 관계를 위한 표는 무수히 많이 생성될 것이라는 것은 쉽게 상상되지 않는가? 즉, 약간의 변화를 줄 때마다 표를 만들거나 열을 추가하거나 하는 등의 작업들이 필요하다.
자, 이제 우리는 철수에게 유튜브 영상 추천을 하려고 한다. 어떻게 해야할까? 벌써부터 머리 아파지지 않는가?
이제부터 표를 테이블이라고 부르도록 하겠다. 아래는 필자가 생각한 시뮬레이션일 뿐이다. 그냥 머리로만 생각하면서 따라오자.
1. 철수가 영상을 재생하고 50% 이상 본 영상을 전부 찾는다.
- 사용자-영상 관계 테이블에서 철수가 본 영상 전부 가져오기
- 영상 테이블에서 철수가 본 영상 시간 가져오기
- 시간 계산해서 50%이상 본 영상만 남기기
2. 50% 이상 본 영상 중 좋아요 한 영상을 전부 찾는다.
- 1번에서 추출된 영상으로 사용자-영상 좋아요 관계 테이블에서 좋아요 된 것만 가져오기
3. 해당 영상들의 제목, 카테고리 등 파악하기
어떤가? 복잡하지 않은가?
필자의 사견
이렇게 기존 관계형 데이터베이스 방식을 간단하게 알아보았다. 이 느낌만 안다면 여러분도 충분히 다양한 서비스의 데이터 관계를 상상할 수 있다. 조금씩 성능이나 내부적인 프로세스로 인해 실제 생각과 다를 수는 있지만 크게 벗어나지 않는다. 정말 좋은 기술이지만 약간의 한계가 보일 것이다.
필자가 생각하는 한계점
- 관계가 생길 때마다 작업이 많이 늘어남
- 정해진 데이터만 입력 가능(같은 열에는 동일한 형식의 데이터가 들어가야 함)
- 변화가 어려움
위와 같은 한계점으로 인해 비정형 데이터를 다룰 때 정말 힘이 들게 된다. 다음 편에서는 빅데이터에서 사용되는 NoSQL 데이터베이스에 대해 알아보도록 하자. 얼마나 유연한 녀석인지!
'IT 트렌드' 카테고리의 다른 글
빅데이터(BigData) 6부 - 수직확장(Scale Up)과 수평확장(Scale Out) (0) | 2021.07.14 |
---|---|
빅데이터(BigData) 5부 - NoSQL(Not only SQL) 왜 너가 선택되었니? (0) | 2021.07.12 |
빅데이터(BigData) 3부 - 일반 데이터랑 뭐가 다른데?! (0) | 2021.07.07 |
빅데이터(BigData) 2부 - 빅데이터? 왜 갑자기 떡상...? (0) | 2021.07.05 |
빅데이터(BigData) 1부 - 빅데이터? 그래서 그게 뭔데?! (0) | 2021.07.03 |