이 문서는 지원되지 않는 버전의 PostgreSQL 용입니다.
당신은에 대해 같은 페이지를 볼 수 있습니다현재버전 또는 위에 나열된 다른 지원되는 버전 중 하나입니다.

4.2. 규약

이 섹션에서는 메시지 흐름을 설명합니다. 4 개가 있습니다 상태에 따라 다른 유형의 흐름 연결 : 시작, 쿼리, 기능 호출 및 종료. 알림 응답에 대한 특별 조항도 있습니다 명령 취소. 시작 단계.

4.2.1. 스타트 업

시작업은 인증 단계와 a로 나뉩니다 백엔드 시작 단계.

처음에는 프론트 엔드가 startuppacket을 보냅니다. 그만큼 Postmaster는이 정보와 PG_HBA.conf의 내용을 사용합니다. 파일 프론트 엔드가 어떤 인증 방법을 결정 해야하는지 결정하십시오 사용. 그런 다음 우체국 장은 다음 중 하나로 응답합니다 메시지 :

ErrorResponse

우체국 장은 즉시 닫습니다 연결.

Authenticationok

우체국 장은 백엔드로 넘어갑니다. 그만큼 우체국 장은 더 이상 참여하지 않습니다 의사소통.

AuthenticationKerberOSV4

프론트 엔드는 Kerberos v4에 참여해야합니다. 인증 대화 상자 (여기에 설명되지 않음) 우체국 장. 이것이 성공하면 우체국 장 Authenticationok으로 응답하면 응답합니다 ErrorResponse와 함께.

AuthenticationKerberoSV5

프론트 엔드는 Kerberos v5에 참여해야합니다. 인증 대화 상자 (여기에 설명되지 않음) 우체국 장. 이것이 성공하면 우체국 장 Authenticationok으로 응답하면 응답합니다 ErrorResponse와 함께.

AuthenticationUnencryptedPassword

프론트 엔드는 an을 보내야합니다 암호화되지 않은 passwordpacket. 이것이 맞다면 비밀번호, 우체국 장은 다음에 응답합니다 Authenticationok, 그렇지 않으면 응답합니다 ErrorResponse.

AuthenticationEnceCryptedPassword

프론트 엔드는 an을 보내야합니다 암호화 된 passwordpacket. 이것이 올바른 비밀번호라면 우체국 장은 Authenticationok에 응답합니다. 그렇지 않으면 ErrorResponse로 응답합니다.

프론트 엔드가 인증 방법을 지원하지 않는 경우 우체국 장이 요청한 다음 즉시 닫아야합니다 연결.

Authenticationok을 보낸 후 우체국 장은 시도합니다 백엔드 프로세스를 시작하십시오. 이것이 실패하거나 백엔드가 될 수 있기 때문입니다 스타트 업 중에 실패가 발생할 수 있습니다. 프론트 엔드는해야합니다 백엔드가 성공적인 시작을 인정할 때까지 기다리십시오. 그만큼 프론트 엔드는이 시점에서 메시지를 보내지 않아야합니다. 가능 이 단계에서 백엔드의 메시지는 다음과 같습니다.

BackendKeyData

이 메시지는 성공적인 백엔드 후에 발행됩니다 스타트 업. 그것은 프론트 엔드의 비밀 키 데이터를 제공합니다 취소 요청을 발행하려면 저장해야합니다. 나중에. 프론트 스포츠 토토 사이트이 메시지에 응답해서는 안되며 그러나 기신자를 계속 듣어야합니다 메시지.

ReadyForquery

백엔드 스타트 ​​업이 성공했습니다. 프론트 스포츠 토토 사이트 이제 할 수 있습니다 쿼리 또는 기능 전화 메시지를 발행합니다.

ErrorResponse

백엔드 시작이 실패했습니다. 연결이 닫힙니다 이 메시지를 보낸 후.

NoticerSponse

경고 메시지가 발행되었습니다. 프론트 엔드 메시지를 표시하지만 계속 듣습니다 ReadyForquery 또는 ErrorResponse.

ReadyForquery 메시지는 백엔드와 동일합니다. 각 쿼리주기 후에 발행됩니다. 코딩에 따라 프론트 엔드의 필요, 고려해야 할 것이 합리적입니다 쿼리주기를 시작하는 데 readyforquery (그리고 그런 다음 BackendKeyData는 시작의 성공적인 결론을 나타냅니다 위상), 또는 신생 기업을 종식시키는 것으로 간주합니다 단계 및 각 후속 쿼리주기.

4.2.2. 질문

쿼리주기는 쿼리를 보내는 프론트 엔드에 의해 시작됩니다. 백엔드에 대한 메시지. 그런 다음 백엔드는 하나 이상을 보냅니다 쿼리의 내용에 따라 응답 메시지 명령 문자열과 마지막으로 ReadyForquery 응답 메시지. ReadyForquery는 프론트 엔드에게 안전하게 보낼 수 있음을 알려줍니다. 새 쿼리 또는 기능 호출.

