본문 바로가기

TIL

TIL- 시스템 설계와 Many-to-Many 관계 적용

오늘은 복잡한 데이터 구조들을 효율적으로 구현하는데 있어서 올바른 데이터베이스 구조와 관계 설정에 대해 배웠습니다

 

Many-to-Many 관계 적용 예시

1. 트위터 피드

트위터와 같은 소셜 미디어 플랫폼에서 Many-to-Many 관계를 활용하는 대표적인 예시로는 사용자와 트윗 간의 관계가 있습니다.

  • 테이블 구조: Users, Tweets, Followers
    • Users: 사용자 정보를 저장하는 테이블.
    • Tweets: 트윗 정보를 저장하는 테이블.
    • Followers: 사용자 간의 팔로우 관계를 저장하는 테이블.
  • 기능: 사용자 A의 피드 조회
    • 사용자 A가 팔로우하는 모든 사용자(B, C, D 등)의 트윗을 조회합니다.
    • 이를 위해 조인 쿼리를 사용하여 Followers와 Tweets 테이블을 연결합니다.

2. 플레이리스트

음악 스트리밍 서비스에서는 사용자와 플레이리스트, 트랙 간의 Many-to-Many 관계가 중요합니다.

  • 테이블 구조: Users, Playlists, Tracks, PlaylistTracks
    • Users: 사용자 정보를 저장하는 테이블.
    • Playlists: 플레이리스트 정보를 저장하는 테이블.
    • Tracks: 트랙 정보를 저장하는 테이블.
    • PlaylistTracks: 플레이리스트와 트랙 간의 관계를 저장하는 테이블.
  • 기능: 특정 플레이리스트의 트랙 조회
    • 사용자가 소유한 플레이리스트의 모든 트랙을 조회합니다.

3. 좋아요 기능

음악 스트리밍 서비스에서 사용자가 특정 트랙을 좋아요하는 기능을 Many-to-Many 관계로 구현할 수 있습니다.

  • 테이블 구조: Users, Tracks, Likes
    • Users: 사용자 정보를 저장하는 테이블.
    • Tracks: 트랙 정보를 저장하는 테이블.
    • Likes: 사용자와 트랙 간의 좋아요 관계를 저장하는 테이블.
  • 기능: 특정 사용자가 좋아한 트랙 목록 조회
    • 사용자가 좋아요한 모든 트랙을 조회합니다.

결론

오늘 배운 내용을 통해 복잡한 시스템에서 Many-to-Many 관계를 효과적으로 관리하고 성능을 최적화하는 방법을 이해하게 되었습니다. 이러한 설계를 통해 더 효율적이고 유지보수하기 쉬운 시스템을 구축할 수 있습니다. 데이터베이스에서 Many-to-Many 관계를 올바르게 설정하고 사용하는 것은 고성능 애플리케이션을 개발하는 데 필수적입니다.

 

참고사이트

https://hyeon9mak.github.io/twitter-system-design-experiment/

 

트위터 시스템 디자인 실험기

본문 속 테스트 코드 및 데이터는 https://github.com/Hyeon9mak/twitter-system-design/ 에서 확인할 수 있습니다.

hyeon9mak.github.io