INNER JOIN과 OUTER JOIN의 차이

중복이 없는 컬럼에 대한 조인을 수행하는 일반적인 경우를 가정한다면
A와 B의 inner join은 A와 B의 교집합이 됩니다.
A와 B의 outer join은 A와 B의 합집합이 됩니다.

예제

다음과 같이 각각 단일 컬럼을 가진 두개의 테이블이 있다고 가정하고 데이터가 다음과 같을 때

A    B
-    -
1    3
2    4
3    5
4    6

A에서 유일한 값은 (1,2)이고 (3,4)는 동일한 값으로 같고 (5,6)은 B에 대해서 유일한 것에 유의해서 생각해 봅시다.

Inner join

select * from a inner join b on a.a = b.b;
select a.*, b.* from a,b where a.a = b.b;

a | b
--+--
3 | 3
4 | 4

Left outer join

Left outer join의 결과는 A의 모든 행과 B에서 같은 행을 다음과 같이 표시할 것입니다.

select * from a left outer join b on a.a = b.b;
select a.*, b.* from a,b where a.a = b.b(+);
a | b
--+-----
1 | null
2 | null
3 | 3
4 | 4

Right outer join

Right outer join의 결과는 B의 모든 행과 A에서 같은 행을 다음과 같이 표시할 것입니다.

select * from a right outer join b on a.a = b.b;
select a.*, b.* from a,b where a.a(+) = b.b;

a    | b
-----+---
3    | 3
4    | 4
null | 5
null | 6

Full outer join

Full outer join은 A와 B의 합집합 즉 A와 B의 모든 행을 리턴할 것입니다. 만약 B 내의 데이터와 ㅅㅇ응하는 데이터가 A에 없을 때, B의 자리에는 null이 차지하며 그 반대도 마찬가지 입니다.

select * from a full outer join b on a.a = b.b;

a    |   b
-----+-----
1    | null
2    | null
3    |   3
4    |   4
null |   6
null |   5

'개발 > 데이터베이스' 카테고리의 다른 글

관계대수와 관계해석  (0) 2021.07.15
데이터 무결성  (0) 2021.07.14
데이터베이스의 설계 단계  (0) 2021.07.14
스키마 정의 및 종류  (0) 2021.07.14
병렬 데이터베이스의 분할 기법  (0) 2021.07.13

도커를 왜 쓸까?

 

  • 도커는 거의 모든 데서 사용하고 있다.
  • 도커는 빠르다.
  • 언제 어디서든 규격화, 표준화된 같은 환경을 사용할 수 있다.
  • 도커를 사용하면 최초 한번은 종속성 설치, 환경 설정, 배포테스트를 최초 한번은 수행하고 그 이후에는 이 과정이 생략된다.
  • 서버를 옮긴다거나, 서버에 대한 환경이 바뀐다거나 할 때 그럴 때마다 이미지를 통해 똑같은 환경을 구현해낼 수 있다는 것은 큰 장점이다.
  • 이미지와 컨테이너의 관계는 클래스와 인스턴스의 관계와 매우 유사하다.
  • 이미지를 상속 받아서 새로운 이미지를 만들 수 있다.

도커란?

Docker는 애플리케이션과 모든 종속성을 컨테이너 형태로 함께 패키징하여 애플리케이션이 모든 환경에서 원활하게 작동하도록하는 컨테이너화 플랫폼

가상 머신 VS 컨테이너

  • 가상화에 기반
  • 도커 시스템 위에 컨테이너 개념을 도입한 방식
  • 도커는 native os와 거의 비슷할 정도로 매우 빠르다.
  • VM은 기존 OS에 새로운 OS를 통째로 가상화하는 방식

도커를 활용한 배포 과정

각각의 애플리케이션을 컨테이너화하여 마이크로서비스로 제공할 수 있다.

장고 컨테이너를 만들어서 도커 시스템 안의 컨테이너로 구성한다.

도커 시스템을 vultr 가상 서버를 빌려 올림으로써 전세계 사람들이 볼 수 있도록 배포할 수 있다.

+ Recent posts