W2D1- 실리콘밸리에서 날아온 데이터베이스 🎁

Sangwon Na·2021년 8월 10일
0
post-thumbnail


배움에는 시간과 노력이 걸린다.

  1. 버티는 힘이 중요하다. (즐겨야 합니다.)
  2. 내가 뭘 모르는지 파악 해야 한다.
  • 멍청한 질문은 없다. 대충 알거나 모르면서 안 물어보는 것이 더 큰 문제다.
  • 피드백을 잘 받아들일 수 있는지와도 연계된다.
  1. 잘 하는 사람 보고 기죽지 말자
  • 내가 이해하기 힘들다면 남들도 이해하기 힘들다.
  • 나보다 잘 하는 사람들은 그만큼 시간을 쏟았기 때문이다.

1. 데이터베이스가 왜 필요한가?

  • 모든 서비스는 데이터를 만들어내고 그 데이터의 저장을 필요로 한다.
    • 어디에 데이터를 저장해야 할까?
    • 프로덕션 관계형 데이터베이스(RDBMS)
      • 서비스(방문 트래픽, 이메일, 마케팅 등)의 운영에 필요한 데이터를 저장하는 곳(쇼핑몰 같은 곳)
      • 빠른 처리속도가 중요함
        • vs(반대). 데이터 웨어하우스 관계형 데이터베이스
        • 백엔드 개발자이건 프런트 개발자이건 잘 알아야 하는 기본 기술
  • 프로덕션 관계형 데이터베이스란?
    • 대표적으로 MySQL, PostgreSQL, Oracle이 있으며 OLTP (Oneline Transacion Processing): 빠른 속도에 집중, 서비스에 필요한 정보 저장
    • 대표적으로 MySQL
  • 데이터 웨어하우스란?
    • 데이터를 빠르게 처리하는 것보단 얼마나 큰 데이터를 처리할 수 있는냐에 초점을 맞춘 것
    • 회사 관련 데이터를 저장하고, 분석함으로써 의사결정과 서비스 최적화에 사용
    • OLAP (Online Analytical Processing)
    • 처리 데이터 크기에 집중, 데이터 분석 혹은 모델 빌딩등을 위한 데이터 저장
    • 프로덕션 데이터베이스를 복사해서 데이터 웨어하우스에 저장
  • 관계형 데이터베이스: 구조화 된 데이터
  • 비관계형 데이터베이스: 비구조화 데이터
    • 흔히 NoSQL 데이터베이스라고 부름.
    • 프로덕션용 관계형 데이터베이스를 보완하기 위한 용도

2. 백엔드 시스템 구성도

개발 직군

  • 프론트엔드
    • 사용자와 상호작용을 하는 부분으로, UI(보통 웹브라우저, 스마트폰에 사용자에게 노출되는 서비스)
  • 백엔드
    • 사용자에게 보이지 않지만, 실제 데이터를 저장/추가하고 사용자가 요구한 일을 수행하는 부분, 데이터를 저장하기 때문에 다양한 데이터베이스들이 사용됨
  • 데브옵스(DevOps)
    • 주로 백엔드에 집중을 두고 서비스의 운영을 책임지는 팀
  • 풀스택(Fullstack)
    • 프런트/백엔드 둘 다 할 수 있는 개발자
  • 데이터 직군: 데이터의 중요성이 증대되면서 3가지 데이터 직군이 등장
    • MLOps (인공지능 특화)
    • 데이터 분석가: 데이터 웨어하우스를 기반으로 다양한 지표설정과 분석 수행
    • 데이터 과학자: 과거 데이터를 기반으로 미래를 예측하는 모델링 혹은 개인화 작업으로 서비스의 만족도를 높이고 프로세스의 최적화를 수행

시스템 구성의 변화

  • 2 tier
    • Server와 Client 두개의 티어로 구성
    • 클라이언트는 사용자가 사용하는 UI
    • 서버가 데이터베이스가 됨.
  • 3 tier
    • 웹 서비스에서 많이 사용되는 아키텍쳐
      • 프레젠테이션 티어: 프론트
      • 애플리케이션 티어: 백엔드
      • 데이터 티어: 백엔드

3. 관계형 데이터베이스

  1. Customers 테이블
아이디이름이메일
white나상원white@white.com
  1. Sales 테이블
아이디구매일상품명
white2021-08-10버섯

