POE 모듈을 사용하여 Perl에서이 작업을 수행 할 수있는 Wheel/POCO/Option이 있습니까? 변경된 레코드 (삭제/삽입/업데이트)에 대한 DB 테이블을 모니터링하고 변경 사항에 따라 대응하고 싶습니다.변경 사항을 데이터베이스 테이블에서 모니터링하기위한 Perl POE 모듈이 있습니까?
그렇다면 일부 코드 또는이를 보여주는 링크를 제공 할 수 있습니까?
POE 모듈을 사용하여 Perl에서이 작업을 수행 할 수있는 Wheel/POCO/Option이 있습니까? 변경된 레코드 (삭제/삽입/업데이트)에 대한 DB 테이블을 모니터링하고 변경 사항에 따라 대응하고 싶습니다.변경 사항을 데이터베이스 테이블에서 모니터링하기위한 Perl POE 모듈이 있습니까?
그렇다면 일부 코드 또는이를 보여주는 링크를 제공 할 수 있습니까?
내가 알고있는 것은 아니지만, 정말로 근면 한 사람이라면 그 중 하나를 쓸 수 있습니다. 나는 그것을 할 수있는 두 가지 방법을 생각할 수 있습니다.
먼저 더 나은 방법 : 거래 로그/복제 피드에 액세스하십시오. MySQL binlog. 해당 형식으로 POE::Filter을 작성한 다음 POE::Wheel::FollowTail을 사용하여 DB에 영향을 미치는 각 명령문에 대해 하나씩 이벤트 스트림을 가져옵니다. 그런 다음 관심있는 데이터를 필터링하여 데이터를 필터링 할 수 있습니다.
좋지 않은 아이디어 : EasyDBI을 사용하여 테이블에 대해 주기적으로 select를 실행하고 변경된 사항을 확인합니다. 데이터가 작 으면 작동 할 수도 있지만 (타이밍 문제가 발생하기 쉽습니다); 데이터가 크면 비참한 실패가됩니다.
PostgreSQL을 사용하는 경우 NOTIFY라는 테이블 변경 사항에 트리거를 만들 수 있으며 클라이언트 응용 프로그램에서 연결을 열고 동일한 알림에 대해 LISTEN을 실행할 수 있습니다. 그런 다음 POE가 DBD :: Pg pg_socket 파일 디스크립터에서 파일 이벤트를 수신하도록 할 수 있습니다.
또는 다른 파일 또는 네트워크 이벤트가 트리거되도록 (파일, 명명 된 파이프 또는 소켓에 쓰는) SQL 트리거를 생성하여 POE가이를 수신하도록 할 수 있습니다.