비슷한 시스템을 만들어야합니다 (이름은 "좋아"하지 않을 것이며, Facebook은 소유하고 있습니다). 그래서 나는 데이터베이스에 이러한 좋아하는 것을 저장하는 두 가지 방법을 상상했고, 트래픽이 많은 사이트의 경우 더 좋은 방법을 알고 싶습니다.Mysql은 "Facebook likes"와 같은 것을 저장합니다.
- "id", "comment_id", "user_id"셀을 사용하여 comment_likes 테이블을 만듭니다. 코멘트 테이블에 "like_count"를 저장합니다. 그래서 그것을 쓸 필요가있을 때 계산할 필요가 없습니다. 그러나 좋아하는 일은 쉽기 때문에 사람들은 많이 만들 것이고, 내가 지정한 댓글의 좋아하는 것을 나열해야한다면 전체 comment_likes 테이블을 읽고 모든 user_ids를 찾아야합니다. 앞으로 수백만 행이 될 수 있습니다. 1000 명의 사용자가 같은 시간에 그것을 할 경우, 내 시스템이 죽을 것이다.
- 두 번째 생각은 댓글 테이블에 좋아요를 저장하는 것입니다. 1 # 34 # 21 # 56 # .... 누군가가 댓글을 달거나 좋아하지 않을 때이 셀에 자신의 ID를 # CONCAT 또는 REPLACE 할 때 # . 지정된 주석을 나열해야 할 때이 목록을 # -s에서 분해하십시오.
제 생각에는 2 차가 더 빠르고 똑똑 할 수 있다고 생각하지만이 점에 대해 어떻게 생각합니까?
두 번째 방법은 문제가됩니다. 생성 한 열이 너무 작아 모든 데이터를 저장할 수 없다면 어떻게해야합니까? 또한 LIKE를 사용한 쿼리 만 사용하여 검색 할 수 있습니다. 즉, 인덱싱이 작동하지 않으므로 속도가 느려집니다. 첫 번째 옵션은 더 많은 행을 생성하지만 인덱싱을 사용하면 훨씬 빨라집니다. – andrewsi