Logic in Code,
Freedom in Travel.

인생 뭐 있나 사람 사는거 다 똑같지

전체 글

Database/RDBMS

데이터베이스 3가지 JOIN 구조의 알고리즘 (Nested Loop, Sort/Merge, Hash)

Postgres에서 쿼리 실행 계획(Explain Query Plan)을 실행했을 때 Nested Loop 에 대해 알게 되었지만, 제대로 정리해본적은 없었기에 SQL의 3가지 JOIN 알고리즘을 정리해보려 한다. JOIN 알고리즘의 종류 Nested Loop Sort/Merge HashRDBMS 에 따른 알고리즘 지원 현황 Oracle : 3가지 모두 지원 MySQL : Nested Loop 만 지원 Postgres : 3가지 모두 지원 External Table 과 Internal TableSELECT * FROM table1 t1 INNER JOIN table2 t2 on t1.id = t2.id;External Table (Drive Table)JOIN할 때 기준이 되는 테이블이며, 위 SQ..

2024. 5. 8. 00:12
Database/RDBMS

데이터베이스 옵티마이저(Optimizer) 란

우리는 '무엇(What)'을 요구하고, DB는 '어떻게(How)'를 결정한다학교 다니던 시절부터 2년차가 되었던 시절에는 데이터베이스는 일종의 '블랙박스' 였다. SQL 문법에 맞춰 데이터를 달라고 요청하면, DB는 알아서 결과를 반환해줬다. 하지만 트래픽이 몰리고 데이터가 수천만 건을 넘어가는 시나리오를 만들어보니 직접 느끼게되었다. "같은 결과를 내는 SQL이라도, 어떻게 수행하느냐에 따라 성능은 매우 크게 차이가 난다."SQL은 비절차적 언어이다. "데이터를 줘"라고 말할 뿐, "어떤 인덱스를 타고, 어떤 순서로 조인해서 가져와"라고는 명시하지 않는다. '어떻게(How)'를 결정하는 것이 옵티마이저(Optimizer)이다. 시나리오를 만들고 테스트를 해가며 슬로우 쿼리와 싸우며 알게 된 옵티마이저의..

2024. 5. 8. 00:10
DevOps/도커 (Docker)

[Docker] - 007. Docker Swarm Port 열기 (2376/2377/7946/4789)

Docker Swarm 은 오케스트레이션 툴이다. Docker Swarm 또는 Docker 클러스터는 관리자 노드로 작동하는 하나 이상의 Dockerized 호스트와 여러 작업자 노드로 구성되어 있으며 호스트간의 연결 및 관리를 위해서는 서버의 방화벽을 설정해줘야 한다. Docker Swarm 을 사용하기 위한 Port 는 다음과 같다.TCP 2376 Port : 도커 머신이 동작하기 위해 사용되는 포트이며, 도커 클라이언트가 통신할 때 사용됨 TCP 2377 Port : Docker Swarm 또는 클러스터의 노드 간의 관리를 위해 사용되며 매니저 노드에서만 열어야 함TCP/UDP 7946 Port : 노드 간의 통신UDP 4789 Port : 클러스터에서 사용되는 Ingress 오버레이 네트워크 트래..

2024. 5. 6. 17:45
DevOps/도커 (Docker)

[Docker] - 006. Docker Swarm 이란

Docker Swarm 이란도커에서 만든 컨테이너 오케스트레이션 툴이다. 컨테이너 오케스트레이션이란 여러 호스트의 컨테이너 배포, 관리, 네트워킹, 확장 제어를 자동화하는 것을 의미한다. 비슷한 예로는 AWS ECS, K8S, Apache Mesos 등이 있다. Docker Swarm 을 사용하는 이유 도커는 기본적으로 단일 호스트에서 동작한다.하지만 단일 호스트로 구성된 환경은 확장성(Scalability)과 가용성(Availabilty), 장애 허용성(Fault Tolerance) 측면에서 많은 한계점을 가지기에 단일 호스트에서 운영을 하다 보면 문제가 발생할 수 있다. 이 문제를 해결하기 위해, 서버의 스팩을 더 높여 수직 확장을 하거나, 여러개의 컨테이너를 올려 수평 확장하는 방법이 있으며,..

2024. 5. 6. 14:27