본문 바로가기

전체 글363

[DB 12편] MySQL 실행계획 2탄 (실행계획 상세) 목차는 DB 목차 에 있습니다. [DB 12편] MySQL 실행계획 2탄 (실행계획 상세) MySQL 실행계획 1탄 과 연결됩니다. 예시에 사용된 테이블 DDL, DML TEAM : TEAM_MEMBER = 1 : n # DDL CREATE TABLE `team` ( `team_id` bigint NOT NULL AUTO_INCREMENT, `team_name` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, PRIMARY KEY (`team_id`) ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci CREATE TABLE `team_member` ( `team_member.. 2022. 11. 28.
[DB 11편] MySQL 실행계획 1탄 (실행계획 순서) 목차는 DB 목차 에 있습니다. [DB 11편] MySQL 실행계획 1탄 (실행계획 순서) 예시에 사용된 테이블 DDL, DML TEAM : TEAM_MEMBER = 1 : n # DDL CREATE TABLE `team` ( `team_id` bigint NOT NULL AUTO_INCREMENT, `team_name` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, PRIMARY KEY (`team_id`) ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci CREATE TABLE `team_member` ( `team_member_id` bigint NOT NULL AU.. 2022. 11. 28.
[spring 14편] spring api service, domain layer unit test 정리 source 는 Github 에 있습니다. 목차는 spring series 목차 에 있습니다. [spring 14편] spring api service, domain layer unit test 정리 spring api service, domain layer unit test 서비스, 도메인 레이어에서 단위 테스트 예제에 대해 정리했습니다. Source Reference https://www.javaguides.net/2022/03/spring-boot-unit-testing-service-layer.html 2022. 11. 26.
[spring 13편] spring api integration test 정리 source 는 Github 에 있습니다. 목차는 spring series 목차 에 있습니다. [spring 13편] spring api integration test 정리 spring api integration test api 통합 테스트 관련 예시를 정리했습니다. 예제는 get, post 2개를 정리했습니다. Source Reference https://www.springboottutorial.com/integration-testing-for-spring-boot-rest-services 2022. 11. 26.
[DB 10편] MySQL 확장성 (스케일링, 샤딩) 목차는 DB 목차 에 있습니다. [DB 10편] MySQL 확장성 (스케일링, 샤딩) 읽기 영역 확장성 레플리카 서버를 클러스터로 묶습니다. 이렇게 묶은 클러스터 앞에 Load balancer 를 구성합니다. 읽기 쿼리가 요청이 들어오면 Load balancer 는 요청을 분배해줍니다. HAProxy, 물리 Load balancer, 네트워크 load balancer 가 있습니다. 쓰기 영역 확장성 메시지 기반 오픈소스 큐 또는 카프카와 같은 메시지 기반 오픈소스를 사용하면 쓰기 요청이 늘어나도 처리가 가능합니다. 단, 메시지 기반 처리 방식은 준실시간 처리이기에 비즈니스 요구사항과 맞는지 확인이 필요합니다. 샤딩 쿼리 최적화, 인덱스 최적화, 메시지 기반 오픈소스를 써도 안될때는 샤딩을 고려해보는 것이.. 2022. 11. 25.
[DB 8편] MySQL 복제 정리 목차는 DB 목차 에 있습니다. [DB 8편] MySQL 복제 정리 MySQL 복제 동작 방식 소스는 트래픽을 받아내는 서버를 의미하며, 레플리카는 복제 서버를 의미합니다. 아래 동작 방식은 비동기로 이루어집니다. (I/O 처리) 순서 소스에서 트래픽 (데이터 변경 요청) 이 들어오면 바이너리 로그에 이벤트를 기록합니다. 복제 서버 (레플리카) 는 소스 바이너리 로그에 접근해 릴레이 로그에 copy 합니다. 복제 서버 (레플리카) 는 릴레이 로그를 읽어서 데이터를 변경합니다. MySQL 복제 형식 명령문 기반 복제 로그에 저장할 때, SQL 명령문을 저장합니다. 레플리카는 릴레이 로그에 저장된 SQL 문을 실행합니다. 명령문 방식 장단점 명령문으로 저장하기에 로그 사이즈가 작습니다. 비결정적 쿼리 (실행.. 2022. 11. 24.