글쓰기 연구소 5월 미션은 '릴레이 글쓰기'입니다. 3개의 조로 나눴고 각 조별로 릴레이 글쓰기를 진행하는 방식입니다. 저는 C조의 첫 주자입니다.
공통 주제도 좋지만 릴레이의 묘미를 살리기 위해 주제는 정하지 않겠습니다. 각자 의식의 흐름을 따라가면 좋을 것 같습니다. 장르불문, 소재 불문!
ex) 개발자는 코딩을 한다. → 개발하니까 어린 시절 축구하던 때가 기억난다. → 인기 스포츠인 축구 종주국 영국의 역사를 살펴보자.
[프롤로그]
어디선가 들은 이야기입니다.
유치원생에게 데이터베이스를 설명한다면 어떻게 할 텐가? 전문가라는 것은 알고 있는 전문 내용을 쉽게 설명할 수 있어야 진짜 전문가다.
그래서 도전해봅니다. 단, 제가 데이터베이스 전문가가 아닌 관계로 유치원생까진 무리이고 비전공자를 대상으로 설명해보겠습니다. 누구나 컴퓨터 교양을 쌓는 정도로 가볍게 읽을 수 있기를 바라봅니다.
비전공자에게 데이터베이스 설명하기
데이터베이스는 큰 의미로 '데이터의 집합'을 뜻합니다. 요즘 빅데이터니 데이터 분석이니 하는 말들로 인해 데이터라는 단어가 친숙할 수도 있습니다. 근데 데이터는 뭘까요? (와이파이 말고 데이터, 그거 아닙니다!)
데이터의 종류는 너무나 다양합니다.
예를 들어보겠습니다. 일상에서 카드를 정말 많이 사용하실 겁니다. 여러분이 카드를 쓰면 결제내역이 문자나 앱을 통해서 알림이 옵니다. 그런 결제내역은 결국 카드사의 데이터가 됩니다. 데이터베이스는 '데이터의 집합'이라고 했습니다. 카드사에서 수많은 사람들을 통해 모은 결제내역 정보는 하나의 데이터베이스가 될 수 있는 거죠.
너무 거창한가요? 한 가지 예를 더 들어보겠습니다. 요즘 날씨가 점점 더워지고 있습니다. 내일 날씨가 어떨지 날씨 앱으로 많이 확인하실 겁니다. 그때 보이는 맑음, 온도, 미세먼지 수치 등도 모두 데이터입니다.
데이터 분석을 한다는 것은 위와 같은 정보를 어떤 요건으로 어떻게 분석할지를 정하고 필요에 따라 시각화까지 하는 것을 말합니다. 분석 결과로 어떤 흐름을 알 수 있고 그것이 의사 결정의 기준이 될 수도 있습니다. 또한 마케팅에 사용될 수도 있죠.
앞서 말한 카드 결제내역의 데이터는 마케팅에 아주 좋은 정보입니다. 분석 결과 어떤 사람이 매일 아침 9시에 샌드위치를 결제한다는 것을 알 수 있게 되면 그 사람에게 샌드위치 가게 할인이 되는 카드 발급을 권유할 수 있습니다. 또한 샌드위치를 결제하는 사람은 이어서 카페에서 커피를 사는 비율이 높다면 샌드위치 가게에서 커피도 같이 파는 전략을 세울 수도 있습니다.
그래서 데이터베이스가 뭔데?
컴퓨터공학에서 데이터베이스는 데이터를 효율적으로 찾고 수정하고 갱신할 수 있는 데이터의 집합을 의미합니다.
다시 카드 결제내역으로 돌아가 보겠습니다. 여러분이 카드를 쓰면 해당 내역이 앱 알림으로 옵니다. 그리고 나중에 다시 결제내역을 조회할 수도 있습니다. 취소도 가능하죠. 수많은 사람들이 카드를 사용하는데 어떻게 정확하게 여러분이 쓴 내역만 보여줄 수 있을까요?
그것은 바로 카드사에서 해당 데이터를 잘 데이터베이스화 했기 때문입니다. 아주 간단히 살펴보면 다음과 같습니다. 실제로는 매우 복잡한 구조로 되어 있겠죠.
수많은 결제내역들이 위 표(table) 형태로 저장됩니다. 앱 알림을 위해서 앱은 로그인한 사용자 정보 중 이름을 바탕으로 데이터베이스에서 그 이름이 존재하는지 열심히 찾습니다. 홍길동이란 사람이 카드를 사용했다고 가정해보죠. 그러면 이름이라는 열에서 하나씩 찾아봅니다.
김모모? No. 박모모? No. 홍길동? Yes!
이름을 찾으면 함께 저장된 사용처와 금액 정보를 확인하여 알림으로 보내주는 방식입니다.
그런데 참 비효율적이지 않나요? 지금은 3명이라서 금방 찾지만 30만, 300만 명의 데이터가 쌓여있다면 굉장히 오래 걸릴 작업입니다. 지금처럼 사전 순으로 저장되어 있다고 해도 사람이 사전을 찾는 방식과 다르게 처음부터 찾아온다면 효과적이지 않습니다. 우리는 사전을 찾을 때 홍길동이라면 히읗은 가장 뒤쪽에 있다는 것을 알고 처음부터 사전의 뒷페이지를 대략적으로 펼칠 겁니다.
그렇다면 조금 더 나은 방법은 어떤 게 있을까요? 애초에 성이 '기역'으로 시작하는 그룹, 더 잘게는 '가'로 시작하는 그룹으로 나눠서 저장하면 됩니다. 그러면 홍길동이란 이름을 찾을 때는 곧바로 히읗 그룹의 데이터베이스에서 찾으면 되기 때문에 불필요한 과정을 줄일 수 있습니다. 한번 살펴볼까요?
이전의 데이터베이스를 다음과 같이 3개의 표로 나누었습니다. 홍길동이란 사람을 찾으려고 하면 바로 3번 표로 가서 찾도록 합니다. 그러면 김모모, 박모모와 비교하는 과정이 생략되어 훨씬 빠르게 찾을 수 있는 것이죠.
이렇게 효율성을 높이는 것이 데이터베이스의 궁극적인 목표입니다.
우리가 사용하는 수많은 웹 사이트나 앱들은 이런 데이터베이스에 많은 정보를 저장하고 필요에 따라 꺼내서 사용하고 있습니다. 특히 네트워크 기반 서비스는 전부 데이터베이스를 쓴다고 해도 과언이 아닙니다.
이제 어떤 서비스를 이용할 때 '이러이러한 데이터베이스에 의해서 움직이겠구나' 하는 상상을 해보는 것도 재미있을 겁니다. 우리가 흔하디 흔하게 하는 로그인에 대해서 한번 상상해보시는 건 어떨까요?