실시간 데이터 조회 및 갱신시 데이터베이스 설계

조회수 5694회

안녕하세요.

마리아DB 사용 중입니다.

예를 들어 A라는 설비의 실시간으로 변하는 온도 값을 모니터링 하는 프로그램을 개발한다고 했을 때,

create table TB_EQUIP (
    equip_name varchar(20), -- 설비 이름
    temperature float -- 온도
)

로 테이블을 생성한 다음,

  1. 처음 데이터는 insert 로 A 설비에 대한 정보 row 생성
  2. 이후 실시간 온도 값은 TB_EQUIP 테이블의 temperature 값만 update
  3. 클라이언트 프로그램에서 TB_EQUIP 테이블을 일정 주기마다(예를 들면 1초) 한 번씩 select

하는 구조면 될까요?

update 가 부하가 심한걸로 아는데...

위 같은 프로세스를 구현하려고 할 때 어떻게 설계하는게 효율적인지 조언 부탁드립니다.

감사합니다.

2 답변

  • 좋아요

    2

    싫어요
    채택 취소하기

    단순하게 온도만 update하는 것은 큰 무리가 없습니다. update할 키만 인덱스를 걸어주면 됩니다.

    update하는 즉, 설비가 많아지면 update가 1초에 설비에 갯수만큼 부하가 생기고 이로인해 문제가 생길 수는 있지만 요즘 하드웨어도 좋고 마리아 DB 등과 같은 어플리케이션도 성능이 좋아 무리가 없어보입니다.

    select의 경우는 1초에 클라이언트 수만큼 부하가 생기는데 이것도 클라이언트(동시접속)가 만명 이상의 규모(하드웨어 성능에 따라 다르겠지만...)가 아니면 크게 무리가 없다고 봅니다.

    질문하신 내용에 설비가 들어가는 것으로 봐서는 범용적인 서비스가 아니라 특정 사용자들만 사용하게 될 것으로 생각이 됩니다. 부하는 크게 걱정하시지 않으셔도 될거 같습니다.

    마지막으로 실시간 DB관련해서 한가지 말씀드리면, 구글에서 인수한 firebase 라는 서비스가 있습니다. 실시간 디비를 쉽게 구현할 수 있습니다. 인프라에 대한(부하로 인한 장애 등) 걱정없이 실시간 디비 구현이 가능합니다. 예제도 있으니 참고해보시면 좋을거 같습니다.

    • 성의 답변 감사드립니다. 파이어베이스 말씀하셔서 질문 드리고 싶은데, 클라이언트 단은 웹이고, 현재 aws rds 서비스를 사용 계획중입니다. 파이어베이스의 실시간 디비를 사용한다해도 무리가 없을까요? 규모나 비용등 여러 면에서 궁금합니다. ps. 파이어베이스 이야기는 많이 들어서 찾아봤는데 정작 데이터가 아직은 부족해서 잘 모르겠더라구요. 답변 부탁드립니다. ㅠ 상남자 2016.7.13 17:24
    • https://firebase.google.com/pricing/ Manki Kim 2016.7.13 17:30
    • 가격정책은 url대로 무료 플랜부터 있으니깐 사용해보셔서 테스트 해보시는 것도 나쁘지 않을거 같습니다. Manki Kim 2016.7.13 17:29
  • 진짜 빠르게 실시간으로 그래프가 쫙쫙나와야한다면 모르겠지만 그게아니라면 10초정도의 여유를 주는것도 괜찮을것 같아요

    update가 부하가 심하니까 멤캐시드, 레디스같은 캐시데이터베이스에 저장해놓고 5분, 10분 간격으로 메인데이터베이스에 update 하는 방법도 있습니다

    아니면 서버에서 온도값을 가지고 있다가 클라이언트 프로그램에서 소켓연결해서 계속 가져오게하는 방법도 있을것 같네요. 이경우엔 또 몇분간격으로 데이터베이스에 넣어주고요

    • (•́ ✖ •̀)
      알 수 없는 사용자
    • 아 완전 실시간 정도는 아닙니다. 5초 정도만 되도 충분할 듯 싶습니다. 정리하자면 하나의 row 데이터를 수초 간격으로 update 하는 식으로 개발해도 무리나 문제 없는 방향인가요?? 상남자 2016.7.13 17:25
    • 전혀 문제될건 없죠. 윗분말씀대로 여러명이 쓰는게아닌 특수한사람만이 사용하는거라면 크게 부하가 가진 않을듯 합니다. 알 수 없는 사용자 2016.7.13 19:24

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)