이 장에서는 코어 간의 인터페이스를 설명합니다.포스트그레SQL시스템 및테이블 배트맨 토토 방법, 테이블의 저장소를 관리합니다. 핵심 시스템은 여기에 지정된 것 외에 이러한 액세스 방법에 대해 거의 알지 못하므로 추가 기능 코드를 작성하여 완전히 새로운 액세스 방법 유형을 개발하는 것이 가능합니다.
각 테이블 배트맨 토토 방법은 다음 행에 설명되어 있습니다.pg_am시스템 카탈로그.pg_am항목은 이름을 지정하고핸들러 함수테이블 배트맨 토토 방법입니다. 이러한 항목은 다음을 사용하여 생성 및 삭제할 수 있습니다.배트맨 토토 방법 생성그리고삭제 배트맨 토토 방법SQL 명령.
테이블 액세스 메소드 핸들러 함수는 다음 유형의 단일 인수를 허용하도록 선언되어야 합니다.내부그리고 의사 유형을 반환합니다table_am_handler. 인수는 단순히 SQL 명령에서 핸들러 함수가 직접 호출되는 것을 방지하는 역할을 하는 더미 값입니다. 함수의 결과는 다음 유형의 구조체에 대한 포인터여야 합니다.TableAmRoutine에는 테이블 배트맨 토토 방법을 사용하기 위해 핵심 코드가 알아야 하는 모든 것이 포함되어 있습니다. 반환 값은 서버 수명이어야 하며 일반적으로 다음과 같이 정의하여 달성됩니다.정적 상수전역 범위의 변수.TableAmRoutine구조체, 배트맨 토토 방법이라고도 함API 구조체은 콜백을 사용하여 배트맨 토토 방법의 동작을 정의합니다. 이러한 콜백은 일반 C 함수에 대한 포인터이며 SQL 수준에서는 표시되거나 호출할 수 없습니다. 모든 콜백과 해당 동작은TableAmRoutine구조(콜백 요구 사항을 정의하는 구조 내부의 주석 포함) 대부분의 콜백에는 테이블 배트맨 토토 방법의 (구현자가 아닌) 사용자의 관점에서 문서화된 래퍼 함수가 있습니다. 자세한 내용은 다음을 참조하세요.src/include/access/tableam.h파일.
배트맨 토토 방법을 구현하려면 구현자는 일반적으로 AM 특정 유형의 튜플 테이블 슬롯을 구현해야 합니다(참조src/include/executor/tuptable.h), 이는 배트맨 토토 메서드 외부의 코드가 AM의 튜플에 대한 참조를 보유하고 튜플의 열에 배트맨 토토할 수 있도록 허용합니다.
현재 AM이 실제로 데이터를 저장하는 방식은 상당히 제한이 없습니다. 예를 들어, postgres의 공유 버퍼 캐시를 사용하는 것이 가능하지만 필수는 아닙니다. 사용되는 경우 사용하는 것이 합리적일 수 있습니다.PostgreSQL의 설명에 따른 표준 페이지 레이아웃PostgreSQL : 문서 : 15 : 73.6. 데이터베이스 토토 레이아웃.
테이블 배트맨 토토 방법 API의 상당히 큰 제약 중 하나는 현재 AM이 수정 및/또는 인덱스를 지원하려는 경우 각 튜플이 튜플 식별자를 가져야 한다는 것입니다(TID11399_11461PostgreSQL : 문서 : 15 : 73.6. 데이터베이스 토토 레이아웃). 반드시 하위 부분이 반드시 필요한 것은 아닙니다.TID예를 들어 다음과 같은 의미를 갖습니다.힙, 그러나 비트맵 스캔 지원이 필요한 경우(선택 사항) 블록 번호는 집약성을 제공해야 합니다.
충돌 안전을 위해 AM은 postgres를 사용할 수 있습니다.WAL또는 맞춤 구현. 만일WAL둘 중 하나가 선택됨일반 WAL 레코드사용할 수 있습니다. 또는 aPostgreSQL : 문서구현 가능합니다.
단일 트랜잭션 내에서 다양한 테이블 배트맨 토토 방법에 액세스할 수 있도록 허용하는 방식으로 트랜잭션 지원을 구현하려면 다음의 기계와 긴밀하게 통합해야 할 가능성이 높습니다.src/backend/access/transam/xlog.c.
새로운 개발자테이블 배트맨 토토 방법기존 참조 가능힙다음에 구현 있음src/backend/access/heap/heapam_handler.c구현에 대한 자세한 내용을 확인하세요.
문서에 올바르지 않은 내용이 있으면 일치하지 않습니다. 특정 기능에 대한 경험이 있거나 추가 설명이 필요한 경우 이용해주세요이 양식문서 문제를 보고합니다.