Atlas 트리거
Atlas Triggers는 애플리케이션과 데이터베이스 로직을 실행합니다. Triggers는 이벤트에 응답하거나 사전 정의된 스케줄을 사용할 수 있습니다.
트리거는 구성된 유형의 이벤트를 수신합니다. 각 Trigger는 특정 Atlas Function에 연결됩니다. Trigger가 구성과 일치하는 이벤트를 관찰하면 '실행'됩니다. Trigger는 이 이벤트 객체를 연결된 함수에 인수로 전달합니다.
다음에서 트리거가 발동될 수 있습니다.
주어진 컬렉션의 특정 작업 유형입니다.
예약된 시간입니다.
Atlas 는 각 trigger 의 최신 실행 시간을 추적 하고 각 이벤트 가 최소 한 번 처리되도록 보장 합니다.
트리거 유형
Atlas 는 다음과 같은 유형의 트리거를 지원합니다.
데이터베이스 트리거는 문서 삽입, 변경, 삭제에 응답합니다. 데이터베이스 트리거는 연결된 각 MongoDB 컬렉션별로 구성할 수 있습니다.
예정된 트리거는 미리 정의된 일정에 따라 함수를 실행합니다.
제한 사항
Atlas 함수 제약 조건 적용
트리거는 Atlas 함수를 호출합니다. 이는 모든 Atlas 함수와 동일한 제약 조건이 있음을 의미합니다.
Atlas Function 제약 조건에 자세히 보기 .
이벤트 처리량
용량을 사용할 수 있게 되면 프로세스 이벤트를 트리거합니다. 트리거의 용량은 이벤트 순서 구성에 따라 결정됩니다.
순서가 지정된 트리거는 변경 스트림의 이벤트를 한 번에 하나씩 순서대로 처리합니다. 이전 이벤트의 처리가 완료된 후에만 다음 이벤트의 처리가 시작됩니다.
순서가 지정되지 않은 트리거는 기본적으로 한 번에 최대 10,000개까지 여러 이벤트를 동시에 처리할 수 있습니다. 트리거 데이터 소스가 M10+ Atlas 클러스터인 경우, 순서가 지정되지 않은 개별 트리거를 구성하여 10,000개의 동시 이벤트 임계값을 초과할 수 있습니다. 자세한 내용은 최대 처리량 트리거를 참조하세요.
트리거 용량은 처리량 또는 보장된 실행 속도의 직접적인 측정값이 아닙니다. 트리거 용량은 트리거가 한 번에 처리할 수 있는 최대 이벤트 수의 한도를 말합니다. 실제로 트리거가 이벤트를 처리할 수 있는 속도는 트리거 함수의 실행 시간 로직과 지정된 기간 동안 수신한 이벤트 수에 따라 달라집니다.
트리거의 처리량을 늘리려면 다음 작업을 해 볼 수 있습니다.
트리거 함수의 실행 시간 동작을 최적화합니다. 예를 들어 네트워크 호출 횟수를 줄일 수 있습니다.
이 트리거의 프로젝션 필터를 사용하여 각 이벤트 객체의 크기를 줄이세요. 최상의 성능이 구현되도록 각 변경 이벤트의 크기를 2KB 이하로 제한하세요.
트리거가 처리하는 이벤트 수를 줄이려면 일치 필터를 사용합니다. 예를 들어 특정 필드가 변경된 경우에만 어떤 작업을 수행하고 싶을 수 있습니다. 모든 업데이트 이벤트를 일치시키고 함수 코드에서 필드가 변경되었는지 확인하는 대신 트리거의 일치 필터를 사용하여 필드가 이벤트의
updateDescription.updatedFields
객체에 포함된 경우에만 트리거를 실행할 수 있습니다.
트리거의 수는 사용 가능한 Change Streams을 초과할 수 없음
Atlas 는 총 데이터베이스 트리거 수를 제한합니다. 이 제한은 Atlas cluster 의 크기에 따라 결정됩니다.
각 Atlas 클러스터 계층에는 지원되는 변경 스트림의 최대 개수가 있습니다. 데이터베이스 트리거에는 자체 변경 스트림이 필요합니다. 데이터베이스 트리거는 사용 가능한 변경 스트림 수를 초과할 수 없습니다.
서비스 제한 페이지에서 Atlas 계층에 대해 지원되는 변경 스트림 수에 자세히 보기 .
중복 이벤트 진단
정상적인 트리거 작동 중에는 트리거가 중복 이벤트를 보내지 않습니다. 그러나 일부 실패 또는 오류 조건이 발생하면 트리거가 중복 이벤트를 전달할 수 있습니다. 다음과 같은 경우 중복된 트리거 이벤트가 표시될 수 있습니다.
이벤트 처리 및 추적을 담당하는 서버에 장애가 발생합니다. 이 장애로 인해 서버는 지속형 또는 장기 저장 시스템에 진행 상황을 기록하지 못하게 되어, 일부 최신 이벤트를 처리했다는 사실을 '잊게' 됩니다.
이벤트 1부터 10까지 동시에 전송되는 비순차적 처리를 사용합니다. 이벤트 9가 실패하여 트리거 일시 중단으로 이어지는 경우, 시스템이 이벤트 9에서 재개될 때 이벤트 10과 같은 이벤트가 다시 처리될 수 있습니다. 시스템이 이벤트 순서를 엄격하게 따르지 않고 이미 처리된 이벤트를 다시 처리할 수 있으므로, 중복이 발생할 수 있습니다.
중복 trigger 이벤트가 감지되면 trigger 로그 에서 일시 중단된 트리거 또는 서버 오류가 있는지 확인합니다.