1. 개요졸업논문으로 Kafka와 RabbitMQ에 대해 작성하고 있습니다. 그 과정에서 다양한 자료 조사를 해야 했고 유용한데 번역되지 않은 자료, 논문들도 많이 있었습니다. 그래서 논문 작성 김에 해당 자료 조사를 여러 차례 블로그 글로 정리해서 올리고자 합니다 :) Kafka만의 특징 - push 방식Kafka는 push 방식으로 동작하는 기존 message Queue(RabbitMQ 등)와는 다르게 Consumer가 Broker 로부터 메시지를 직접 가져가는 Pull 방식으로 동작합니다. 즉 Consumer는 자신의 처리 능력만큼의 메시지만 가져와 처리합니다. - 로그 방식또한 in-memory 저장 방식이 아닌 메세지를 디스크에 저장한다는 특징을 가집니다. 일반적인 메세징 시스템은 Consume..
본 내용은 real MySQL 책을 참조하여 쓰여졌습니다! 1. 트랜잭션 트랜잭션의 기본 개념에 대해서는 다음 블로그를 참조해주세요! 이 글은 트랜잭션에 대해 이미 이해하고 있음을 가정하고 있습니다.https://mangkyu.tistory.com/50 [Spring] Transaction(트랜잭션)이란?오늘은 단일 쿼리로는 해결할 수 없는 로직을 처리할 때 필요한 개념인 트랜잭션에 대해 알아보고, Spring에서 어떻게 활용하는지 확인해보도록 하겠습니다. 1. Transaction(트랜잭션)이란? [ Transactionmangkyu.tistory.com 트랜잭션의 경우 InnoDB 스토리지 엔진은 지원하지만 MyISAM이나 MEMORY는 지원하지 않습니다. 트랜잭션은 꼭 여러 쿼리가 조합되..
본 내용은 real MySQL 책을 참조하여 쓰여졌습니다! 1. 기본 아키텍쳐 크게 MySQL 엔진과 스토리지 엔진으로 구분할 수 있습니다. MySQL 엔진: 1) 커넥션 핸들러: 클라이언트의 접속 및 쿼리 요청을 처리2) SQL 파서: 클라이언트가 요청한 쿼리를 MySQL이 인식할 수 있는 단위 (토큰)로 분리해 트리형태 구조로 파싱3) 전처리기: 파서 트리 내 토큰과 개체(컬럼명, 내장함수, 객체 접근권한)를 비교해 쿼리 문장의 구조적 오류 확인.4) 옵티마이저: 쿼리의 최적화된 실행방법을 탐색. 클라이언트가 요청한 쿼리에 대해 최적(최저비용)의 처리경로(방법)을 결정하는 DBMS 내부의 핵심엔진 스토리지 엔진(=핸들러) - 실제 데이터를 디스크 스토리지에 저장하거나 디스크..
본 내용은 real MySQL 책을 참조하여 쓰여졌습니다! 1. 실행 순서 일반적으로 INSERT와 UPDATE는 레코드 단위로 이루어지므로 성능상 문제가 되는 경우는 별로 없습니다. 하지만 SELECT는 여러개의 테이블로부터 데이터를 조합해서 빠르게 가져와야 하기 때문에 여러 개의 테이블을 어떻게 읽을 것인가에 많은 주의를 기울여야 합니다. SELECT s.emp_no, COUNT(DISTINCT e.first_name) AS cntFROM salaries sINNER JOIN employees e ON e.emp_no = s.emp_noWHERE s.emp_no IN (100001, 100002)GROUP BY s.emp_noHAVING AVG(s.salary) > 100ORDER BY AVG(s.s..
1. 들어가며 김영한님의 강의에서 가장 실전적인 파트를 맡고 있는 강의인 "실전! 스프링 부트와 JPA 활용 1, 2편을 듣고"를 요약하고자 합니다. 1편의 경우 Spring 프로젝트 경험이 있다면, 그리고 성공적으로 수행해냈다면 생략해도 될 것 같습니다. 저도 요약에 있어서 굳이 둘을 나눌 필요는 없을 것 같아 하나로 합쳐서 정리하고자 합니다 :) 2. 엔티티 클래스 개발 Entity는 Database의 Model에 해당되는 부분입니다. 하지만 저희는 JPA를 활용하여 '객체지향적'으로 데이터베이스를 활용하고자 합니다. 따라서 data structure처럼 Table을 Entity로 정의하고 Getter와 Setter를 모두 정의하여 사용하기보단 별도의 메서드를 정의하여 객체처럼 다루는 것이 이상적입니..
들어가며 많은 장을 뛰어넘어 7장입니다. 4에서 5장의 경우 3장에서 요구사항을 보고 열심히 노력했다면 그다지 할 것이 많은 파트는 아닙니다. 해당 3장에서 정답을 알려주는 파트에 가깝기 때문입니다. 6장의 경우엔 이미 김영한님의 Spring MVC1을 수강하셨다면 익숙한 부분이라 따로 정리하지 않았습니다. 3장 ~ 6장에서 만들었던 서버는 클라이언트에게 http request를 받아 그에 따른 response를 내려주는 것에 집중했습니다. 하지만 대부분의 서버는 해당 요청에 따라 Database에 여러 데이터를 저장하고 관리합니다. (6장까지의 서버는 간단한 구현을 위해 HashMap을 통해 user 테이블을 관리하고 있습니다.) 7장에서는 회원 데이터를 DB에 저장하는 실습을 하게 됩니다. 이때 3장..