백엔드의 가능한 응답 메시지는 다음과 같습니다.

완성한 응답

정상적으로 완료된 SQL 명령.

CopyInResponse

백엔드는 프론트 엔드에서 데이터를 복사 할 준비가되었습니다. 관계. 그런 다음 프론트 엔드는 카피 다타 로우를 보내야합니다 메시지. 그런 다음 백엔드는 a로 응답합니다 "Copy"의 태그가있는 완료된 응답 메시지.

CopyOUtResponse

백엔드는 관계에서 데이터를 복사 할 준비가되었습니다. 프론트 엔드. 그런 다음 CopyDatarows 메시지를 보냅니다 그런 다음 태그가 달린 완료된 응답 메시지 "복사".

CursorResponse

쿼리는 삽입 (l), delete (l), 업데이트 (l), fetch (l) 또는 select (l) 명령. 만약 거래가 중단 된 후 백엔드는 a "*Abort State*"의 태그가 포함 된 완료된 응답 메시지. 그렇지 않으면 다음 응답이 전송됩니다.

삽입 (l) 명령의 경우 백스포츠 토토 사이트 a를 보냅니다 "insert의 태그가 포함 된 완료된 응답 메시지OID "여기는 행의 수입니다 삽입 및OID입니다 삽입 된 행의 객체 IDis 1, 그렇지 않으면OIDis 0입니다.

삭제 (l) 명령의 경우 백스포츠 토토 사이트 a를 보냅니다 "delete의 태그가 포함 된 완료된 응답 메시지"여기는 행의 수입니다 삭제.

업데이트 (l) 명령의 경우 백스포츠 토토 사이트 a를 보냅니다 "update의 태그가 포함 된 완료된 응답 메시지"여기는 행의 수입니다 삭제.

페치 (l) 또는 선택 (l) 명령의 경우 백엔드가 보냅니다 rowdescription 메시지. 그런 다음이 뒤 따릅니다 asciirow 또는 binaryrow 메시지 (a 이진 커서가 지정되었습니다 프론트 엔드에. 마지막으로 백엔드는 a "select"의 태그가 포함 된 완료된 응답 메시지.

EmptyQueryResponse

빈 쿼리 문자열이 인식되었습니다. (해야 할 필요성 이 사건은 특별히 구별됩니다.)

ErrorResponse

오류가 발생했습니다.

ReadyForquery

쿼리 문자열의 처리가 완료되었습니다. 별도 쿼리 문자열이 있으므로이를 표시하기 위해 메시지가 전송됩니다. 여러 SQL 명령을 포함 할 수 있습니다. (완료된 응답 하나의 SQL 명령을 처리하는 종료가 전체 문자열.) ReadyForquery는 항상 전송됩니다 처리 처리는 성공적으로 또는 오류가 발생합니다.

NoticerPonse

경고 메시지가 질문. 통지는 다른 응답에 추가됩니다. 백스포츠 토토 사이트 계속해서 명령을 처리합니다.

ErrorResponse를 수락 할 준비가되어 있어야합니다 다른 유형이 예상 될 때마다 alicerponse 메시지 메시지의.

실제로, 주석에 도달 할 수 있습니다 프론트 엔드가 어떤 종류의 메시지도 기대하지 않을 때 백스포츠 토토 사이트 명목상 유휴 상태입니다. (특히 백엔드 우체국 장에 의해 종료되도록 명령 할 수 있습니다. 이 경우 연결을 닫기 전에 주어진 반응을 보냅니다.) 그러한 비동기에 대한 프론트 엔드 점검이 권장됩니다. 새로운 명령을 발행하기 직전에 통지.

또한 프론트 엔드가 청취 (l) 명령을 발행하는 경우 it 어느 쪽이든 NotificationResponse 메시지를 수락 할 준비가되어 있어야합니다 시간; 아래를 참조하십시오.

4.2.3. 함수 호출

함수 호출주기는 전면 엔드에 의해 시작됩니다. 백엔드에 대한 기능을하는 메시지. 그런 다음 백엔드는 하나를 보냅니다 또는 결과에 따라 더 많은 응답 메시지 기능 호출 및 마지막으로 ReadyForquery 응답 메시지. ReadyForquery는 프론트 엔드에게 안전하게 보낼 수 있음을 알려줍니다. 새 쿼리 또는 기능 호출.

백엔드의 가능한 응답 메시지는 다음과 같습니다.

ErrorResponse

오류가 발생했습니다.

FunctionResulTresponse

함수 호출이 실행되어 반환되었습니다 결과.

functionVoidResponse

함수 호출이 실행되어 반환되었습니다 결과.

ReadyForquery

함수 호출 처리가 완료되었습니다. 처리 여부에 관계없이 ReadyForquery는 항상 전송됩니다 성공적으로 종료되거나 오류가 발생합니다.

NoticerSponse

경고 메시지가 기능 호출. 통지는 다른 것도 추가됩니다 응답, 즉 백스포츠 토토 사이트 계속 처리됩니다 명령.

프론트 엔드는 ErrorResponse를 수락 할 준비를해야합니다 다른 유형이 예상 될 때마다 alicerponse 메시지 메시지의. 또한, 청취 명령을 발행한다면 (l) 명령을 발행합니다 어느 쪽이든 NotificationResponse 메시지를 수락 할 준비가되어 있어야합니다 시간; 아래를 참조하십시오.

4.2.4. 알림 응답

프론트 엔드가 듣기 (l) 명령을 발행하는 경우 백엔드 알림을받지 않아야합니다 알림 (l) 명령이 실행될 때마다 aliceresponse!) 동일한 알림 이름.

