한 대로 부족할 때, 나눠 담기
정보가 점점 쌓이면 어떻게 될까요? 큰 창고 한 채도 언젠가는 가득 차요. 그러면 창고를 여러 채로 늘려 짐을 나눠 담아요. 게다가 창고 한 채가 무너져도 짐을 잃지 않게, 같은 짐을 다른 창고에 복사해 두기도 해요. 데이터도 똑같아요. 한 대로 감당이 안 되면 여러 대에 나눠 담고, 안 깨지게 여러 대에 복사해 둬요.
한 대로는 부족해져요
앞에서 데이터베이스가
거대한 창고라는 걸 배웠어요.
안전하게 담고 빠르게 찾았죠.
그런데 정보는 멈추지 않고 쌓여요.
사람이 늘고, 기록이 늘고,
사진과 영상까지 들어와요.
아무리 큰 창고 한 채라도
언젠가는 꽉 차서 더는 못 담아요.
한 대로는 부족해지는 순간이 와요.
데이터를 눌러 계속 늘려봐요. 한 대의 용량을 넘기면 더는 담지 못해요.
한 대가 꽉 차 버렸죠.
더 넣고 싶어도 자리가 없어요.
더 큰 컴퓨터로 바꿔도
그것마저 언젠가 또 가득 차요.
한 대를 끝없이 키우는 데는
분명한 한계가 있어요.
그렇다면 방법을 바꿔야겠죠.
한 대를 키우는 대신
여러 대로 늘리면 어떨까요?
여러 대에 나눠 담아요
방법은 생각보다 간단해요.
데이터를 조각으로 나눠
여러 대에 흩어 담는 거예요.
한 대가 전부를 안고 끙끙대는 대신
각 대가 일부만 맡아요.
예를 들어 이름이 ㄱ부터 ㅁ까지는 1번 대,
ㅂ부터 ㅎ까지는 2번 대에 담는 식이죠.
이렇게 짐을 쪼개 나누는 걸
분산이라고 불러요.
샤딩이라고도 해요.
조각을 눌러 여러 대에 나눠 담아봐요. 각 대는 전체의 일부만 가져요.
짐이 여러 대로 흩어졌죠.
한 대가 안던 부담이 가벼워졌어요.
데이터가 더 늘어나면
그냥 대를 한 대 더 붙이면 돼요.
그러면 새 조각은 새 대가 맡죠.
이렇게 늘려 갈 수 있으니
아주 큰 데이터도 담을 수 있어요.
그런데 한 가지 걱정이 생겨요.
그 한 대가 갑자기 죽으면 어쩌죠?
같은 걸 복사해 둬요
나눠 담으면 한 가지 약점이 있어요.
어떤 조각을 맡은 대가 죽으면
그 조각이 통째로 사라져요.
그래서 같은 데이터를
여러 대에 복사해 둬요.
한 대가 죽어도
복사본을 가진 다른 대가 이어받죠.
그래서 데이터가 안 깨져요.
이렇게 같은 걸 여러 대에 복사하는 걸
복제라고 불러요.
복사를 눌러 같은 데이터를 여러 대에 둬봐요. 한 대를 꺼도 다른 대가 살아 있어 안 깨져요.
한 대를 꺼도 멀쩡했죠.
복사본이 곁을 지켜 준 덕분이에요.
여기서 두 가지를 꼭 구분해요.
나눠 담는 분산은 조각을 쪼개
서로 다른 대에 나누는 것이고,
복사해 두는 복제는 같은 걸
여러 대에 똑같이 두는 것이에요.
분산은 나누기, 복제는 복사하기.
둘은 비슷해 보여도 전혀 다른 일이에요.
느슨한 그릇, NoSQL
그런데 데이터가 어마어마하게 많고
아주 빠르게 들고나야 하면
엄격한 표가 오히려 거추장스러워요.
칸을 줄 맞춰 두는 규칙이
속도를 붙들거든요.
그래서 규칙을 느슨하게 푼 그릇을 써요.
표 대신 키 하나에 값 하나를 매달아
바로 담고 바로 꺼내는 식이죠.
앞에서 본 해시를 크게 키운 셈이에요.
이런 느슨한 그릇을 NoSQL이라고 불러요.
엄격한 표와 느슨한 키-값 그릇을 눌러 비교해봐요. 느슨한 쪽이 거대하고 빠른 처리에 유리해요.
느슨한 그릇은
규칙이 적은 만큼 자유롭고 빨라요.
표처럼 칸을 딱딱 맞추지 않아도
키만 있으면 값을 바로 담고 꺼내요.
그 대신 줄을 맞춰 주는 깔끔함은
조금 내려놓는 거죠.
무엇을 얻고 무엇을 내려놓을지
쓰임에 맞게 고르면 돼요.
거대하고 빠른 데이터에는
이 느슨한 그릇이 잘 맞아요.
데이터 영역을 정리해볼까요
여기까지 먼 길을 걸어왔어요.
값을 담는 그릇에서 시작해
그 그릇을 모은 데이터베이스를 봤고,
거대한 표에서 원하는 줄을
빠르게 찾는 법을 배웠어요.
지름길을 만드는 인덱스,
표끼리 잇는 관계,
중간에 끊겨도 안전한 처리까지요.
그리고 오늘은 한 대로 부족할 때
나눠 담고 복사해 두는 법을 봤어요.
데이터 영역의 큰 줄기를 차례로 눌러 닫아봐요. (그릇 → 데이터베이스 → 빠른 찾기 → 인덱스 → 관계 → 안전한 처리 → 나눠담기와 복제)
한 줄로 모으면 이래요.
데이터가 한 대로 감당 안 되면
여러 대에 조각내 나눠 담고(분산),
안 깨지게 여러 대에 복사해 둬요(복제).
나누기와 복사하기는 다른 일이에요.
거대하고 빠른 처리를 위해선
표를 느슨하게 푼 그릇 NoSQL을 써요.
이건 해시를 크게 키운 그릇이라,
다음에 만날 인공지능의
어마어마한 데이터로 이어지는 다리예요.
이제 데이터를 다루는 큰 그림이
한눈에 들어오죠.
작은 그릇 하나에서 시작해
여러 대에 나누고 복사하는
거대한 살림까지 왔어요.
정보를 안전하게 담고
빠르게 찾고 크게 키우는 이 솜씨가
다음 영역인 인공지능을
떠받치는 바탕이 돼요.
데이터가 모이는 곳에서
생각하는 기계가 자라나거든요.