
실리콘밸리에서 날아온 데이터베이스
- 1. 데이터베이스 시스템 소개
이번 강의에는 한기용 강사님의 특강이다.
요즘 세상의 배움이란?
새로운 것을 배울 때 어떤 자세가 좋은가?
배움에는 시간과 노력이 걸린다.
적어도 6개월은 열심히 하고 그때 선택해도 늦지 않는다.
- 처음에는 열심히
- 정체기가 있다.
정체기를 극복하는 방법
- 정체기를 당연하다고 믿고, 즐기자!
- 내가 뭘 모르는지 생각해보자!
tipping point 가 되는 날이 어느순간 온다! - 잘 하는 사람 보고 기죽지 않기.
어제와 나와의 싸우자.
새로운 것을 처음 배울 때의 좋은 자세
- 자문자답, 어떤 부분은 이해하는가?
질문을 무서워하지 마라. - 마음을 편하기 먹기
- tipping point 가 온다. 발전이 더딘 기간을 즐기는 자세가 필요하다.
데이터베이스가 왜 필요한가?
- IT 서비스를 만드는데 왜 데이터베이스가 필요한가?
모든 it 서비스는 데이터를 만들어내고 이는 기록되어야 함.
어디에 이런 데이터를 저장해야 할까? => 프로덕션 관계형 데이터베이스(RDBMS)
- MySQL
- PostgreSQL
- 테이블 형식으로 데이터를 저장함
- 테이블은 다수가 저장되게 된다.
- 빠른 처리 속도가 중요하다.
- 앱/웹의 성능은 데이터베이스의 관계가 있다.
프로덕션 관계형 데이터 베이스는 웹/앱에 특화된 서비스를 지원해주는 데이터베이스를 말한다.
빠른 처리 속도가 중요하다.
빠른 처리 속도보다는 대량의 데이터를 처리하는 것이 중요하다면 데이터 웨어하우스 관계형 데이터베이스라고 한다.
데이터 웨어하우스
회사 관련 데이터를 저장하고 분석함으로써 의사결정과 서비스 최적화에 사용
BigQuery, Snowflake, MySQL ...
- 데이터를 한 곳으로 수집하여 사용한다.
- 처리 속도보다는 구조화된 큰 데이터를 처리하는 것이 중요하다.
- 데이터 엔지니어, 데이터 분석가, 데이터 과학자
백엔드 시스템 구성도 예제보기
어떤 개발자 직군들이 있는지 알아보자.
관계형 데이터베이스가 전체 시스템에서 어떻게 사용되는지 구성도를 살펴보자.
프론트엔드와 백엔드
- 프론트엔드
: 사용자와 인터랙션을 하는 부분으로 보통 웹 브라우저 혹은 모바일 폰에 사용자에게 노출되는 서비스를 말함 - 백엔드
: 프론트엔드 뒤에 숨어서 사용자에게 보이지는 않지만 실제 데이터를 저장 / 추가하고 사용자가 요구한 일을 수행하는 부분. 여기에 다양한 데이터베이스가 사용됨 - 데브옵스(Devops)
: 주로 백엔드에 집중으로 두고 서비스의 운영을 책임지는 팀 - 풀스택(FullStack)
: 개발속도를 내기 위해 프론트/백을 모두 할 수 있는 개발자 - 데이터 직군
- 데이터 엔지니어
- 데이터 분석가
- 데이터 과학자
시스템 구성의 변화 : 2 tier
보통 데스크탑 응용 프로그램에서 사용되는 아키텍쳐
클라이언트와 서버 두 개의 티어로 구성
- 클라이언트는 사용자가 사용하는 ui가 됨(front-end)
- 서버단이 데이터베이스가 됨(back-end)
시스템 구성의 변화 : 3 tier
웹 서비스에서 많이 사용되는 아키텍쳐
- 프리젠테이션 티어(Presentation Tier) : 프론트엔드
- 애플리케이션 티어(Application Tier) : 백엔드
- 데이터 티어(Data Tier) : 백엔드

- 데이터 저장 용도로 가장 많이 쓰이는 것이 RDBMS이다.
관계형 데이터베이스 소개
구조화된 데이터를 저장하는데 사용되는 관계형 데이터베이스가 무엇인지 알아보자.
- 구조화된 데이터를 저장하고 질의할 수 있도록 해주는 스토리지
- 엑셀 스프레드시트 형태의 테이블로 데이터를 정의하고 저장
- 테이블에는 컬럼(열)과 레코드(행)이 존재
SQL
- 관계형 데이터베이스를 조작하는 프로그래밍 언어
- DDL(Data Definition Language)
- DML(Data Mainipulation Language)
관계형 데이터베이스의 구조
관계형 데이터베이스는 2 단계로 구성됨
- 가장 밑단에는 테이블들이 존재(테이블은 엑셀의 시트에 해당)
- 테이블들은 데이터베이스(혹은 스키마)라는 폴더 밑으로 구성(엑셀에서는 파일)
테이블의 구조(테이블 스키마)
- 테이블은 레코드로 구성(행)
- 레코드는 하나 이상의 필드(컬럼)로 구성(열)
- 필드(컬럼)는 이름과 타입 속성(primary key)으로 구성
SQL 소개
관계형 데이터베이스의 프로그래밍 언어 SQL에 대해 배우자!
- SQL : Structured Query Language
: 관계형 데이터베이스에 있는 데이터(테이블)를 질의하거나 조작해주는 언어
- 1970년대 초반에 IBM이 개발한 구조화된 데이터 질의 언어
- 두 종류의 언어로 구성
- DDL
- DML
SQL의 단점
- 구조화된 데이터를 다루는데 최적화가 되어 있음
- 정규표현식을 통해 비구조화된 데이터를 어느 정도 다루는 것은 가능하나 제약이 심함.
- 비구조화 데이터 (Spark, Hadoop)
Star schema
- Production DB용 관계형 데이터 베이스에서는 보통 스타 스키마를 사용해 데이터를 저장
- 데이터를 논리적 단위로 나눠 저장하고 필요시 조인
- 스토리지의 낭비가 덜하고 업데이트가 쉬움
Denormalized schema
- NoSQL이나 데이터 웨어하우스에서 사용하는 방식
- 공간적인 제약이 덜하다
- 단위 테이블로 나눠 저장하지 않음으로 별도의 조인이 필요 없음
- 스토리지를 더 사용하지만 조인이 필요 없기에 빠른 계산이 가능
SQL 기본
- 다수의 sql 문을 실행한다면 ; 으로 분리
- 주석 --, /* */
- 공통 포맷이 필요(테이블/ 필드이름 명명하는 것이 중요하다.)
- primary key 유일키를 보장한다.

데이터베이스 3학년 1학기에 배웠는데 왜 기억이 가물가물했다.
복습을 제대로 해야겠다.
'2023 활동 - 4학년 > [1월 ~ 4월] sw 아카데미 백엔드 과정' 카테고리의 다른 글
[2023.01.25 / CNU SW 아카데미] 컴퓨터 네트워크 - 전송계층 (1) | 2023.01.25 |
---|---|
[2023.01.18 / CNU SW 아카데미] 백엔드 미니 데브코스 강의 (0) | 2023.01.18 |
[2023.01.16 / CNU SW 아카데미] 프레임워크를 위한 JAVA - 실습 (0) | 2023.01.16 |
[2023.01.16 / CNU SW 아카데미] 프레임워크를 위한 JAVA - 실습 (0) | 2023.01.16 |
[2023.01.16 / CNU SW 아카데미] 팀 프로젝트 2차 회의 진행 (0) | 2023.01.16 |