Windows Azure를 사용하여 모바일 소셜 네트워크 용 서버 백엔드를 구축 중입니다.Azure 테이블에서 비정규 화 채팅 메시지
나는이 세 기관이 있습니다
- 사용자 - SQL 애저
- 스레드 (다음 서로에게 메시지를 보낼 수 있습니다 2 사용자 관계의 종류)에 저장된 - SQL에 저장 푸른
- 메시지 - 푸른 표
내가 스레드 ID에 의해 분할 푸른 테이블의 메시지를 저장소로에 저장 나는 좋은 성능을 기대 채팅 할 때 (스레드와 메시지 보내기/읽기).
그러나 가장 최근의 스레드 목록 (recent = 가장 최근의 메시지 포함)을 사용자에게 제공 할 수 있어야합니다. 즉, 마지막 메시지 날짜까지 스레드를 표시해야합니다.
많은 테이블 파티션을 스캔하고 메시지를 찾는 것이 성능상 킬러가 될 것이므로 가장 최근의 스레드를 효율적으로 가져올 수 있도록 데이터를 다른 테이블 파티션으로 비정규 화해야합니다.
귀하의 경험에 기반한 전략이 무엇입니까?
안녕하세요,이게 렉과 답변에 감사드립니다! 솔루션에서 볼 수있는 문제는 사용자가 스레드에 메시지를 게시 할 때마다 스레드 테이블의 대화 타임 스탬프를 업데이트하기 위해 SQL Azure를 쿼리해야한다는 것입니다. Azure Tables를 사용하는 이점을 어느 정도 상쇄합니다 - 확장 성 ... –
동의. 내 대답을 편집 중입니다 – Igorek
Igorek, 답을 업데이트 해 주셔서 감사합니다. 그것을 바탕으로 나는 아주 비슷한 것을 구현했는데 잘 작동했다. 그러나 나는 당신이 FlorinDumitrescu (http://social.msdn.microsoft.com/Forums/en-US/windowsazuredata/thread/6a745a22-540a-44d5-b426-d42dd8510da5)와 가진 토론을 발견했고 나의 이전의 "테이블들에 대해 혼란스러워했다. - 더 - 확장 성 "세계관. 그래서 나는 그것을 google에 가서 결국 그것에 관한 새로운 토론을 시작합니다 ... –