길드리스트를 효율적으로 불러오려면 어떻게 하면 좋을까요?

유저들에게 길드 리스트를 보여주려고 합니다.
길드 리스트를 오래된 순서대로 먼저 보여주면 오래 된 길드에 유저들이 집중 가입해서 형평성 문제가 예상 됩니
다.

  1. 차선책으로 새로 만들어진 길드 순서대로 보여주면 그나마 나을 것 같습니다. 이러면 TableSortOrder.DESC 를 써야 하나요? 이 때 소팅을 하기 전에 비해서 속도나 처리량에 변화가 생기나요?

  2. 만약 길드가 1000개가 있다고 할 때, 게임을 시작할 때 1회 길드 리스트를 전부 읽는다면 서버 비용이 크게 증가할까요? 솔직히 감이 잘 안 옵니다. 전부 불러와 버린다면 게임에서 내부적으로 소팅하여 유저에게 랜덤하게 보여준다거나 할 수 있어 좋을 것 같습니다.

  3. 페이징을 쓴다고 할 때, 시작점부터 x개를 얻는 방식은 불가능한가요? SDK문서를 보면 우선 첫 열을 받은 후(최대 100개까지) 그 bro의 firstkey를 써서 다음 열 들을 받는 식으로 되어 있습니다. 그러나 이 방식은 필연적으로 처음부터 끝까지 차례대로 검색을 할 수 밖에 없다고 판단됩니다. 즉, 유저가 쓸데없이 첫페이지부터 차근차근 페이지를 넘겨야만 하는 것인데, 유저가 ‘12페이지 째 의 길드 리스트를 보고 싶다’ 면 어떻게 하면 좋을까요? (랭킹의 경우에는 x위~y위까지 볼 수가 있어서 편리했습니다. )

안녕하세요 개발자님

순서대로 답변드리도록 하겠습니다.

  1. DESC 혹은 ASC 관계없이 모두 동일한 속도와 처리량이 발생합니다.

  2. 비용 증가는 이용 방법에 따라 다르게 나올 수 있으나, 인증요청으로 인해 길드를 한번씩 100번 조회하는 것보다 100번을 한번 조회하는 것이 더 적은 비용이 발생합니다.
    랜덤한 길드를 얻고 싶을 경우, 랭킹을 이용하여 길드 생성 시에 랜덤한 값을 넣어 랭킹에 등록하고 랜덤한 순위를 이용해 조회하는 방법을 이용하실 수 있습니다.

  3. 안타깝게도 페이징을 구현하기 위해서는 특정 페이지부터 시작하는 것이 아닌, 개발자님 말씀대로 첫 열을 받은 후, 차례차례 다음 열을 받는 방법밖에 제공하고 있지 않습니다. 해당 방법을 이용하고 싶은 경우에는 길드를 전부 불러온 후, 클라이언트에서 배열을 통해 접근해 주거나 혹은 길드 랭킹에 랜덤한 수로 등록을 한 후 offset을 이용하는 방법도 있습니다.

추가적으로 랜덤으로 길드 정보 보여주기 기능은 올해 추가될 예정이니 참고 부탁드리겠습니다.

좋아요 1