seegongsik
내 단어장
데이터

한 대로 부족할 때, 나눠 담기

정보가 점점 쌓이면 어떻게 될까요? 큰 창고 한 채도 언젠가는 가득 차요. 그러면 창고를 여러 채로 늘려 짐을 나눠 담아요. 게다가 창고 한 채가 무너져도 짐을 잃지 않게, 같은 짐을 다른 창고에 복사해 두기도 해요. 데이터도 똑같아요. 한 대로 감당이 안 되면 여러 대에 나눠 담고, 안 깨지게 여러 대에 복사해 둬요.

01

한 대로는 부족해져요

앞에서 데이터베이스가
거대한 창고라는 걸 배웠어요.
안전하게 담고 빠르게 찾았죠.
그런데 정보는 멈추지 않고 쌓여요.
사람이 늘고, 기록이 늘고,
사진과 영상까지 들어와요.
아무리 큰 창고 한 채라도
언젠가는 꽉 차서 더는 못 담아요.
한 대로는 부족해지는 순간이 와요.

한 대 용량
눌러서 데이터를 늘려봐요
0 / 8

데이터를 눌러 계속 늘려봐요. 한 대의 용량을 넘기면 더는 담지 못해요.

한 대가 꽉 차 버렸죠.
더 넣고 싶어도 자리가 없어요.
더 큰 컴퓨터로 바꿔도
그것마저 언젠가 또 가득 차요.
한 대를 끝없이 키우는 데는
분명한 한계가 있어요.
그렇다면 방법을 바꿔야겠죠.
한 대를 키우는 대신
여러 대로 늘리면 어떨까요?

02

여러 대에 나눠 담아요

방법은 생각보다 간단해요.
데이터를 조각으로 나눠
여러 대에 흩어 담는 거예요.
한 대가 전부를 안고 끙끙대는 대신
각 대가 일부만 맡아요.
예를 들어 이름이 ㄱ부터 ㅁ까지는 1번 대,
ㅂ부터 ㅎ까지는 2번 대에 담는 식이죠.
이렇게 짐을 쪼개 나누는 걸
분산이라고 불러요.
샤딩이라고도 해요.

나눌 조각
A
B
C
D
E
F
1번 대
2번 대
3번 대
눌러서 조각을 여러 대에 나눠봐요

조각을 눌러 여러 대에 나눠 담아봐요. 각 대는 전체의 일부만 가져요.

짐이 여러 대로 흩어졌죠.
한 대가 안던 부담이 가벼워졌어요.
데이터가 더 늘어나면
그냥 대를 한 대 더 붙이면 돼요.
그러면 새 조각은 새 대가 맡죠.
이렇게 늘려 갈 수 있으니
아주 큰 데이터도 담을 수 있어요.
그런데 한 가지 걱정이 생겨요.
그 한 대가 갑자기 죽으면 어쩌죠?

03

같은 걸 복사해 둬요

나눠 담으면 한 가지 약점이 있어요.
어떤 조각을 맡은 대가 죽으면
그 조각이 통째로 사라져요.
그래서 같은 데이터를
여러 대에 복사해 둬요.
한 대가 죽어도
복사본을 가진 다른 대가 이어받죠.
그래서 데이터가 안 깨져요.
이렇게 같은 걸 여러 대에 복사하는 걸
복제라고 불러요.

먼저 복사한 뒤, 한 대를 꺼 봐요

복사를 눌러 같은 데이터를 여러 대에 둬봐요. 한 대를 꺼도 다른 대가 살아 있어 안 깨져요.

한 대를 꺼도 멀쩡했죠.
복사본이 곁을 지켜 준 덕분이에요.
여기서 두 가지를 꼭 구분해요.
나눠 담는 분산은 조각을 쪼개
서로 다른 대에 나누는 것이고,
복사해 두는 복제는 같은 걸
여러 대에 똑같이 두는 것이에요.
분산은 나누기, 복제는 복사하기.
둘은 비슷해 보여도 전혀 다른 일이에요.

04

느슨한 그릇, NoSQL

