[SQL] 내멋대로 강좌. 비개발자도 스티밋 통계를 뽑을 때까지 - 1편 - 데이터베이스 개념편

실력이 미천하지만 제가 아는 한도 내에서 데이터베이스 강좌를 한편씩 올리려고 합니다. 비 IT인들도 따라할수 있는 수준으로 진행하려고 노력할 예정이며 최종 목표는 steemsql을 통해 여러가지 통계를 뽑는 것입니다. 프로그램 언어는 다양하며 그만큼 사용법도 제각각입니다. 하지만 SQL은 한번 배우고 익혀놓으면 다른 데이터베이스라도 무리없이 금방 적응해서 사용할 수 있습니다. ( 오라클, MSSQL, MySql 등) . 데이터베이스에 일을 시키는 표준 언어라고 생각하시면 되겠습니다.

요즘은 IT전공이 아니더라도 데이터베이스를 많이들 배우는 것 같습니다. 데이터에서 어떤 의미있는 정보를 추출하여 좀더 나은 의사결정을 할수 있게 만들기 때문입니다.

"그거 전산(데이터 처리)부서에 요청하면 되는거 아니야?"

라고 생각하실 분이 계실지도 모르겠습니다만. 명확한 차이가 있습니다. 어떤 정보를 추출할 수 있는지 아는것과 모르고 요청하는 것은 하늘과 땅 차이입니다. 드론으로 예를 들죠. 드론 조종기의 사용법을 모르고 친구에게 드론을 조종하라고 하는것과 숙지한 다음 친구에게 조종을 시키는 것 정도의 차이라고 생각하시면 됩니다. 자신이 활용법을 모르는데 어찌 좋은 정보를 추출할 수 있겠습니까?

흔히들 회사 내에서는 '정보계'라고 부르지요. 기업의 자금, 영업, 회계, 인사 등 전사적 데이터가 모두 모여 기업의 특성 별 가치있는 자료를 추출해 기업의 향후 비지니스 전략에 중요한 지표로 쓰이죠. 많은 분들이 알고 계시듯 '노키아', '소니', '모토로라' 등이 시장의 트렌드에 적응하지 못해 몰락한 기업들입니다. 그들은 이 전략을 잘못 세운것이죠.

여러분들도 스티밋이나 회사 내에서 또는 작은 구멍가게라도 운영한다면 이 데이터라는 것을 통해 중요한 지표를 뽑아내 가치있는 결정을 내릴 수 있겠습니다. 저는 이 데이터베이스에서 정보를 추출할 수 있는 SQL을 설명해드리기 위한 제 나름대로의 강좌를 진행할 예정입니다.

스티밋에 투자하신 분들 혹은 투자하려고 하시는 분들은 나름의 의미있는 통계를 뽑으려고 생각중일수도 있을 것입니다. 이 지표의 기준은 개개인마다 다를 것이며 니즈와 전략이 제각각 다를것입니다. 나름의 기준으로 통계를 추출하여 투자에 참고하실 수도 있겠습니다.

저는 무언가를 익힐 때 정의부터 명확하게 내리는 것을 좋아합니다. 첫번째 편은 데이터베이스의 개념부터 잡도록 하겠습니다.


데이터베이스(DATABASE)란 무엇인가?

자료를 저장해놓는 곳. DATA + BASE. 말 그대로.

첫번째. 데이터(자료)와 인포메이션(정보)의 차이?

자료는 가공되지 않은 팩트를 이야기 한다. 예를 들어 2017년 9월 1일부터 30일까지의 일기예보는 자료다. 이 자료를 가지고 9월 강수 확률을 구해서 9월 평균 15%의 강수확률이 있었다고 하면 이것은 정보가 된다. 우리는 정보를 구하기 위해 수많은 데이터(자료)를 저장하고 있다.

우리가 네이버에서 검색하는 하나하나 모두 데이터베이스에 저장해서 실시간 검색어 순위라던지 2017년 상반기 트렌드 같은 정보가 나오는 것이다. 이 정보의 가치는 두말 하면 입아플 것이다. 개인적으로 오바마의 2012년 대선의 선거 승리를 이끌어낸 빅데이터 활용 팀을 소개하는 책을 보면 데이터의 중요성을 뼈저리게 알수 있다.

빅데이터, 승리의 과학

두번째. 데이터베이스는 엑셀과 같다?

나는 비 IT인에게 데이터베이스를 설명 한다면 데이터베이스 = 엑셀이라고 표현할 것이다. 가장 쉽게 받아들일 수 있는 개념이기 때문이다.

