db 데이터 변경시 웹에서 알수있는 방법이 있나요?
조회수 15091회
-
(•́ ✖ •̀)
알 수 없는 사용자
2 답변
-
데이터베이스에서 특정 값이 변경되는 것을 알 수 있는 방법은 별도로 존재하지 않습니다.
다음과 같은 방법으로 해결할 수 있습니다.
- 데이터베이스에 값을 변경하는 프로그램을
변경자
라고 하겠습니다. - 데이터베이스의 값 변경을 알아채야 하는 웹 클라이언트를
웹
이라고 하겠습니다.
데이터베이스로 부터 변경사항을 알아차리는 것은 어려움으로,
변경자
가 데이터베이스에 값을 변경할 때, 변경된 것을 알아야하는웹
에게 알려주는 것으로 대체하는 것이 좋겠습니다. 그리고 즉시 변경된 것을 알릴 수 없는 경우를 위해서, 변경사항을 나중에 알릴 수 있는 방법을 별도로 마련해야 합니다. 예를 들어 변경시점을 알 수 있도록 변경시간을 기록하거나, 변경 사건 자체를 데이터베이스 혹은 로그에 임시로 저장해둬야 합니다.이제
변경자
가웹
에게 알리는 방법은 서버에서 클라이언트에 알려줄 수 있는웹 소켓
이나,롱폴링 혹은 코멧
을 사용해야 합니다. 혹은 반대로웹
이 짧은 주기로 서버에 지속적으로 요쳥하는폴링(숏폴링)
방법을 사용해야 합니다.참고:
[1] 실시간 업데이트 대한 기술은 http://dev.epiloum.net/790 이문서를 참고해보세요.
[2] 그리고, 웹 소켓에 관헌 이 링크를 한번 참고 해보세요.
- 웹에서 db값을 변동시키고, 그 웹을 사용하는 다른 이용자들도 그 변동된 값으로 업데이트시키길 원하는것인데 보통은 어떤방법을 선호하나요? 알 수 없는 사용자 2016.9.6 14:20
- 보통 질문하신 내용은 웹 페이지 실시간 업데이트로 검색해보시면 내용이 많이 있을 것 같습니다. 읽어보기 시작할 만한 문서를 참고에 추가해뒀습니다. 웹 소켓 자체가 기존의 HTTP와는 별개의 프로토콜이라서, php에서 websocket 구현물을 찾아보시는 게 좋을 것 같습니다. 허대영(소프트웨어융합대학) 2016.9.8 13:34
- 데이터베이스에 값을 변경하는 프로그램을
-
(이렇게 하는게 좋은 방법이다라고 설명하는 답변이 아니라 이렇게 하는 방법도 있다는 취지로 하는 답변입니다. 어떤 방법이 좋을지는 상황에 따라 선택하시기 바랍니다.)
https://github.com/awslabs/aws-lambda-rdbms-integration
위 링크는 rdbms와 aws lambda를 사용한 예제인데요
aws lambda를 질문하신
웹
으로 대체하여 생각해보면 되겠지요..위 링크의 주된 내용을 요약해보면
특정 table에 내용이 추가(insert)되었을때
실행되는 trigger 함수를 정의하는데,
해당 trigger함수는 aws lambda 함수를 호출하는 일을 수행하는 겁니다.
위에서 말씀드린대로 lambda를
웹
으로 대체하여 생각해본다면db의 값이 수정되거나 추가되거나 기타 어떠한 동작을 할때
그 동작에 반응하는 trigger함수를 만들고
해당 함수는 웹에 알려주는 일을 하도록 하면 되겠지요.
위의 답변에서 허대영님께서 해주신 답변은 어플리케이션 단에서 클라이언트로 알려주는 기능을 구현했다면
제가 제시한 방법은 db단에서 구현을 함으로써 같은 db를 바라보는 어플리케이션이 여러개이고 각 어플리케이션마다 같은 기능을 여러번 구현 해야할때
db단에서 구현했다면 1번만 구현하면 되겠지요...
정확히 질문자님께서 원하는 방법은 아닌것같지만
이러한 방법도 있고, 영감 얻으시라고 남겨봅니다...
-
(•́ ✖ •̀)
알 수 없는 사용자
-
댓글 입력