Loading...
MySQL 9.5 Reference Manual 9.5의 18.8.1 FEDERATED Storage Engine Overview의 한국어 번역본입니다.
아래의 경우에 피드백에서 신고해주신다면 반영하겠습니다.
감사합니다 :)
표준 스토리지 엔진(MyISAM, CSV, InnoDB 등) 중 하나를 사용하여 테이블을 생성하면, 테이블은 테이블 정의와 그에 연관된 데이터로 구성됩니다. FEDERATED 테이블을 생성할 때도 테이블 정의는 동일하지만, 데이터의 물리적 저장은 원격 서버에서 처리됩니다.
FEDERATED 테이블은 두 요소로 구성됩니다:
원격 서버: 데이터베이스 테이블을 가지고 있으며, 이는 다시 테이블 정의(MySQL 데이터 딕셔너리에 저장됨)와 연관된 테이블로 구성됩니다. 원격 테이블의 테이블 타입은 MyISAM 또는 InnoDB를 포함하여, 원격 mysqld 서버가 지원하는 어떤 타입이든 될 수 있습니다.
로컬 서버: 데이터베이스 테이블을 가지고 있으며, 여기서 테이블 정의는 원격 서버의 해당 테이블 정의와 일치합니다. 테이블 정의는 데이터 딕셔너리에 저장됩니다. 로컬 서버에는 데이터 파일이 없습니다. 대신, 테이블 정의에는 원격 테이블을 가리키는 연결 문자열이 포함됩니다.
로컬 서버의 FEDERATED 테이블에 대해 쿼리와 스테이트먼트를 실행하면, 로컬 데이터 파일에서 정보를 insert, update 또는 delete하는 작업은 대신 실행을 위해 원격 서버로 전송되며, 그곳에서 원격 서버의 데이터 파일을 갱신하거나 원격 서버에서 일치하는 로우들을 반환합니다.
FEDERATED 테이블 구성을 위한 기본 구조는 Figure 18.2, “FEDERATED Table Structure”에 나와 있습니다.
Figure 18.2 FEDERATED Table Structure

클라이언트가 FEDERATED 테이블을 참조하는 SQL 스테이트먼트를 발행하면, 로컬 서버(SQL 스테이트먼트가 실행되는 곳)와 원격 서버(데이터가 물리적으로 저장된 곳) 사이의 정보 흐름은 다음과 같습니다:
스토리지 엔진은 FEDERATED 테이블이 가진 각 컬럼을 검사하고, 원격 테이블을 참조하는 적절한 SQL 스테이트먼트를 구성합니다.
이 스테이트먼트는 MySQL 클라이언트 API를 사용하여 원격 서버로 전송됩니다.
원격 서버가 이 스테이트먼트를 처리하고, 로컬 서버는 이 스테이트먼트가 생성하는 결과(영향을 받은 로우 수 또는 결과 집합)를 가져옵니다.
스테이트먼트가 결과 집합을 생성하는 경우, 각 컬럼은 FEDERATED 엔진이 기대하고 클라이언트에게 원래의 스테이트먼트 결과를 보여주는 데 사용할 수 있는 내부 스토리지 엔진 포맷으로 변환됩니다.
로컬 서버는 MySQL 클라이언트 C API 함수들을 사용하여 원격 서버와 통신합니다. 스테이트먼트를 전송하기 위해 mysql_real_query()를 호출합니다. 결과 집합을 읽기 위해서는 mysql_store_result()를 사용하고, mysql_fetch_row()를 사용하여 로우를 한 번에 하나씩 가져옵니다.
18.8 The FEDERATED Storage Engine
18.8.2 How to Create FEDERATED Tables