본문 바로가기

🔍 CS/데이터베이스31

SNS 모델링으로 배우는 정규화 / 비정규화 - 01. 정규화 - 비정규화 핵심 이론 정규화 중복을 최소화하게 데이터를 구조화하는 프로세스 중복을 제거하고 한 곳에서만 데이터를 관리하겠다는 의미 → 데이터 정합성(어떤 데이터들이 값이 서로 일치하는 상태) 유지가 쉬움 읽을 때는 항상 원본 데이터를 참조 → 읽기시 참조 발생 테이블 설계 관점에서 조회와 쓰기 사이의 트레이드 오프 → 둘 중 어떤 것에 중점을 두어서 어떻게 설계하느냐에 따라 데이터나 아키텍처의 모습이 많이 달라짐 조회와 쓰기에서 서로 다른 최적화 기법들이 적용됨 따라서 조회와 쓰기를 분리해서 보는 습관이 좋음 비정규화(반정규화) 중복을 허용 데이터 정합성 유지가 어려움 참조 없이 읽기 가능 2023 KAKAO Tech Campus_BackEnd 필수 과정 DB(MySQL) 강의 정리 내용입니다. 2023. 6. 4.
MySQL 소개 - 02. MySQL 아키텍처 소개 3 Tier 아키텍처 클라이언트는 서버에 데이터를 요청 → 서버는 데이터베이스에게 데이터를 요청 데이터베이스 데이터베이스는 파일을 관리하는 서버 클라이언트는 json을 통해서 서버에게 데이터를 요청 → 서버는 SQL을 통해서 MySQL 서버에 데이터를 요청 (MySQL 입장에서 본다면 서버는 클라이언트와 같은 역할) MySQL 서버 MySQL 내부에서는 MySQL 엔진 → 스토리지 엔진 → 운영체제 → 디스크를 거쳐 데이터를 탐색하고 그 결과를 돌려줌 MySQL 엔진 : 판단과 명령을 하는 두뇌 스토리지 엔진 : 판단을 수행하는 역할 MySQL 엔진 MySQL 엔진은 쿼리 파서, 전처리기, 옵티마이저, 쿼리 실행기로 이루어져 있음 쿼리 파서 : SQL을 파싱하여 Syntax Tree를 만듦 → 이 과정에.. 2023. 6. 4.
MySQL 소개 - 01. MySQL을 학습하는 이유 수 많은 종류의 데이터베이스들 Document DB, Graph DB, 관계형 DB, 전문색인 DB, Key-value DB, Wide column DB 무엇부터 공부해야 할까? https://db-engines.com/en/ranking 에서 전세계 DB 랭킹을 보게 되면 1~4 위까지가 모두 관계형 데이터베이스 관계형 데이터베이스는 아직까지도 가장 범용적으로 사용됨 백엔드 개발자라면 아주 높은 확률로 관계형 데이터베이스를 실무에서 다루게 될 것 다른 종류의 DB는? 알아야 한다. 하지만 여러 종류의 DB들은 서로의 문제를 보완하고 발전한 상호보완적인 관계이다. 그렇기 때문에 하나를 깊게 학습하고나면 다른 종류의 DB들도 쉽게 학습이 가능 관계형 DB 관계형 DB 안에서도 많은 DB 들이 있음 Orac.. 2023. 6. 4.
대용량 시스템에 대한 이해 - 03. 대용량 시스템 아키텍처 맛보기 대용량 트래픽 / 데이터 처리는 왜 어려울까? 하나의 서버 또는 데이터베이스로 감당하기 힘든 부하 → 다수의 서버와 데이터베이스를 마치 하나인 것처럼 동작시키기 위해 여러가지 기법들이나 최적화 방법들을 사용하게 되는 것임 하나의 서버로 감당하기 힘들어 대부분 여러개의 서버 또는 데이터베이스를 사용함 여러개의 서버에서 유입되는 데이터의 일관성을 보장할 수 있어야 함 웹 서비스들은 24시간 무중단(언제든지 사용할 수 있어야 함) → 잘못된 코드 한 줄이 미치는 영향의 범위가 크다 코드 한 줄이 데이터에 미치는 영향범위가 굉장히 커짐 여러 마이크로 서비스들이 복잡한 의존 관계를 가짐 → 하나의 서버에서는 단순히 join도 가능하고 여러 transaction 보장들이 쉽게 되지만, micro service ar.. 2023. 6. 4.
대용량 시스템에 대한 이해 - 02. 왜 데이터베이스가 병목일까? 스케일업과 스케일 아웃 스케일 업 : 하나의 서버의 사양을 높여 더 많은 요청을 처리할 수 있게 함 유지 보수 및 관리 : 쉬움 확장성 : 제약이 있음 장애복구 : 서버가 1대, 다운 타임이 있음 스케일 아웃 : 서버의 대수를 늘림 → 하나의 서버에서 더 이상 처리하기 힘든 요청이 왔을 때 서버의 대수를 늘려 부하를 분산 시켜 문제를 해결하는 방식 유지 보수 및 관리 : 여러 노드에 적절히 부하분산 필요 확장성 : 스케일업에 비해 자유로움 장애복구 : 장애 탄력성이 있음 언제 스케일 아웃이 가능한가? 스케일 아웃을 해서 여러 대의 서버가 되더라도 클라이언트 입장에서 보았을 때 마치 하나의 서버처럼 동작하는 것으로 보이게 해야 함 → 같은 입력에 대해 항상 같은 결과를 반환 예를 들어 서버가 3대라고 해서.. 2023. 6. 4.
대용량 시스템에 대한 이해 - 01. 웹의 기본 아키텍처 기본적인 웹의 형태 클라이언트, 서버, 데이터베이스 웹의 구성이 복잡해지면 → 하나의 웹 서버가 2개의 서버로 분리됨 클라이언트(사용자) → 서비스가 증가함에 따라 무한대로 증가할 수 있는 구조 웹 서버 : html, css, js와 같은 정적 리소스 serving 웹 어플리케이션 서버 : 동적으로 변하는 data 처리 데이터베이스 클라이언트는 무한대로 늘어날 수 있지만, 웹 서버, 웹 어플리케이션 서버, 데이터베이스 자원의 유한함 때문에 늘어나는데 한계가 있음 웹 서버, 웹 어플리케이션 서버는 왜 나누어져 있을까? 태초에는 웹 서버만 있는 형태에서 웹의 복잡도가 증가함에 따라 웹 서버와, 웹 어플리케이션이 분리되는 형태로 발전해옴 분리의 핵심 관심사의 분리 관측 가능한 시스템 효율적인 리소스 사용 대용.. 2023. 6. 4.
실습 환경 구축하기 (MySQL, Intellij) 윈도우 환경에서 구축하기 MySQL 설치하기 MySQL :: Download MySQL Installer Select Operating System: Select Operating System… Microsoft Windows Select OS Version: All Windows (x86, 32-bit) Windows (x86, 32-bit), MSI Installer 8.0.33 2.4M (mysql-installer-web-community-8.0.33.0.msi) MD5: 2a330cf24915964cca87e04dbb34e5d3 | Signatu dev.mysql.com 인텔리제이 설치 - 학생인증하면 ultimate 사용 가능 → 설치 후 학생계정 인증하기 인텔리제이 MySQL 연동 MySQL.. 2023. 6. 4.