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

안드로이드 서버 저장방식

0 추천
안녕하세요!!..궁금한것이 있는 안드로이드 2달 배운 코린이 입니다!!

바로 본론으로 들어가서

궁금한것이 무엇이냐면 안드로이드 앱을 만들때 예를 들면 커뮤니티 앱을 만든다고 했을때 보통 서버에서 데이터를 저장하는 방식이 궁금합니다.그리고 마스터께서 효율적이라고 생각하는 방식은 어떤것인지 같이 의견좀 제시해주세요.

 

예를들면 게시판이 있습니다.어떤 한 유저가 게시글을 썻다고 가정했을때

첫번째

board (보드는 제가 지정한 래퍼런스입니다) 아래

      내 uid  아래

             게시글 uid  아래

                        게시글 value  이곳에는 title content time 과 보여지는 값들이 저장되어있습니다.

이런식으로 저장하는 방식과

두번째

board  아래

       게시글  uid 아래

              게시글 value값안에 내 uid값을 저장함. 즉 title content time에 내 uid까지 추가해서 저장함

 

이 방식중 데이터를 불러올때 어떤것이 더 효율적일까요

일단 저의 의견은 첫번째 방식이라고 생각합니다.그 이유는 전체 게시글이 10000개라고 가정할때 내 게시글을 찾기위해서는 첫번째 방식은 board 아래 내 uid값만 찾으면 제가 쓴 게시글들을 전부 찾아낼수있습니다. 하지만 두번째 방식은 게시글 uid아래 게시글 value쪽에 나의 uid가 있기때문에 내가 쓴 게시글을 찾기위해서는 하나하나 전부 게시글의 value값과 내 uid를 비교를 해야합니다.그래서 제가 생각했을때는 첫번째 방식인 내 uid아래에 저장하는 방식이 더 효율적이라고 생각하는데 마스터께서는 어떤 방식이 더 효율적이라고 생각하시나요?의견 부탁드립니다!!
2달째 코린이 (380 포인트) 님이 2021년 7월 18일 질문

1개의 답변

0 추천
데이터를 어디에다 저장하느냐에 따라 달라질 수 있을겁니다.  Oracel, SQL Server같은 전통적인 RDBMS인지 Mongo DB같은 No-SQL 인지, Firebase같은 JSON tree인지...
님의 구조는 우선은 RDBMS에는 적합하지 않고 No-SQL이나 Firebase등에는 적용할 수는 있을 뜻한데,  제가 아는 바로는 Firebase에는 적합하지 않습니다.
만약 Firebase 를 사용하는 거라면(그렇게 추측이 되어서) 전체 구조를 최대한 자식 노드를 가지지 않도록 설계하셔야 합니다. Firebase의 경우는 board를 조회할 경우 밑에 있는 자식노드에 해당하는 데이터를 다 불러옵니다. 당연히 퍼포먼스상 좋지 않습니다. 따라서 게시글은 별도의 tree로 구성하는게 좋습니다. 만약 게시글에 대한 답글이라면 답글 tree를 별도로 가져가는게 좋구요. Firebase를 사용하실거면 파이이베이스에 권장하는 디자인에 대한 문서와 유투브등에서 튜토리얼을 참고하세요.
spark (227,470 포인트) 님이 2021년 7월 18일 답변
아 그렇군요 보통 근데 파이어베이스를 이용해서 앱출시를 많이 하는편인가요?
글쎄요, 앱 크래쉬 리포트용으로는 많이 사용하는데, Database로드 많이 사용하는지는 모르겠네요. 개인같은 직접 서버를 관리할 수 있는 여력이 안된다면 괜찮은 대안이 되겠죠.
답변 감사합니다.궁금했던것이 속시원하네요 ㅎㅎ 그래서 결론은 자식노드를 많이 둘수록 효율이 떨어지기때문에 최대한 자식노드를 안만드는선에서 만드는것이 더 좋겠네요.그런데 일반적으로 파이어베이스 말고 배민이나 이런 큰앱의 서버들도 파이어베이스처럼 자식노드를 최대한 안두는 편인가요??
대부분의 기업용 앱은 아직까지는 RDBMS(관계형 데이터베이스)를 주로 사용합니다. RDBMS의 디자인은 파이어베이스와는 많이 다릅니다. 테이블이라고 부르는 단위의 콜렉션을 사용하여 키를 가지고 맵핑을 하는 방식을 사용합니다. 이걸 REST API 같은 인터페이스를 통하여 읽고 쓰고 하는 거죠.
아하 spark님은 이쪽 분야에서 지식이 뛰어신거같습니다 ㅎㅎ혹시 온라인 강의같은거 하시고계시면 이메일로 알려주실수있겠습니까 뛰어난분 밑에서 배우고싶습니다.지금도 계속 온라인 강의를 듣고있지만,그분께서는 이렇게 시원하게 답변을 안해주시고 모르는 부분도 좀 많으시더라고요 그래서 어떻게 찾다보니까 여기까지왔는데,답변 하나하나 가려운부위 속시원하게 긁어주는거 같아서 자주 애용하는 사이트가 될것같네요!! 진행하시는 강의 없으시죠???
...