C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

메신저 프로젝트
[971] 3. 데이터베이스 설계
NeverWash [neverwash] 19085 읽음    2012-03-03 11:58
메신저 서버에서 사용할 데이터베이스를 설계해 봤습니다.
대용량 서버에서 데이터베이스가 차지하는 비중이 크지만, 제가 실력이 허접한 관계로 메신저 테스트 운영에 필요한 정도만큼만 라이트하게 해봤습니다.
스샷은 png로 첨부했습니다.

Wine
    ㄴTables
        ㄴcode    // 코드정의
        ㄴevent    // 로그인 할때 유저에게 발생시킬 이벤트에 관한 내용
        ㄴfriend    // 친구 등록과 친구의 그룹별 구분
        ㄴlog    // 각종 로그를 저장   
        ㄴpatch    // 버전별 파일관리
        ㄴrelationship    // 친구를 분류할 트리형태의 그룹 저장
        ㄴserver    // 서버 정보
        ㄴuser    // 유저 정보
    ㄴViews
        ㄴview_code    // code 테이블의 뷰테이블
        ㄴview_friend    // friend 테이블의 뷰테이블
        ㄴview_server    // server 테이블의 뷰테이블
        ㄴview_user    // user 테이블의 뷰테이블
    ㄴStored Procedures
        ㄴfriend_add    // 친구 등록
        ㄴfriend_delete    // 친구 삭제
        ㄴfriend_save    // 친구 정보 수정
        ㄴrelationship_add    // 그룹 등록
        ㄴrelationship_delete    // 그룹 삭제
        ㄴrelationship_save    // 그룹 정보 수정
        ㄴserver_heartbeat    // 서버의 접속/동작 상태를 알려줌
        ㄴserver_save    // 서버의 정보를 저장
        ㄴuser_heartbeat    // 유저의 접속/동작 상태를 알려줌
        ㄴuser_save    // 유저의 정보 수정

상호간의 친구 추가, 친구의 접속상태에 따른 정보수정, 부적절한 정보 접근을 차단등의 문제는 여러곳에서 고려되어야 하겠지만 1차적으로 프로시저와 뷰테이블 레벨에서 해결 하려고 노력했습니다.

시스템 설계상 유저가 데이터베이스에 직접 연결하는 경로 없습니다.
인가된 서버에서도 테이블에 직접 쿼리를 날리지 않고 모든 쿼리는 프로시저의 실행으로 처리하도록 하였습니다.

프로시저를 실행시키기 전/후 뷰테이블의 정보가 의도한대로 변경되는지 몇가지 체크한 스샷을 첨부하였습니다.

+ -

관련 글 리스트
971 3. 데이터베이스 설계 NeverWash 19085 2012/03/03
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.