서로 다른 테이블이지만, 아이디 필드는 관계가 서로 같아 관계형 데이터베이스로 명령어로 물어보면 대답해준다.

  • 구조화된 데이터를 저장하고 질의할 수 있도록 해주는 스토리지

  • 서로 서로 관계가 이어진 모습이 별처럼 보인다고 하여 스타 스키마 (Star schema)라고 부릅니다.
  • Production DB용 관계형 데이터베이스에서는 보통 스타 스키마를 사용해 데이터를 저장
  • 데이터를 논리적 단위로 나눠 저장하고 필요 시 조인(합치다)
  • 스토리지의 낭비가 덜하고 업데이트가 쉬움(필요한 부분만 조립하면 되기 때문에)

반대의 데이터 구조 - Denormalized schema

  • NoSQL이나 데이터 웨어하우스에서 사용하는 방식
  • 단위 테이블로 나눠 저장하지 않음으로 별도의 조인이 필요 없는 형태를 말함(ex: 나이, 성별, 주민번호 등으로 나눠서 저장하지 않고 한곳에 몰아서 저장)
  • 스토리지를 더 사용하지만, 조인이 필요 없기에 빠른 계산이 가능
  • 관계형 데이터베이스를 조작하는 프로그래밍 언어가 SQL
    • 테이블 정의를 위한 DDL(Data Definition Langeuage)
      • 테이블의 포맷을 정의해주는 언어
    • 테이블 데이터 조작/질의를 위한 DML(Data Manipulation Language)
      • DDL로 정의된 테이블에 레코드를 추가, 수정, 삭제 혹은 읽어들이기 위해 사용하는 언어
    • 테이블들은 데이터베이스(스키마)라는 폴더 밑에 구성(엑셀 파일에 해당)
      • 테이블의 구조(테이블 스키마)
        • 테이블은 레코드들로 구성 (행)
        • 레코드는 하나 이상의 필드(컬럼)으로 구성 (열)
    • 가장 밑단에는 테이블들이 존재 (엑셀의 시트에 해당)

4. SQL 소개

  • SQL: Strucured Query Language (구조화된 질의 언어)
    • 관계형 데이터베이스에 있는 데이터(테이블)를 질의하거나 조작해주는 언어
    • 구조화(틀)에 맞춰서 데이터들이 저장되어 있으니, 질의(질문)을 어떻게 하냐에 따라 저장된 데이터를 가져올 수 있다.
      • "아이디 '홍길동'인데 성별은 남자의 정보를 보여줘" 라고 구조화(정해진 순서)에 맞춰 질의를 하게 되면 데이터베이스에 저장된 값을 볼 수 있다.
  • 구조화된 데이터로 다루기 힘든 데이터는 비구조화 데이터를 다루는데 필요한 데이터베이스가 필요하게 되었는데, 이에 Spark, Hadoop과 같은 분산 컴퓨팅 환경도 존재함.
  1. SQL 기본
  • 질의하는 SQL문은 세미콜론으로 분리 구분
sql; sql;
-- 주석은 하이픈 2개
/* 단위 주석*/
  1. SQL 데이터 언어
    1. DDL(데이터 정의 언어)
    • CREATE TABLE table_name;
      • 테이블을 생성 할 때 사용
      • Primary key 속성 지정 가능
      • 성능향상을 위해 인덱스 지정
    • DROP TABLE table_name;
      • 테이블을 지울 때 사용
      • 없는 테이블을 지우려고 할 시 에러
    • ALTER TABLE
      • ALTER TABLE 테이블이름 ADD COLUMN 필드이름 필드타입; // 새로운 컬럼 추가
      • ALTER TABLE 테이블이름 RENAME 현재필드이름 TO 새필드이름
      • ALTER TABLE 테이블이름 DROP COLUMN 필드이름
      • ALTER TABLE 현재테이블이름 RENAME to 새테이블이름;
    1. DML(데이터 조작 언어)
      • 레코드 질의 언어: SELECT
        • WHERE 레코드 선택 조건
        • GROUP BY 그룹 (필드)레벨 선택 조건
        • ORDEY BY 레코드 순서
      • 레코드 추가/삭제/수정
        • INSERT INTO (추가)
        • UPDATE FROM (수정)
        • DELETE FROM (삭제)
        • vs. TRUNCATE (모든 레코드 삭제)
profile
나상원의 LOG

0개의 댓글