Day6-1.Database
포스트
취소

Day6-1.Database

[DAY6-1] Database

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


모든 서비스는 데이터를 만들어내고 그 데이터는 기록이 되어야 한다.

  • 우리가 어떤 사이트에 회원 가입을 하게되면 회원정보 (ID, 암호, 전화번호, 이름) 등의 데이터가 생성되고 이는 저장된다. 이와 같이 저장된 다양한 데이터들이 머신러닝, 인공지능 등을 통해 분석되어 사용자에게 맞춰진 기능제공이 가능한 것이다.

그럼 이러한 데이터들은 어디에 저장이 될까?


프로덕션 관계형 데이터 베이스 : RDBMS

관계형 데이터 베이스 중에서 웹서비스, 앱의 운영에 필요한 정보들을 저장해주는 데이터 베이스
ex. MySQL, PstreSQL

  • 빠른 처리속도가 중요하다. 데이터 베이스의 처리속도가 곧 웹,앱의 동작속도이기 때문이다.
    (VS. 데이터 웨어하우스 관계형 데이터베이스)
  • 백엔드 개발자면 기본적으로 알아야하는 기술이다.
  • SQL은 관계형 데이터베이스의 프로그래밍 언어이다.


이렇게 저장된 데이터를 분석하기 위해서 필요한 것이 데이터웨어하우스이다.


데이터웨어하우스

데이터 분석을 위한 데이터베이스
ex. BigQuery, Snowflake, MySQL

  • 회사 관련 데이터를 저장하고 분석함으로써 의사결정과 서비스 최적화에 사용한다.
  • 처리속도보다는 구조화 된 큰 데이터를 처리하는 것이 중요하다.
    (VS. 프로덕션 관계형 데이터베이스)
  • 데이터직군이라면 반드시 알아야한다. (SQL)

데이터 순환 구조

프로덕션용 데이터베이스와 데이터 웨어하우스


데이터베이스의 종류

  • 관계형 데이터베이스 : 구조화된 데이터 (table 형태)
    • 프로덕션용 관계형 데이터베이스
    • 데이터 웨어하우스용 관계형 데이터베이스
  • 비관계형 데이터베이스 : 비구조화 데이터도 다룸
    • 흔히 NoSQL 데이터베이스라고 부르기도 한다.
    • 보통 프로덕션용 관계형 데이터베이스를 보완하기위한 용도로 많이 사용한다.
    • 크게 4종류가 존재한다.
      • Key/Value Storage : Redis, Memcache, …
      • Document Store : MongoDB
      • Wide Column Storage : Cassandra, HBase, DynamoDB
      • Search Engine : Elastic Search


2. 백엔드 시스템 구성도 예제


어떤 개발자 직군이 있는지 알아보고 관계형 데이터 베이스가 전체 시스템에서 어떻게 사용되는지 구성도를 살펴보자.

프론트엔드 & 백엔드

초기에는 웹/앱 서비스를 이 둘로 나뉘었다.

  • 프론트엔드
    • 사용자와 인터랙션을 하는 부분이다.
    • 보통 웹 브라우저나 모바일 폰에 사용자에게 노출되는 서비스를 말한다.
  • 백엔드
    • 프론트엔드 뒤에 숨어서 사용자에게 보이지 않는 실제 데이터를 저장/추가하고 사용자가 요구한 일을 수행하는 부분이다.
    • 여기서 다양한 데이터베이스들이 사용된다.

다른 직군의 등장

  • 데브옵스 (DevOps)
    • 주로 백엔드에 집중을 두고 서비스의 운영을 책임지는 팀이다.
    • 회사가 작을때는 보통 백엔드 팀이 이 일을 담당한다.
  • 풀스택 (FullStack)
    • 개발속도롤 내기위해 프론트엔드/백엔드를 모두 할 수 있는 개발자를 말한다.
    • 보통 작은 회사에서 선호하는 형태의 직군이다.
  • 데이터 직군 : 사실상 소프트웨어 개발자로 데이터 웨어하우스 관련일을 담당한다.
    • 데이터 엔지니어 : 소프트웨어 개발자로 데이터 웨어하우스와 관련일을 담당한다. (MLOps라는 직군이 나타나기 시작한다.)
    • 데이터 분석가 : 데이터 웨어하우스를 기반으로 다양한 지표설정과 분석을 수행한다.
    • 데이터 과학자 : 수집된 과거 데이터를 기반으로 미래를 예측하는 모델링 혹은 개인화작업으로 서비스의 만족도를 높이고 프로세스의 최적화를 수행한다.

