2022/05 4

[Postgresql] Transaction Isolation Level

트랜잭션 격리 수준 (Transaction Isolation Level) - 여러 트랜잭션이 동시에 처리될 때 하나의 트랜잭션이 다른 트랜잭션과의 격리 수준을 어떻게 할지 결정하는 레벨. PostgreSQL에서는 4가지의 표준 Transaction Isolation Level이 있습니다. 먼저 PostgreSQL에서 트랜잭션을 설정하는 방법은 아래 공식 문서를 참고하시면 됩니다. https://www.postgresql.org/docs/current/sql-set-transaction.html 격리 수준은 READ UNCOMMITTED -> SERIALIZABLE 순서로 높아지며, 기본 값은 READ COMMITTED입니다. 1) READ UNCOMMITTED 설정에는 정의되어 있지만, 사실상 지원하지 ..

Database 2022.05.20

[RabbitMQ] Exchange Type

RabbitMQ에서 모든 메시지는 Exchange에서 먼저 받고 그 Type과 Binding 에 따라 각 Queue로 전달됩니다. 전체적인 구조는 아래와 같습니다. RabbitMQ에서는 4가지 Exchange Type이 존재합니다. 1. Direct - routing key를 기반으로 메시지를 전달 2. Fanout - 브로드캐스트 방식 - 모든 큐에 메시지를 전달 3. Topic - routing key 패턴 기반으로 메시지를 전달 4. Headers - routing key 대신 메시지 헤더에 다양한 속성을 추가하여 메시지를 전달

RabbitMQ 2022.05.18

[RabbitMQ] 기초 개념 - 5 (Topic)

이전 Routing을 통해 특정 Queue로 메시지를 전송할 수 있었습니다. 이때 type은 direct로 설정을 했는데요. 하지만 이렇게 direct를 사용하면 하나의 기준으로만 Routing을 할 수 있습니다. 이번에는 여러 기준으로 Routing을 할 수 있는 Topic에 대해 정리하겠습니다. Topic은 .(dot)으로 구분된 단어로 설정 할 수 있습니다. 예시) "stock.usd.nyse", "nyse.vmw", "quick.orange.rabbit". Topic Exchange는 Direct Exchange와 유사합니다. 특정 키로 보낸 메시지는 일치하는 바인딩 키로 바인딩된 모든 큐에 전달됩니다. 바인딩 키에는 두 가지 규칙이 있습니다. 1) * 는 정확히 한 단어를 대체. 2) # 는 0..

RabbitMQ 2022.05.16

[RabbitMQ] 기초 개념 - 4 (Routing)

이번 포스트 정리 개념은 Routing 입니다. Routing의 기본 개념은 출발지에서 목적지로 데이터가 전달될 수 있도록 경로를 선택하는 것을 말합니다. RabbitMQ에서의 Routing 역시 비슷한 개념으로 볼 수 있습니다. 아래 그림과 같이 내가 보내고 싶은 Queue의 경로에만 메시지를 전송합니다. 위와 같이 하려면 Exchange type을 direct로 선언해야 합니다. 이전까지 사용했던 fanout 방식이 모든 Queue에 전송했다면, direct 방식은 경로에 따라 특정 Queue에만 메시지를 전송합니다. 로그 관리 시스템이라면 다음과 같이 특정 Queue는 Error 레벨만 수신하고, 나머지 레벨은 또 다른 Queue에서 처리하는 방식으로 나누어 보다 효율적인 데이터 관리가 가능합니다.

RabbitMQ 2022.05.16