2 분 소요

데이터 직군에서 사용하는 기초 지식 배웠다. 데이터의 흐름을 배웠다고 말할 수 있다. 이걸 모든 데이터 직군이 기본으로 알고 있어야 하냐면 협업에서 기본 지식을 갖고 있어야 하고, 상황마다 투입되는 인원이 제한적일 수 있기 때문이다. 전체적인 큰그림은 아래처럼.

Alt text

개발자로서는 Git을 다룰 줄 알아야 한다. 제품의 변경사항을 기록하고, 협업하여 기능을 추가할 수 있다. 데이터 직군으로서는 데이터를 다루기 위해 역시 데이터베이스를 다룰 줄 알아야 한다. 항상 pandas에서 .csv 파일을 불러올 수 없다. 데이터는 아주 방대한 양이 있을 것이고, 제한적 권한이 있을 수 있으며, 일부만 다룰 수도 있기 때문이다.

데이터베이스는 관계형 데이터베이스(Relational Database, RDB)와 그렇지 않은 데이터베이스(NoSQL)로 구분할 수 있다. RDB는 테이블의 컬럼들이 다른 테이블과 연관이 있을 때, 데이터 형식이 정해져 있을 때 주로 사용한다. 반면 NoSQL은 형식에 구애받지 않고 데이터를 저장하고 싶을 때 사용한다. RDB는 한 번 정리 된 데이터, NoSQL은 정리되지 않고 빠르게 데이터를 수집할 때 주로 사용한다.

RDB의 주요 기능은 트랜젝션. 여러 작업들이 연속적으로 처리되는 단위이다. 은행 용어랑 매우 비슷한 의미를 가지는데, 송금 작업이 성공적으로 이루어지기 위해 일련의 과정들이 있을 것이고 한 쪽에서 보내고 다른 쪽에서 받는 것이 둘 다 성공적으로 이루어져야 송금이 완료되어야 하지, 한 쪽에서는 보냈는데 다른 쪽에서 받지 못 한다면 그것은 성사되어서는 안 되며 실패로 처리되어 원래 상태로 돌아가야 한다. 트랜젝션은 이것이 기본적으로 적용된다.

이 트랜젝션을 수행하고 나서 이를 확정지어 데이터베이스를 업데이트 하는 행위를 COMMIT이라고 한다. git에서 staging하고 나서 commit하는 것과 비슷하다. ROLLBACK은 트랜젝션을 취소하는 개념이다. git에서 restore –staged와 비슷하다.

트랜젝션에는 ACID가 보장된다. Atomicity: 트랜젝션을 구성하는 하나 하나(atom)가 전부 성공하거나 전부 실패해야 한다. Consistency: 데이터베이스의 상태는 트랜젝션 전과 후에 이전과 같은 유효한 상태여야 한다; 즉 스키마에 위배되는 트랜젝션은 있을 수 없다. Isolation: 하나의 트랜젝션이 다른 트랜젝션에게 보여지는 정도이다; 예를 들어 은행에서 계좌이체를 할 때 전액을 동시에 다른 두 계좌로 각각 이체한다고 했을 때 하나의 트랜젝션으로 인해 전액이 이체되었기 때문에 다른 트랜젝션에서는 이를 알고 실행되지 않아야 한다. Durability: 트랜젝션의 COMMIT은 영구적으로 기록되어야 한다; 시스템이 다운되어도 그 COMMIT 기록은 남는다.

RDB에서 중복을 최소화, 유연성을 최대화, 오류를 최소화하기 위해 정규화를 한다. 여러 가지 이상현상을 해결할 수 있다. 함수종속 부터 확인하면 되는데, 제대로 이해하려면 연습이 많이 필요할 것이다.

NoSQL에서 공통된 점이라고 할 수 있는 것은 데이터베이스 형식이 제한적이지 않다는 것이다. 나머지는 각 NoSQL 시스템마다 다르다. 주로 다뤘던 MongoDB는 Document 형식이며, JSON 타입으로 저장할 수 있다. 웹에서 데이터 전송 형태가 대부분 JSON이기 때문에 유용하고, 기존 RDB와는 다르게 수평적 확장에 용이하다. 보다 자세한 차이점

API를 이용하여 더 세밀하게 데이터를 다룰 수 있다. API는 Application Programming Interface의 약자로, 프로그램 간 소통이 가능하게 해주는 일종의 창구라고 할 수 있다. 이를 이용하여 파이썬에서 RDB 또는 NoSQL에 연결할 수 있다. RDB로는 주로 sqlite3psycopg2가 있고, NoSQL은 Pymongo를 배웠었다.

또한 Web API를 이용해서 웹에서 CRUD(CREATE-POST, READ-GET, UPDATE-PATCH/PUT, DELETE-DELETE)을 할 수 있다. 이를 활용하여 데이터 수집 가능. 만약 API를 통해 데이터 수집이 어렵다면 크롤링을 해볼 수도 있다. requests, BeautifulSoup으로 데이터를 요청하고 parsing한다. 크롤링은 자동적으로 데이터를 수집하도록 RPA와 연계된다.

이런 내용으로 데이털를 관리했고, 데이터를 활용해서 고객/팀원/누군가에게 무언가 보여주고자 할 때 배포를 생각해봐야 한다. Docker는 가상환경인데, 어떤 OS 환경에서든지 이 가상환경에 접근하면 정해진 명령어에 따라 정확한 행동을 수행할 수 있다. 그리고 웹에서 앱을 배포할 때는 파이썬에서 Flask, Django 등을 사용할 수 있는데, Flask를 배웠다. 그리고 데이터를 보기 좋은 형식으로 나타내는 대시보드도 시도해보았다.

위 내용은 데이터 직군에 전부 공통으로 어느 정도 알고 있어야 하는 내용이라 데이터 직군과 그 업무에 대해 배운 것들도 있는데, 시간 나면 정리해봐야 겠다.

일단 몸 상태가 별로 좋지 않아서 집중이 잘 되지 않고, 마지막에는 과제가 없어서 놀았던 부분도 있다. 그리고 시간 나면 개인 프로젝트 보고 있어서 문제임.

그래도 우선순위를 정해보자면

  • Docker
  • Dashboard

oreily 책

http://www.yes24.com/Product/Goods/66277191

AARRR

  • Acquisition : 어떻게 우리 서비스를 접하고 있는가
  • Activation : 사용자가 처음 서비스를 이용할 때 긍정적인 경험을 제공하는가
  • Retention : 이후의 서비스 재사용률은 어떻게 되는가
  • Referral : 사용자가 자발적 바이럴, 공유를 일으키고 있는가
  • Revenue : 최종 목적(매출)으로 연결되고 있는가

댓글남기기