Home > DB > ๐Ÿ’พ[Database] ๋ฌดํ•œ ์Šคํฌ๋กค ๋ฐฉ์‹(Infinite Scroll)์ด๋ž€ ๋ฌด์—‡์ผ๊นŒ์š”?

๐Ÿ’พ[Database] ๋ฌดํ•œ ์Šคํฌ๋กค ๋ฐฉ์‹(Infinite Scroll)์ด๋ž€ ๋ฌด์—‡์ผ๊นŒ์š”?
Database Spring Boot JPA REST API

โ€œ๐Ÿ’พ[Database] ๋ฌดํ•œ ์Šคํฌ๋กค ๋ฐฉ์‹(Infinite Scroll)์ด๋ž€ ๋ฌด์—‡์ผ๊นŒ์š”?โ€

๐ŸŽ Intro.

  • ์‚ฌ์šฉ์ž๊ฐ€ ์Šคํฌ๋กค์„ ๋‚ด๋ฆด ๋•Œ๋งˆ๋‹ค ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ๋ฅผ ๋™์ ์œผ๋กœ ๋กœ๋“œํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.
  • Java์—์„œ๋Š” ์ฃผ๋กœ Spring Boot + JPA + REST API๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋ฌดํ•œ ์Šคํฌ๋กค ๋ฐฉ์‹์˜ ๋ฐฑ์—”๋“œ๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

โœ…1๏ธโƒฃ ๋ฌดํ•œ ์Šคํฌ๋กค ๋ฐฉ์‹์˜ ํ•ต์‹ฌ ๊ฐœ๋….

1๏ธโƒฃ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์— ๋ฐ์ดํ„ฐ ์š”์ฒญ.

  • ์Šคํฌ๋กค ์ด๋ฒคํŠธ ๋ฐœ์ƒ ์‹œ, ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์— ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญ.
  • ์š”์ฒญ ์‹œ cursor(๋งˆ์ง€๋ง‰ ๊ฒŒ์‹œ๋ฌผ ID) ๋˜๋Š” page(ํŽ˜์ด์ง€ ๋ฒˆํ˜ธ)๋ฅผ ํฌํ•จ.

2๏ธโƒฃ ์„œ๋ฒ„๊ฐ€ ์š”์ฒญ๋ฐ›์€ ๋ฐ์ดํ„ฐ๋งŒ ๋ฐ˜ํ™˜.

  • LIMIT ๋˜๋Š” OFFSET์„ ์‚ฌ์šฉํ•˜์—ฌ ์ง€์ •๋œ ๊ฐœ์ˆ˜๋งŒํผ์˜ ๋ฐ์ดํ„ฐ ๋ฐ˜ํ™˜.
  • ์ปค์„œ ๊ธฐ๋ฐ˜ ํŽ˜์ด์ง•(Cursor Pagination)์ด ๊ฐ€์žฅ ํšจ์œจ์ .

3๏ธโƒฃ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ฐ›์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€๋กœ ๋ Œ๋”๋ง.

  • ๊ธฐ์กด ๋ฐ์ดํ„ฐ์— ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ UI ์—…๋ฐ์ดํŠธ.

โœ…2๏ธโƒฃ Java์—์„œ ๋ฌดํ•œ ์Šคํฌ๋กค์„ ๊ตฌํ˜„ํ•˜๋Š” 2๊ฐ€์ง€ ๋ฐฉ์‹.

1๏ธโƒฃ ํŽ˜์ด์ง€ ๋ฒˆํ˜ธ ๊ธฐ๋ฐ˜ ํŽ˜์ด์ง•(Offset Pagination)

  • ์š”์ฒญ ์‹œ ํŽ˜์ด์ง€ ๋ฒˆํ˜ธ(Page Number)์™€ ํŽ˜์ด์ง€ ํฌ๊ธฐ(Page Size)๋ฅผ ์ „๋‹ฌํ•˜์—ฌ ํŠน์ • ํŽ˜์ด์ง€ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒ.
  • SQL์—์„œ LIMIT๊ณผ OFFSET์„ ํ™œ์šฉ.

