Inter-DB Join, Distributed query

Inter-DB Join, Distributed query
Photo by Clint Adair / Unsplash

셀렉트에서는 1개의 디비 연결마다 데이터베이스 이름을 지정하여 이용하도록 귄장하고 있습니다.

같은 서버, 여러개 디비 이용하기

여러개 디비(database name)을 동시에 이용하려면 리소스 설정시 database: 빈칸으로 추가후 아래와 같이 [데이터베이스명].[테이블명] 으로 쿼리하면 됩니다.

다른 서버, 여러개 디비 이용하기

셀렉트에서는 per-table replication을 비공개 베타 오픈예정입니다.

  • 테이블단위로 복제를 지원합니다.
  • One-way 단방향 복제를 지원합니다.
  • JSON 으로 표현 가능한 데이터타입을 지원합니다.
  • binlog 옵션을 꺼도 작동합니다.
  • 변경분 체크가 가능한 쿼리가 필요하며 첫 동기화 이후부터는 DB 자원소모가 적습니다.
  • 중간 저장을 하지 않습니다.
  • 별도의 Kafka, ETL을 구축하지 않아도 됩니다.

Pros

  • 분산 데이터 환경에서도 1개처럼 쉬운 쿼리
  • 분석 상황에 맞는 인덱스 적용 가능
  • 스토리지 I/O 한계와 네트워크 대역폭을 극복 가능

Cons

  • 데이터 복제로 인해 스토리지 저장 비용이 발생
  • 대상 테이블 스키마를 직접 관리

준비 사항

  • 셀렉트 클라우드에서 리소스 추가
  • 리소스에서 'Replication Table' 추가하기
  • SELECT 쿼리작성
  • Primary Key, Updated Field 지정 (high-water mark)
  • INSERT 쿼리작성 (같은 리소스 또는 다른 리소스 가능)

실행 후 1만건 당 30초의 동기화 시간이 소요됩니다.

(2022.03) MySQL, pgSQL, SQL Server 테스트 중입니다.
팀 당 x1개 parallelism을 지원합니다. (100 records/sec)

중간 저장 옵션을 켜는 경우 Replay, 2PC, N:M 가능합니다.

Read more

주문 데이터 기반으로 티켓 관리 시스템 만들어보기

주문 데이터 기반으로 티켓 관리 시스템 만들어보기

고객을 응대할때 같은 질문을 반복하게 됩니다. 이 고객이 무엇을 샀는지, 지금 주문 상태는 어떤지, 이전에도 같은 이슈가 있었는지. 문의를 처리하는 기존 방법들부터, 주문 데이터를 기준으로 티켓을 정리하면 무엇이 달라지는지를 다룹니다. 복잡한 자동화가 아니라, 검색과 처리에 집중한 최소한의 시작 방법을 정리했습니다.

By Hakbeom Kim