시스템 구성의 변화

2 tier

  • 보통 데스크탑 응용프로그램에서 사용되는 아키텍쳐
  • 클라이언트서버 두개의 티어로 구성된다.
    • 클라이언트 : 사용자가 사용하는 UI (front-end)
    • 서버 : 데이터베이스 (back-end)

3 tier

  • 웹 서비스에서 많이 사용되는 아키텍쳐
    • 프리젠테이션 티어 : front-end
    • 애플리케이션 티어 : back-end
    • 데이터 티어 : back-end

앞으로 배울 Spring Boot

Spring Boot : 자바기반의 백엔드 프레임워크 중의 하나

  • 기본적 3 tier 구조
  • 프론트엔드는 보통 React
  • 3 tier의 프리제네이션, 애플리케이션 티어의 구현을 쉽게 한다.

관계형 데이터베이스의 중요성

  • 어떤 구조이건 데이터베이스는 꼭 필요한 컴포넌트이다.
  • 이 데이터베이스를 잘 다루는 것이 좋은 개발자가 되기 위해 필요하다.
    (기본은 SQL을 잘 아는 것)
  • 백엔드 개발자로써 중요한 부분이다.
    • 데이터 모델을 잘 만들고 그걸 프론트 개발자와 공유하고 협업해야한다.
    • 속도 개선을 위한 쿼리 성능을 모니터링하고 필요시 성능개선을 수행한다.
      (어떤 경우에는 이를 전담하는 사람이 존재한다.)


그럼 관계형 데이터베이스가 무엇인지 자세히 알아보자.

3. 관계형 데이터베이스


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

Desktop View

  • 엑셀 스프레드시트 형태의 테이블로 데이터를 정의하고 저장한다.
  • 테이블에는 컬럼(열)과 레코드(행)이 존재
  • 관계형 데이터베이스를 조작하는 프로그래밍 언어 : SQL
    • 테이블 정의를 위한 DDL (Data Definition Language)
      테이블의 포맷을 정의해주는 언어
    • 테이블 데이터 조작/질의를 위한 DML (Data Manipulation Language)
      DDL로 정의된 테이블에 레코드를 추가, 수정, 삭제 혹은 읽어들이기 위해 사용하는 언어

대표적 관계형 데이터베이스

  • 프로덕션 데이터베이스 : MySQL, PostgreSQL, Oracle, …
    • OLTP (OnLine Transaction Processing)
    • 빠른 속도가 중요하다.
    • 서비스에 필요한 정보 저장
  • 데이터 웨어하우스 : Redshift, Snowflake, BigQuery, Hive, …
    • OLAP (OnLine Analytical Processing)
    • 처리 데이터 크기에 집중한다.
    • 데이터 분석이나 모델 빌딩 등을 위한 데이터를 저장한다.
  • 보통 프로덕션 데이터베이스를 복사해서 데이터 웨어하우스에 저장한다.

관계형 데이터베이스의 구조

관계형 데이터베이스는 2단계로 구성된다.

  • 가장 밑단에는 테이블들이 존재한다. (테이블은 엑셀의 시트에 해당)
  • 테이블들은 데이터베이스(or 스키마)라는 폴더 밑으로 구선된다. (엑셀에서는 파일)
  • 테이블의 구조 (= 테이블 스키마)
    • 테이블은 레코드들로 구성된다. (= 행)
    • 레코드는 하나 이상의 필드(컬럼)으로 구성된다. (= 열)
    • 필드(컬럼)는 이름과 타입과 속성(primary key)로 구성된다. Desktop View
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.

Day4.Collection

Day6-2.SQL

Comments powered by Disqus.