2๏ธโƒฃ ์ปค์„œ ๊ธฐ๋ฐ˜ ํŽ˜์ด์ง•(Cursor Pagination)

  • ๋งˆ์ง€๋ง‰์œผ๋กœ ์กฐํšŒํ•œ ๋ฐ์ดํ„ฐ์˜ ID ๋˜๋Š” Timestamp๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋‹ค์Œ ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญ.
  • ๋Œ€๊ทœ๋ชจ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ์— ์ตœ์ ํ™”๋จ.

โœ…3๏ธโƒฃ ๋ฌดํ•œ ์Šคํฌ๋กค ๋ฐฉ์‹์˜ ์žฅ๋‹จ์ .

โœ… ์žฅ์ .

  • 1. ์‚ฌ์šฉ์ž ๊ฒฝํ—˜(UX) ๊ฐœ์„  โžž ์‚ฌ์šฉ์ž๊ฐ€ ์ž๊ฒฌ์Šค๋Ÿฝ๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ํƒ์ƒ‰ ๊ฐ€๋Šฅ.
  • 2. ์„ฑ๋Šฅ ์ตœ์ ํ™” โžž ํ•„์š”ํ•œ ๋งŒํผ๋งŒ ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญํ•˜์—ฌ ์„œ๋ฒ„ ๋ถ€๋‹ด ๊ฐ์†Œ.
  • 3. ๋„คํŠธ์›Œํฌ ์ตœ์ ํ™” โžž ํŽ˜์ด์ง€ ์ „์ฒด๋ฅผ ๋กœ๋“œํ•˜์ง€ ์•Š๊ณ  ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋งŒ ์ „์†ก.

โŒ ๋‹จ์ .

  • 1. ํŠน์ • ๋ฐ์ดํ„ฐ ๊ฒ€์ƒ‰ ์–ด๋ ค์›€ โžž ์‚ฌ์šฉ์ž๊ฐ€ ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค์‹œ ์ฐพ๊ธฐ ์–ด๋ ค์›€.
  • 2. SEO ๋ฌธ์ œ โžž ๊ฒ€์ƒ‰ ์—”์ง„์ด ์ „์ฒด ์ฝ˜ํ…์ธ ๋ฅผ ํฌ๋กค๋งํ•˜๊ธฐ ์–ด๋ ค์›€.
  • 3. ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ ์ฆ๊ฐ€ โžž ํด๋ผ์ด์–ธํŠธ ์ธก์—์„œ ๋ฐ์ดํ„ฐ๊ฐ€ ๊ณ„์† ์ถ”๊ฐ€๋˜๋ฉด ์„ฑ๋Šฅ ์ €ํ•˜ ๊ฐ€๋Šฅ.

๐Ÿš€ ๊ฒฐ๋ก .

  • Java์—์„œ ๋ฌดํ•œ ์Šคํฌ๋กค์„ ๊ตฌํ˜„ํ•  ๋•Œ๋Š” ์ปค์„œ ๊ธฐ๋ฐ˜ ํŽ˜์ด์ง•(Cursor Pagination)์ด ์„ฑ๋Šฅ์ƒ ์œ ๋ฆฌ.
  • Spring Boot + JPA์—์„œ REST API๋ฅผ ์ œ๊ณตํ•˜๊ณ , ํด๋ผ์ด์–ธํŠธ์—์„œ ์š”์ฒญ์„ ๋ณด๋‚ด๋Š” ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ˜„.
  • ๋Œ€๊ทœ๋ชจ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•  ๋•Œ๋Š” ์ปค์„œ ๊ธฐ๋ฐ˜ ํŽ˜์ด์ง•์ด ์ ํ•ฉ.