1. 엑셀 파일 하나는 하나의 데이터베이스라고 생각할 수 있다.
2. 'Sheet1, Sheet2, Sheet3'은 각각 하나씩의 테이블이라고 표현할 수 있다.
3. 'A, B, C, D, E, F...' 는 컬럼(column : 항목)이라고 표현한다.

  • 그림 내에서 주민번호, 이름, 나이를 생각하면 된다.

4. 엑셀에서 행이라고 표현하는 1부터의 숫자는 데이터베이스에서는 로우(row)라고 표현한다.

그림(엑셀) 내에서 '고길동'과 '어여쁜'의 데이터를 저장하듯 여러분의 회사 내 데이터도 데이터베이스에 엑셀처럼 이쁘게 여러가지 데이터가 저장되고 있을 것이다.

이정도 개념만 알아도 전산부서(회사)에서 쉽게 무시하진 않을 것이다.

용어 활용편 ) "우리 DB에 고객정보 테이블안에 나이 컬럼이 없나요?"

세번째. 데이터베이스도 컴퓨터다.

데이터베이스, DB 라고 부르지만 신기방기한게 아니다. 데이터를 저장하는 컴퓨터라고 생각하시면 되겠다. cpu, 메모리, 디스크가 있는 다 같은 컴퓨터인 것이다. 사용 용도에 따라 컴퓨터를 서버, PC, 데스크탑, 랩탑 등으로 부른다. 그래서 다들 DB 서버라고 부른다.

네번째. 데이터베이스는 주기적으로 백업한다.

기업의 데이터베이스는 사고와 과거 데이터 복구를 대비, 각종 정보처리에 관련된 법령에 의해 데이터를 백업하도록 의무화 되어있다. 기업의 정책마다 주기는 다르겠지만 일정시간마다 백업을 하고 보관하는 기간도 나름의 법령과 약관으로 정해져있다.

삭제의 의무도 있는데 주요골자는 고객의 정보는 최소량으로 최소 기간만 저장하도록 하는게 국내의 정보보호법이며 고객의 요청에 따라 즉각 철회, 삭제할 수 있는 권리가 있고 필요의 가치가 다한 경우 정해진 일정기간 보관 후 삭제하도록 되어있다. (물론 제대로 안지켜지는 곳이 많을 걸로 본다.)

만약 여러분이 전산부서에 "몇월 데이터 없어요?" 라고 했을 때 없다고 말하는 사람은 사실 거짓말일 확률이 매우 높다. ㅋㅋ 복원하는 과정이 매우 복잡하고 매우 귀찮은 것이고 본인의 권한으로는 어림없는 일이지만 불가능한 일은 아닐것이다. 물론 기업이 소기업이라면 사정이 각각 다를 수 있겠다만은...

다섯번째. 여러분의 내공을 뽐낼 수 있는 DB관련 용어 활용편.

어떤 기업이든 전산 장애가 발생하기 마련이다. 이때 전산부서내지 회사 사람과 대화 중 이런 말 한마디쯤 던져주면 그사람은 흠칫 떨고말 것이다. 물론 길게 대화를 끌면 안되고 빨리 던지고 사라져야한다.

"이번 장애 말이에요. DB서버에 락이 걸린건가요? 원인이라도 빨리 잡아야 할텐데..." 하며 하늘을 한번 쳐다보며 한숨을 쉰 후 자리를 뜨면 가장 베스트하다.

락이 걸렸다는 것은 DB 내 같은 정보에 여러건의 수정이 들어오며 발생하는 교착상태라고 생각하면 된다. 앞서 들어온 처리가 끝나지 않으면서 뭘 처리해야할지 모르는 어리버리한 상태가 되었다고 생각하면 된다. 사람도 이런 저런 말 거의 동시에 들으면 뭘 먼저해야될지 모르는 상태가 있지 않은가? 그때와 똑같다.


다음 편에는 steemsql 서비스에 접속하는 방법과 회원정보를 추출해보는 실습을 진행할 예정입니다. 본글에 피드백을 주시는 내용에 따라 다음 포스팅의 강좌나 실습의 내용을 얼마든지 바꿀 수 있음을 미리 말씀드립니다. (관심 있어 하는 부분으로 진행하는게 당연하니까요.)

부족한 내용 보완해주시는 개발자분이나 DBA분이 계시면 본문에 참고하여 수정하며 더 공부하겠습니다. 감사합니다.

H2
H3
H4
Upload from PC
Video gallery
3 columns
2 columns
1 column
27 Comments