통지 응답은 어느 시점에서나 허용됩니다 다른 백엔드를 제외하고 프로토콜 (시작 후) 메시지. 따라서 프론트 스포츠 토토 사이트 a 예상 할 때마다 NotificationResponse 메시지 메시지. 실제로, 그것은 처리 할 수 ​​있어야합니다 NotificationResponse 메시지가 참여하지 않더라도 질문.

NotificationResponse

알림 (l) 명령이 이름에 대해 실행되었습니다. 이전 청취 명령이 실행되었습니다. 알림은 언제든지 전송 될 수 있습니다.

듣는 데 사용 된 이름을 지적 할 가치가있을 수 있습니다. 그리고 명령은 이름과 관련이 없을 필요가 없습니다. SQL 데이터베이스의 관계 (테이블). 알림 이름입니다 단순히 임의로 선택한 조건 이름.

4.2.5. 진행중인 요청 취소

쿼리 처리 중에 프론트 엔드가 요청할 수 있습니다. 적절한 요청을 보내어 쿼리 취소 우체국 장. 취소 요청은 직접 전송되지 않습니다 구현 효율성의 이유에 대한 백엔드 : 우리는 원하지 않습니다 백엔드가 지속적으로 새로운 입력을 확인하도록합니다. 쿼리 처리 중 프론트 엔드. 취소 요청이 있어야합니다 비교적 드물기 때문에 우리는 그것들을 약간 번거롭게 만듭니다 정상적인 경우 형벌을 피하기 위해.

취소 요청을 발행하려면 Frontend가 새로 열립니다. 우체국 장에 연결하고 CancelRequest 메시지를 보냅니다. 일반적으로 STARTUPPACKET 메시지보다는 새로운 연결을 통해 보냈습니다. 우체국 장은 이것을 처리 할 것입니다 요청한 다음 연결을 닫습니다. 보안상의 이유로, 아니요 취소 요청 메시지에 대한 직접 답장이 이루어집니다.

ConcelRequest 메시지가 포함되지 않으면 무시됩니다 동일한 키 데이터 (PID 및 비밀 키)가 프론트 엔드로 전달되었습니다. 연결 시동 중. 요청이 PID와 일치하는 경우 현재 실행중인 백엔드 인 우체국 장에 대한 비밀 키 백엔드가 전류의 처리 중단을 신호합니다 질문.

취소 신호는 어떤 영향을 미칠 수도 있고 아닐 수도 있습니다 --- 예를 들어 백엔드가 완료된 후 도착하면 쿼리를 처리하면 효과가 없습니다. 만약 취소가 효과적이며 현재 명령을 초래합니다 오류 메시지로 일찍 종료됩니다.

이 모든 것의 상향은 두 보안의 이유로 그리고 효율성, 프론트 엔드는 취소 요청이 성공했습니다. 계속 기다려야합니다 쿼리에 응답하는 백엔드. 간단히 취소 현재 쿼리가 곧 완료 될 확률을 향상시키고 오류 메시지로 실패 할 확률이 향상됩니다. 성공하는 대신.

취소 요청이 우체국 장에 전송되고 정기적 인 프론트 엔드/백엔드 커뮤니케이션 링크에서 모든 프로세스에서 취소 요청을 발행 할 수 있습니다. 쿼리가 취소 될 프론트 엔드만이 아닙니다. 이것은 5 월입니다 다중 프로세스 구축에있어 유연성의 이점이 있습니다 응용 프로그램. 또한 보안 위험을 소개합니다 무단 사람은 쿼리를 취소하려고 할 수 있습니다. 보안 동적으로 생성 된 비밀을 요구하여 위험이 해결됩니다 취소 요청에 제공 될 키.

4.2.6. 종료

정상적이고 우아한 종료 절차는 그 것입니다 프론트 스포츠 토토 사이트 종료 메시지를 보내고 즉시 닫습니다 연결. 메시지를 받으면 즉시 백엔드가 있습니다 연결을 닫고 종료합니다.

소프트웨어 고장으로 인해 격렬한 종료가 발생할 수 있습니다 양쪽 끝에서 (즉, 코어 덤프). 프론트 엔드 또는 백엔드 인 경우 연결의 예기치 않은 폐쇄를 봅니다. 위로 그리고 종료하십시오. 프론트 스포츠 토토 사이트 a 원하지 않는 경우 우체국 장을 재구성하여 새로운 백엔드 스스로 종료하려면