• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

안녕하세요 강사님 질문 있습니다.

21.08.17 11:45 작성 조회수 161

0

안녕하세요

김영한 강사님!

올려주신 강좌 아주 잘 보고 있습니다. 실무에서 사용할법한 부분들도 너무 좋구요

그래서 질문이 있습니다.

질문이 기술적인거라기보다는 성능에 관한 것인데요

만약에 게시판을 테이블을 만들고 각 회원들이 게시판에 글을 씁니다.

그리고 각 글에는 댓글도 달수 있고요

그런데 예를 들면 블라인드의 각 회사별 게시판처럼 게시판이 종류별로 있다고 할때 아래와 같은 경우 어떻게

매핑을 해야할지 감이 잘 오지 않습니다.

게시판수 : 10개 (a,b,c.... 종류별 )

a 게시판에 달린 글수 : 1천만개

a 게시판의 1천만개에 달린 댓글수 : 3천만개

이럴 경우

@OneToMany

private List<Comment> comments;

@OneToMany

private List<Post> posts;

(일단 대충 적었습니다.)

라고 했을 경우

서비스쪽에서는

1. 게시판글수 표시 ( 10,566,999개)

2. 댓글수 (30,444,999개) 라고 표기해주고

관리자에서는

---------------------------

게시판 | 게시글수 | 댓글수 |

----------------------------

a게시판 | 10,566,999개 | 30,444,999개| 라고 보여줘야 할 경우

게시판 테이블에 글수 카운팅 컬럼과 댓글수 카운팅 걸럼을 두는게 좋을지

아니면 community.getComment().size() 뭐 이런식으로 하는게 좋을지 감이 오지를 않습니다.

lzay 로딩을 걸어도 결국 getPosts()size(), getComments.size() 할때 저 천만개와 3천만개 데이터를

다 select 할것 같은데요 그래도 성능상 문제가 없을지 고민이 됩니다.

즉, list 객체를 두고 사이즈를 가져와도 무방할런지 아니면 이렇게 데이터가 많을 경우는 차라리 카운트 컬럼을 주는게 나을런지

고민이 됩니다. 아무래도 주문이 엄청난 회사에 계시니 관리자에서 저런식으로 보여주는 곳이 있으실것 같은데

어떻게 하는지 궁금합니다.

긴글 읽어주셔서 감사합니다.

답변 1

답변을 작성해보세요.

1

안녕하세요. Kwang-Ho Song님

천만개의 데이터를 로딩하는 순간 메모리 부족 오류가 발생하겠지요?

이렇게 데이터가 많다면 별도의 카운트 데이터를 가지고 있는 것이 더 좋은 방법입니다.

감사합니다.