그런데 데이터가 어마어마하게 많고
아주 빠르게 들고나야 하면
엄격한 표가 오히려 거추장스러워요.
칸을 줄 맞춰 두는 규칙이
속도를 붙들거든요.
그래서 규칙을 느슨하게 푼 그릇을 써요.
표 대신 키 하나에 값 하나를 매달아
바로 담고 바로 꺼내는 식이죠.
앞에서 본 해시를 크게 키운 셈이에요.
이런 느슨한 그릇을 NoSQL이라고 불러요.

엄격한 표
-
느슨한 키-값 (NoSQL)
-
잣대를 눌러 두 그릇을 비교해봐요

엄격한 표와 느슨한 키-값 그릇을 눌러 비교해봐요. 느슨한 쪽이 거대하고 빠른 처리에 유리해요.

느슨한 그릇은
규칙이 적은 만큼 자유롭고 빨라요.
표처럼 칸을 딱딱 맞추지 않아도
키만 있으면 값을 바로 담고 꺼내요.
그 대신 줄을 맞춰 주는 깔끔함은
조금 내려놓는 거죠.
무엇을 얻고 무엇을 내려놓을지
쓰임에 맞게 고르면 돼요.
거대하고 빠른 데이터에는
이 느슨한 그릇이 잘 맞아요.

05

데이터 영역을 정리해볼까요

여기까지 먼 길을 걸어왔어요.
값을 담는 그릇에서 시작해
그 그릇을 모은 데이터베이스를 봤고,
거대한 표에서 원하는 줄을
빠르게 찾는 법을 배웠어요.
지름길을 만드는 인덱스,
표끼리 잇는 관계,
중간에 끊겨도 안전한 처리까지요.
그리고 오늘은 한 대로 부족할 때
나눠 담고 복사해 두는 법을 봤어요.

데이터 영역의 큰 줄기를 차례로 눌러 닫아봐요

데이터 영역의 큰 줄기를 차례로 눌러 닫아봐요. (그릇 → 데이터베이스 → 빠른 찾기 → 인덱스 → 관계 → 안전한 처리 → 나눠담기와 복제)

한 줄로 모으면 이래요.
데이터가 한 대로 감당 안 되면
여러 대에 조각내 나눠 담고(분산),
안 깨지게 여러 대에 복사해 둬요(복제).
나누기와 복사하기는 다른 일이에요.
거대하고 빠른 처리를 위해선
표를 느슨하게 푼 그릇 NoSQL을 써요.
이건 해시를 크게 키운 그릇이라,
다음에 만날 인공지능의
어마어마한 데이터로 이어지는 다리예요.

이제 데이터를 다루는 큰 그림이
한눈에 들어오죠.
작은 그릇 하나에서 시작해
여러 대에 나누고 복사하는
거대한 살림까지 왔어요.
정보를 안전하게 담고
빠르게 찾고 크게 키우는 이 솜씨가
다음 영역인 인공지능을
떠받치는 바탕이 돼요.
데이터가 모이는 곳에서
생각하는 기계가 자라나거든요.

한 줄 정리데이터가 한 대로 감당 안 되게 커지면, 여러 대에 조각내 나눠 담아요. 이걸 분산이라고 해요. 각 대는 전체의 일부만 가지니, 모이면 아주 큰 데이터도 담을 수 있어요. 그리고 한 대가 죽어도 안 깨지게, 같은 데이터를 여러 대에 복사해 둬요. 이걸 복제라고 해요. 나눠 담는 분산과 복사해 두는 복제는 다른 개념이에요. 분산은 짐을 쪼개 나누는 것, 복제는 같은 짐을 여러 곳에 두는 것이죠. 이렇게 거대하고 빠른 처리를 위해, 엄격한 표 형식을 느슨하게 푼 그릇을 NoSQL이라고 해요. 해시처럼 키로 값을 바로 담고 찾는 그릇을 크게 키운 셈이라, 다음 영역인 인공지능이 다루는 어마어마한 데이터로 가는 다리가 돼요.
데이터
이 페이지가 도움 됐다면 후원하기