마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

서버에 데이터관리 관련 궁금증이있습니다.

0 추천
안녕하세요. 이번에 처음으로 서버에 데이터 저장기능을 탑제하여 어플을 연습겸 만들어보고있습니다.

 

거기서 데이터 관리가 효율적으로 되려면 어떻게 해야할지 잘모르겠네요.

일단 페이스북 같은예로 게시물과 유저사이에 데이터 저장인데

게시물에 좋아요를 누른경우 좋아요 누른사람데이터를 게시물에 저장하거나

유저데이터에 좋아요누른 게시물의 데이터를 저장해야하는데

어떤쪽이 더 효율성이있는지 분간이 안가네요.

보통 상용적으로 사용되는쪽이 어떤쪽인가요?

고수님들 조언 부탁드립니다...
kanoo (2,720 포인트) 님이 2017년 11월 7일 질문

2개의 답변

0 추천
 
채택된 답변
* 게시물 테이블

게시물번호(PK) | 제목 | 내용 | 작성자유저번호 | 날짜 | 등...

 

* 좋아요 테이블

게시물번호(FK) | 좋아요누른유저번호 | 날짜 | 등...

 

대략 이런식으로 테이블을 구성하고, 게시물을 불러올 때 좋아요 수를 SUM해서 보여주면 되고

유저 입장에서 볼 때 , '내가 좋아요를 눌렀나' 를 알려주기 위해서 내 유저정보를 던져 있으면 누른표시해주고

없으면 표시를 안해주면 됩니다.
개발자초심 (21,220 포인트) 님이 2017년 11월 8일 답변
kanoo님이 2017년 11월 9일 채택됨
우선 답변 감사드립니다. 저가 의아한 점은 그런식으로 테이블 생성시 게시물을 보는 모든 사람에게 데이터 다운로드를 해줘야하는거 아닌가요?
그러면 비용이 너무 많이발생해 비효율적일거 같은데...
API를 이용해서 데이터만 조회하도록 하면 됩니다.
대부분의 커뮤니티 서비스는 이렇게 하고 있습니다.

게시물이 수십,수백만개가 된다고 해서 한번에 다 내려주는 것이 아닌
페이징 처리하여 1페이지당 10~20개 씩 내려주면 됩니다.

최초 10~20개를 보여주고, 유저가 2페이지를 볼 경우 추가로 10~20개를 보여주는 식으로.
이렇게 합니다.
위에 말씀해주신대로 조회식으로 자신이 좋아요 해놓은 데이터를 찾아 해결했습니다. 감사합니다.
그런데 한가지더 궁금한게있는데 예를들어 인스타그램같은경우 팔로잉을 해놓으면 그 유저에게 게시물이 자동으로 쌓이게 되는데 여러명에게 팔로잉을 하면 특정 다수의 게시물들이 정렬되어 쌓아 보여줘야하는데 그럴경우 팔로잉한 유저들의 데이터를 찾아오는 방법을 모르겠네요. 저같은경우 파이어베이스 데이터베이스를 이용하고있는데 equalTo 함수를 사용해 1개 까지는가는데 2개이상의 (팔로잉 유저)데이터는 검색이 안되도록해놓았습니다. 혹시 파이어베이스로 이런기능 어떻게 해결해야할지 아시는지요...
파이어베이스는 안써보았지만, 여타 DB랑 다를 것이 없을 것 같은데요.
mysql을 예로 들면 아래처럼 쿼리를 하면 될 것 같은데, 기능을 찾아보시면 좋을 것 같습니다.

select
 (게시물정보)
from 게시물테이블
where 작성자유저정보 in (팔로우한 유저IDs..)
order by 최신순
limit 조회시작, 조회끝
0 추천
둘다 아니라고 할 수 있고 맞다고 할 수 있네요.

보통 테이블을 따로 뺍니다.

예를들어 21번게시물을 추천할 경우 유저아이디와 게시물번호 게시판테이블명 아이피 시간 값들을 추천테이블을 만들어서 저장하고 추천시 세션값으로 유저에게 넘김니다.

php를 다룰줄 아신다면 그누보드 소스 보시는게 이해 빠를겁니다.
익명사용자 님이 2017년 11월 8일 답변
...