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 가능합니다.