본문 바로가기

개발공부44

서브쿼리(Subquery)란 ✔️서브쿼리(Subquery)에 대해서 알아보자. 데이터 조회를 하다보면, 잦은 빈도로 서브쿼리를 사용하게 된다고 한다. 보통 서브쿼리는 실행 속도가 느려서 잘 안쓰는 것으로 막연하게 알고있어서 정리가 필요하다고 느꼈다. ✔️서브쿼리(Subquery)개념잡기 개념 서브쿼리는 하나의 SQL문 내에 괄호()로 감싸져서 표현되어 있는 또 다른 SQL문을 말한다. 서브쿼리를 포함하고 있는 쿼리를 외부쿼리(outer query)라고 부르며, 서브쿼리는 내부쿼리(inner query)라고 부른다. SQL 내부에서 작성되는 일시적인 테이블인데, 여기서 '일시적인 테이블’이라는 부분이 성능적인 차이를 불러온다. 구분 설명 특징 테이블(Table) DB에 물리적으로 저장된 데이터(영속적) 영속적 뷰(View) 가상의 .. 2023. 10. 15.
Spring의 3대 요소 (IoC, DI, PSA, AOP) Spring의 3대 요소 (IoC, DI, PSA, AOP) 대해서 알아보자 Spring은 엔터프라이즈 어플리케이션 개발을 편리하게 하기 위해 등장했다. Spring은 봄이란 뜻으로 기존 EJB가 너무 무거워서 나온 가벼움을 강조하는 Spring 경량화 프레임워크인데… 요즘의 Spring은 너무 뚱뚱해졌다. 하여간 스프링은 객체지향과 DI라는 핵심 도구를 가지고 유연하고 확장성 있는 설계를 가능하게 만들어준다. 스프링은 순수 자바 오브젝트(POJO)를 이용해 특정 환경과 기술에 종속되지 않은 비즈니스 로직 구현이 목표인데, 이를 위한 Spring의 3대 요소인 IoC, AOP, PSA가 있다. POJO(Plain Old Java Object)란? 간단히 해석을 하면, 오래된 방식의 간단한 자바 오브젝트라.. 2023. 10. 13.
로드밸런서(Load Balancer)란? 로드밸런서에 대해서 알아보자. 현대의 모든 정보는 인터넷을 통해 연결되어 있다. 인터넷의 발달로 데이터 통신이 많아졌고 이는 트래픽의 폭발적인 증가로 이어졌다고 한다. 트래픽의 폭발적인 증가 아무리 성능이 뛰어난 서버라고 해도 모든 트래픽을 감당해낼 수 없게됐다. 이에 기업은 서버를 추가로 구비하고 여러 대의 서버에 동일한 데이터를 저장해 수많은 트래픽을 효과적으로 분산하게 되었다. 그런데 단순히 다수의 서버를 구축해 운영한다고 해서 모든 클라이언트의 요청에 일관성 있게 응답할수 있을까? 로드 밸런싱? 쏟아지는 트래픽을 여러 대의 서버로 분산해주는 기술이 없다면 한 곳의 서버에 모든 트래픽이 몰리는 상황이 발생할 것이다. 이때 필요한 기술이 로드 밸런싱 이다. 로드 밸런서는 서버가 처리해야 하는 업무나 .. 2023. 10. 13.
동기와 비동기 동기(synchronous: 동시에 일어나는) 동기는 말 그대로 동시에 일어난다는 뜻이다. 요청과 그 결과가 동시에 일어난다는 약속이다. 요청을 하면 시간이 얼마나 걸리던지 요청한 자리에서 결과가 주어져야 한다. 요청한 결과가 한자리에서 동시에 일어남 A노드와 B노드 사이의 작업 처리 단위(transaction)을 동시에 맞추겠다. 장점: 설계가 매우 간단하고 직관적 단점: 결과가 주어질 때까지 아무것도 못하고 대기해야 한다. 비동기(Asynchronous: 동시에 일어나지 않는) 비동기는 동시에 일어나지 않는다는 의미이다. 요청한 결과는 동시에 일어나지 않을거라는 약속이다. 요청한 그 자리에서 결과가 주어지지 않는다. 노드 사이의 작업 처리 단위를 동시에 맞추지 않아도 된다. 장점: 결과가 주어지는데 .. 2023. 10. 13.