가하
90
2021-12-09 10:53:17
4
338

많은 수의 데이터를 무한스크롤로 사용하는 방법에 대해 질문이 있습니다


코린이가 질문 드립니다

무한스크롤 코드가

db에서 데이터를 전부 객체배열에 받아오고 부분적으로 수십개씩 보여주면서

스크롤 끝에가면 보여주는 양을 점점 늘리는 식으로 코드가 되어있는데요


데이터가 엄청 많아지게 됐을 때

1. db에서 받아오는 양을 크게 정해놓고 (ex 1000개) 사용한다

2. 스크롤을 내릴 때 마다 db에서 받아오는 양이 늘어나게(내릴때마다 db에 요청) 구현한다

3. 더 좋은 방법이 있다


어떤 방법이 좋을까요? 


그리고 이건 단순 궁금증인데요

db에 데이터가 몇억개씩 되면 view에 보여주는 부분은 수십개밖에 안돼도

다 받아서 쓰면 당연히 엄청 느리거나 터져버리겠...죠?




0
  • 답변 4

  • 인성 절구로 빻음
    1k
    2021-12-09 10:59:36 작성 2021-12-09 11:00:46 수정됨

    2번 방식을 조금 잘못 이해하신 것 같습니다.

    현재 말씀하시는 2번은

     1. A,B,C,D를 서버로 부터 내려받아 출력

     2. A,B,C,D,E,F,G,H를 서버로 부터 내려받아 출력

     3. A,B,C,D,E,F,G,H,I,J,K를 서버로 부터 내려받아 출력

    으로 이해 됩니다. DB에서 내릴때마다 list를 초기화 하는 방식?


    보통 paging + infinite scroll을 구현 할 경우, db에서 받아오는 양은 늘어나지 않습니다.

    paging을 추가하게 되면

     1. 비어있는 list를 만든다.

     2. A,B,C,D를 서버로부터 내려받아 list에 추가하고 list를 출력

     3. E, F, G, H를 서버로부터 내려받아 list에 추가하고 list를 출력

     4. I, J, K를 서버로부터 내려받아 list에 추가하고 list 출력

    이렇게 진행 됩니다.


    여담으로 수 억개의 데이터를 한꺼번에 내린다면 서버에서 OOM발생 하기 딱 좋습니다.

  • xml개발자
    3k
    2021-12-09 11:05:24

    DB에서 데이터 전부를 불러오시면 안됩니다.

    테이블 데이터의 양은 계속해서 누적되고, 결국 수천, 수만, 수억이 될테니까요


  • 가하
    90
    2021-12-09 11:26:44

    당연히 불러오면 안되는 거였군요 ㅎㅎㅎ

    답변 감사드립니다


    INFP 님께서 말씀해주신게 좋은 방법이네요

    제가 갖다 쓴 grid의 무한스크롤 코드가 데이터를 한번에 다 받아서 쪼개쓰는거라 ㅜㅜ

    일단은 기능적으로 완벽한방법이 아니지만 1번방법으로 서버에서 제한된 데이터량을 받아서 쓰고

    말씀하신 방법으로 구현해보려구요

    감사드립니다!

  • 웃지않는광대
    230
    2021-12-09 11:34:25 작성 2021-12-09 11:35:11 수정됨

    윗분 답변처럼 기본적으로 was 메모리에서 운영상 이슈 없이 받아 낼 수 있는 한계치를 보신다음에


    그거에 맞게 최초에 데이터 양을 카운터를 하셔서 특정 건수 이상일 경우


    그 기준치만 가져오고, 특정 이벤트 구간(스크롤최하단)일 경우 마지막 데이터 건수를 다시 가져가서


    그 다음 순번의 데이터를 가져오고 붙여넣는식으로 갱신하시면 될거 같아요

  • 로그인을 하시면 답변을 등록할 수 있습니다.