Sublight์—์„œ PostgreSQL๋กœ ์ž‘์„ฑ: ํ˜ธ์ŠคํŠธ 1๊ฐœ, 1์ผ, 1TB

์ตœ๊ทผ์— ํ‘œ์ค€ ๋ ˆ์‹œํ”ผ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐฉ๋ฒ•์„ ์•Œ๋ ค ๋“œ๋ ธ์Šต๋‹ˆ๋‹ค. SQL ์ฝ๊ธฐ ์ฟผ๋ฆฌ ์„ฑ๋Šฅ ํ–ฅ์ƒ PostgreSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ. ์˜ค๋Š˜ ์šฐ๋ฆฌ๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค ๋…น์Œ์„ ๋”์šฑ ํšจ์œจ์ ์œผ๋กœ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค ๊ตฌ์„ฑ์—์„œ "๋น„ํ‹€๋ฆผ"์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๊ฐ„๋‹จํžˆ ๋ฐ์ดํ„ฐ ํ๋ฆ„์„ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๊ตฌ์„ฑํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

Sublight์—์„œ PostgreSQL๋กœ ์ž‘์„ฑ: ํ˜ธ์ŠคํŠธ 1๊ฐœ, 1์ผ, 1TB

#1. ๋‹จ๋ฉดํ™”

์ •๋ฆฌํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ๋Š” ๋ฐฉ๋ฒ•๊ณผ ์ด์œ ์— ๋Œ€ํ•œ ๊ธฐ์‚ฌ "์ด๋ก ์ ์œผ๋กœ" ๋ถ„ํ•  ์ ์šฉ ์ด๋ฏธ ๊ทธ๋žฌ์œผ๋ฏ€๋กœ ์—ฌ๊ธฐ์„œ๋Š” ์šฐ๋ฆฌ ๋‚ด์—์„œ ๋ช‡ ๊ฐ€์ง€ ์ ‘๊ทผ ๋ฐฉ์‹์„ ์ ์šฉํ•˜๋Š” ๊ด€ํ–‰์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์ˆ˜๋ฐฑ ๋Œ€์˜ PostgreSQL ์„œ๋ฒ„์— ๋Œ€ํ•œ ๋ชจ๋‹ˆํ„ฐ๋ง ์„œ๋น„์Šค.

"์ง€๋‚˜๊ฐ„ ์ผ๋“ค..."

์ฒ˜์Œ์—๋Š” ๋‹ค๋ฅธ MVP์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์šฐ๋ฆฌ ํ”„๋กœ์ ํŠธ๋„ ์ƒ๋‹นํžˆ ๊ฐ€๋ฒผ์šด ๋ถ€ํ•˜๋กœ ์‹œ์ž‘๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋‹ˆํ„ฐ๋ง์€ ๊ฐ€์žฅ ์ค‘์š”ํ•œ XNUMX๊ฐœ์˜ ์„œ๋ฒ„์— ๋Œ€ํ•ด์„œ๋งŒ ์ˆ˜ํ–‰๋˜์—ˆ์œผ๋ฉฐ ๋ชจ๋“  ํ…Œ์ด๋ธ”์€ ์ƒ๋Œ€์ ์œผ๋กœ ์ž‘์•˜์Šต๋‹ˆ๋‹ค... ๊ทธ๋Ÿฌ๋‚˜ ์‹œ๊ฐ„์ด ์ง€๋‚จ์— ๋”ฐ๋ผ ๋ชจ๋‹ˆํ„ฐ๋ง๋˜๋Š” ํ˜ธ์ŠคํŠธ์˜ ์ˆ˜๊ฐ€ ์ ์  ๋” ๋งŽ์•„์กŒ์Šต๋‹ˆ๋‹ค. , ๋‹ค์‹œ ํ•œ ๋ฒˆ ์šฐ๋ฆฌ๋Š” ๋‹ค์Œ ์ค‘ ํ•˜๋‚˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž‘์—…์„ ์‹œ๋„ํ–ˆ์Šต๋‹ˆ๋‹ค. ํ…Œ์ด๋ธ” ํฌ๊ธฐ 1.5TB, ์ด๋ ‡๊ฒŒ ๊ณ„์† ์‚ด์•„๊ฐˆ ์ˆ˜๋Š” ์žˆ์ง€๋งŒ ๋งค์šฐ ๋ถˆํŽธํ•˜๋‹ค๋Š” ๊ฒƒ์„ ๊นจ๋‹ฌ์•˜์Šต๋‹ˆ๋‹ค.

์‹œ๋Œ€๋Š” ๊ฑฐ์˜ ์—„์ฒญ๋‚œ ์‹œ๋Œ€์™€ ๊ฐ™์•˜๊ณ , PostgreSQL 9.x์˜ ๋‹ค์–‘ํ•œ ๋ฒ„์ „์ด ๊ด€๋ จ๋˜์–ด ์žˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ชจ๋“  ํŒŒํ‹ฐ์…”๋‹์€ "์ˆ˜๋™"์œผ๋กœ ์ˆ˜ํ–‰๋˜์–ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ํ…Œ์ด๋ธ” ์ƒ์† ๋ฐ ํŠธ๋ฆฌ๊ฑฐ ๋™์  ๋ผ์šฐํŒ… EXECUTE.

Sublight์—์„œ PostgreSQL๋กœ ์ž‘์„ฑ: ํ˜ธ์ŠคํŠธ 1๊ฐœ, 1์ผ, 1TB
๊ฒฐ๊ณผ ์†”๋ฃจ์…˜์€ ๋ชจ๋“  ํ…Œ์ด๋ธ”๋กœ ๋ณ€ํ™˜๋  ์ˆ˜ ์žˆ์„ ๋งŒํผ ๋ณดํŽธ์ ์ธ ๊ฒƒ์œผ๋กœ ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค.

  • ๋ชจ๋“  ๋‚ด์šฉ์„ ์„ค๋ช…ํ•˜๋Š” ๋นˆ "ํ—ค๋”" ์ƒ์œ„ ํ…Œ์ด๋ธ”์ด ์„ ์–ธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํ•„์š”ํ•œ ์ธ๋ฑ์Šค ๋ฐ ํŠธ๋ฆฌ๊ฑฐ.
  • ํด๋ผ์ด์–ธํŠธ ์ž…์žฅ์—์„œ ๊ธฐ๋ก์€ โ€œ๋ฃจํŠธโ€ ํ…Œ์ด๋ธ”์— ์ž‘์„ฑ๋˜์—ˆ์œผ๋ฉฐ, ๋‚ด๋ถ€์ ์œผ๋กœ๋Š” ๋ผ์šฐํŒ… ํŠธ๋ฆฌ๊ฑฐ BEFORE INSERT ๋ ˆ์ฝ”๋“œ๊ฐ€ ํ•„์ˆ˜ ์„น์…˜์— "๋ฌผ๋ฆฌ์ ์œผ๋กœ" ์‚ฝ์ž…๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์•„์ง ๊ทธ๋Ÿฌํ•œ ๊ฒƒ์ด ์—†๋‹ค๋ฉด ์˜ˆ์™ธ๋ฅผ ํฌ์ฐฉํ•˜๊ณ ...
  • โ€ฆ ์‚ฌ์šฉํ•˜์—ฌ CREATE TABLE ... (LIKE ... INCLUDING ...) ์ƒ์œ„ ํ…Œ์ด๋ธ”์˜ ํ…œํ”Œ๋ฆฟ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ƒ์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์›ํ•˜๋Š” ๋‚ ์งœ์— ์ œํ•œ์ด ์žˆ๋Š” ๊ตฌ๊ฐ„๋”ฐ๋ผ์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ•  ๋•Œ ํ•ด๋‹น ๋ฐ์ดํ„ฐ์—์„œ๋งŒ ์ฝ๊ธฐ๊ฐ€ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค.

PG10: ์ฒซ ๋ฒˆ์งธ ์‹œ๋„

๊ทธ๋Ÿฌ๋‚˜ ์ƒ์†์„ ํ†ตํ•œ ๋ถ„ํ• ์€ ์—ญ์‚ฌ์ ์œผ๋กœ ํ™œ์„ฑ ์“ฐ๊ธฐ ์ŠคํŠธ๋ฆผ์ด๋‚˜ ๋‹ค์ˆ˜์˜ ํ•˜์œ„ ํŒŒํ‹ฐ์…˜์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐ ์ ํ•ฉํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ํ•„์š”ํ•œ ์„น์…˜์„ ์„ ํƒํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด XNUMX์ฐจ ๋ณต์žก๋„, 100๊ฐœ ์ด์ƒ์˜ ์„น์…˜์—์„œ ์ž‘๋™ํ•œ๋‹ค๋Š” ์ ์„ ์ง์ ‘ ์ดํ•ดํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค...

PG10์—์„œ๋Š” ์ง€์›์„ ๊ตฌํ˜„ํ•˜์—ฌ ์ด๋Ÿฌํ•œ ์ƒํ™ฉ์ด ํฌ๊ฒŒ ์ตœ์ ํ™”๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋„ค์ดํ‹ฐ๋ธŒ ํŒŒํ‹ฐ์…”๋‹. ๊ทธ๋ž˜์„œ ์ €ํฌ๋„ ์Šคํ† ๋ฆฌ์ง€ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ํ›„ ๋ฐ”๋กœ ์ ์šฉํ•ด๋ณด๋ ค๊ณ  ํ–ˆ์œผ๋‚˜...

๋งค๋‰ด์–ผ์„ ์‚ดํŽด๋ณธ ํ›„ ๋ฐํ˜€์ง„ ๋ฐ”์™€ ๊ฐ™์ด, ์ด ๋ฒ„์ „์—์„œ ๊ธฐ๋ณธ์ ์œผ๋กœ ํŒŒํ‹ฐ์…˜๋œ ํ…Œ์ด๋ธ”์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ์ธ๋ฑ์Šค ์„ค๋ช…์„ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ํŠธ๋ฆฌ๊ฑฐ๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค
  • ๋ˆ„๊ตฌ์˜ 'ํ›„์†'๋„ ๋  ์ˆ˜ ์—†๋‹ค
  • ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค INSERT ... ON CONFLICT
  • ์„น์…˜์„ ์ž๋™์œผ๋กœ ์ƒ์„ฑํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๊ฐˆํ€ด๋กœ ์ด๋งˆ์— ๊ณ ํ†ต์Šค๋Ÿฌ์šด ํƒ€๊ฒฉ์„ ๊ฐ€ํ•œ ์šฐ๋ฆฌ๋Š” ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ์ˆ˜์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ๊ฒƒ์„ ๊นจ๋‹ฌ์•˜๊ณ  ์ถ”๊ฐ€ ์—ฐ๊ตฌ๋ฅผ XNUMX ๊ฐœ์›” ๋™์•ˆ ์—ฐ๊ธฐํ–ˆ์Šต๋‹ˆ๋‹ค.

PG10: ๋‘ ๋ฒˆ์งธ ๊ธฐํšŒ

๊ทธ๋ž˜์„œ ์šฐ๋ฆฌ๋Š” ๋ฐœ์ƒํ•œ ๋ฌธ์ œ๋ฅผ ํ•˜๋‚˜์”ฉ ํ•ด๊ฒฐํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค.

  1. ์™œ๋ƒํ•˜๋ฉด ํŠธ๋ฆฌ๊ฑฐ์™€ ON CONFLICT ์—ฌ๊ธฐ์ €๊ธฐ์„œ ์•„์ง ํ•„์š”ํ•˜๋‹ค๊ณ  ํŒ๋‹จ๋˜์–ด ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ์ค‘๊ฐ„ ๋‹จ๊ณ„๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ํ”„๋ก์‹œ ํ…Œ์ด๋ธ”.
  2. "๋ผ์šฐํŒ…"์„ ์ œ๊ฑฐํ–ˆ์Šต๋‹ˆ๋‹ค. ํŠธ๋ฆฌ๊ฑฐ์—์„œ - ์ฆ‰, EXECUTE.
  3. ๋”ฐ๋กœ ๊บผ๋‚ด๋†“์œผ์…จ์–ด์š” ๋ชจ๋“  ์ธ๋ฑ์Šค๊ฐ€ ํฌํ•จ๋œ ํ…œํ”Œ๋ฆฟ ํ…Œ์ด๋ธ”๊ทธ๋ž˜์„œ ๊ทธ๋“ค์€ ํ”„๋ก์‹œ ํ…Œ์ด๋ธ”์—๋„ ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

Sublight์—์„œ PostgreSQL๋กœ ์ž‘์„ฑ: ํ˜ธ์ŠคํŠธ 1๊ฐœ, 1์ผ, 1TB
๋งˆ์ง€๋ง‰์œผ๋กœ, ์šฐ๋ฆฌ๋Š” ๊ธฐ๋ณธ ํ…Œ์ด๋ธ”์„ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ถ„ํ• ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ์„น์…˜์„ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์€ ์—ฌ์ „ํžˆ โ€‹โ€‹์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์–‘์‹ฌ์— ๋‹ฌ๋ ค ์žˆ์Šต๋‹ˆ๋‹ค.

"ํ†ฑ์งˆ" ์‚ฌ์ „

๋‹ค๋ฅธ ๋ถ„์„ ์‹œ์Šคํ…œ๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์šฐ๋ฆฌ๋Š” ๋˜ํ•œ "์‚ฌ์‹ค"๊ณผ "์ปท" (์‚ฌ์ „). ์šฐ๋ฆฌ์˜ ๊ฒฝ์šฐ ๊ทธ๋“ค์€ ์ด๋Ÿฌํ•œ ์ž๊ฒฉ์œผ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ–‰๋™ํ–ˆ์Šต๋‹ˆ๋‹ค. ํ…œํ”Œ๋ฆฟ ๋ณธ๋ฌธ ์œ ์‚ฌํ•œ ๋Š๋ฆฐ ์ฟผ๋ฆฌ ๋˜๋Š” ์ฟผ๋ฆฌ ์ž์ฒด์˜ ํ…์ŠคํŠธ.

โ€œFactsโ€๋Š” ์ด๋ฏธ ์˜ค๋žซ๋™์•ˆ ๋‚ ์งœ๋ณ„๋กœ ๊ตฌ๋ถ„๋˜์–ด ์žˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์šฐ๋ฆฌ๋Š” ์˜ค๋ž˜๋œ ๋ถ€๋ถ„์„ ์นจ์ฐฉํ•˜๊ฒŒ ์‚ญ์ œํ–ˆ๊ณ  ๊ทธ๊ฒƒ๋“ค์€ ์šฐ๋ฆฌ๋ฅผ ๊ดด๋กญํžˆ์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค(๋กœ๊ทธ!). ๊ทธ๋Ÿฐ๋ฐ ์‚ฌ์ „์— ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ๋„ค์š”...

๋งŽ์ด ์žˆ์—ˆ๋‹ค๋Š” ๊ฒƒ์€ ์•„๋‹ˆ์ง€๋งŒ ๋Œ€๋žต 100TB์˜ "์‚ฌ์‹ค"๋กœ ์ธํ•ด 2.5TB์˜ ์‚ฌ์ „์ด ํƒ„์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.. ๊ทธ๋Ÿฌํ•œ ํ…Œ์ด๋ธ”์—์„œ๋Š” ๋ฌด์—‡์ด๋“  ํŽธ๋ฆฌํ•˜๊ฒŒ ์‚ญ์ œํ•  ์ˆ˜ ์—†๊ณ , ์ ์ ˆํ•œ ์‹œ๊ฐ„ ๋‚ด์— ์••์ถ•ํ•  ์ˆ˜ ์—†์œผ๋ฉฐ, ์“ฐ๊ธฐ ์†๋„๊ฐ€ ์ ์ฐจ ๋Š๋ ค์กŒ์Šต๋‹ˆ๋‹ค.

์‚ฌ์ „์ฒ˜๋Ÿผ... ๊ทธ ์•ˆ์—๋Š” ๊ฐ ํ•ญ๋ชฉ์ด ์ •ํ™•ํžˆ ํ•œ ๋ฒˆ๋งŒ ํ‘œ์‹œ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค... ๊ทธ๋ฆฌ๊ณ  ์ด๊ฒƒ์ด ๋งž์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ!... ์•„๋ฌด๋„ ์šฐ๋ฆฌ๊ฐ€ ํ•˜๋Š” ๊ฒƒ์„ ๋ง‰์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋งค์ผ ๋ณ„๋„์˜ ์‚ฌ์ „! ์˜ˆ, ์ด๋Š” ํŠน์ • ์ค‘๋ณต์„ฑ์„ ์ œ๊ณตํ•˜์ง€๋งŒ ๋‹ค์Œ์„ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค.

  • ๋” ๋น ๋ฅด๊ฒŒ ์“ฐ๊ธฐ/์ฝ๊ธฐ ์„น์…˜ ํฌ๊ธฐ๊ฐ€ ์ž‘๊ธฐ ๋•Œ๋ฌธ์—
  • ๋” ์ ์€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์†Œ๋น„ํ•ฉ๋‹ˆ๋‹ค ๋ณด๋‹ค ์ปดํŒฉํŠธํ•œ ์ธ๋ฑ์Šค๋กœ ์ž‘์—…ํ•˜์—ฌ
  • ๋” ์ ์€ ์–‘์˜ ๋ฐ์ดํ„ฐ ์ €์žฅ ์˜ค๋ž˜๋œ ๊ฒƒ์„ ๋น ๋ฅด๊ฒŒ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ๋Š” ๋Šฅ๋ ฅ ๋•Œ๋ฌธ์—

์ „์ฒด์ ์ธ ์กฐ์น˜์˜ ๊ฒฐ๊ณผ๋กœ CPU ๋กœ๋“œ๊ฐ€ ~30% ๊ฐ์†Œํ•˜๊ณ  ๋””์Šคํฌ ๋กœ๋“œ๊ฐ€ ~50% ๊ฐ์†Œํ–ˆ์Šต๋‹ˆ๋‹ค.:

Sublight์—์„œ PostgreSQL๋กœ ์ž‘์„ฑ: ํ˜ธ์ŠคํŠธ 1๊ฐœ, 1์ผ, 1TB
๋™์‹œ์— ์šฐ๋ฆฌ๋Š” ๋” ์ ์€ ๋ถ€ํ•˜๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ •ํ™•ํžˆ ๋™์ผํ•œ ๋‚ด์šฉ์„ ๊ณ„์† ๊ธฐ๋กํ–ˆ์Šต๋‹ˆ๋‹ค.

#2. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ง„ํ™” ๋ฐ ๋ฆฌํŒฉํ† ๋ง

๊ทธ๋ž˜์„œ ์šฐ๋ฆฌ๋Š” ์šฐ๋ฆฌ๊ฐ€ ๊ฐ€์ง„ ๊ฒƒ์„ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค ๋งค์ผ ์ž์‹ ์˜ ์„น์…˜์ด ์žˆ์Šต๋‹ˆ๋‹ค ๋ฐ์ดํ„ฐ๋กœ. ์‹ค์ œ๋กœ, CHECK (dt = '2018-10-12'::date) โ€” ๊ทธ๋ฆฌ๊ณ  ๋ ˆ์ฝ”๋“œ๊ฐ€ ํŠน์ • ์„น์…˜์— ์†ํ•˜๊ธฐ ์œ„ํ•œ ๋ถ„ํ•  ํ‚ค์™€ ์กฐ๊ฑด์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹น์‚ฌ ์„œ๋น„์Šค์˜ ๋ชจ๋“  ๋ณด๊ณ ์„œ๋Š” ํŠน์ • ๋‚ ์งœ์˜ ๋งฅ๋ฝ์—์„œ ์ž‘์„ฑ๋˜๋ฏ€๋กœ "๋ถ„ํ• ๋˜์ง€ ์•Š์€ ์‹œ๊ฐ„" ์ดํ›„ ํ•ด๋‹น ๋ณด๊ณ ์„œ์— ๋Œ€ํ•œ ์ธ๋ฑ์Šค๋Š” ๋ชจ๋“  ์œ ํ˜•์ด์—ˆ์Šต๋‹ˆ๋‹ค. (์„ฌ๊ธฐ๋Š” ์‚ฌ๋žŒ, ๋‚ ์งœ, ๊ณ„ํš ํ…œํ”Œ๋ฆฟ), (์„ฌ๊ธฐ๋Š” ์‚ฌ๋žŒ, ๋‚ ์งœ, ๊ณ„ํš ๋…ธ๋“œ), (๋‚ ์งœ, ์˜ค๋ฅ˜ ํด๋ž˜์Šค, ์„œ๋ฒ„), ...

ํ•˜์ง€๋งŒ ์ด์ œ ๊ทธ๋“ค์€ ๋ชจ๋“  ๊ตฌ์—ญ์— ์‚ด๊ณ  ์žˆ์–ด์š” ๋‹น์‹ ์˜ ์‚ฌ๋ณธ ๊ฐ ์ธ๋ฑ์Šค... ๊ทธ๋ฆฌ๊ณ  ๊ฐ ์„น์…˜ ๋‚ด์—์„œ ๋‚ ์งœ๋Š” ์ผ์ •ํ•ฉ๋‹ˆ๋‹ค... ์ด์ œ ์šฐ๋ฆฌ๋Š” ๊ทธ๋Ÿฌํ•œ ๊ฐ ์ƒ‰์ธ์— ์žˆ์Œ์ด ๋ฐํ˜€์กŒ์Šต๋‹ˆ๋‹ค ๋‹จ์ˆœํžˆ ์ƒ์ˆ˜๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š” ํ•„๋“œ ์ค‘ ํ•˜๋‚˜๋กœ ๋ณผ๋ฅจ๊ณผ ๊ฒ€์ƒ‰ ์‹œ๊ฐ„์ด ๋ชจ๋‘ ์ฆ๊ฐ€ํ•˜์ง€๋งŒ ๊ฒฐ๊ณผ๋Š” ๋‚˜์˜ค์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ๊ฐˆํ€ด๋ฅผ ๊ทธ๋“ค ์ž์‹ ์—๊ฒŒ ๋งก๊ฒผ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฐ...

Sublight์—์„œ PostgreSQL๋กœ ์ž‘์„ฑ: ํ˜ธ์ŠคํŠธ 1๊ฐœ, 1์ผ, 1TB
์ตœ์ ํ™” ๋ฐฉํ–ฅ์€ ๋ถ„๋ช…ํ•ฉ๋‹ˆ๋‹ค. - ๋‹จ์ˆœํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ์ƒ‰์ธ์—์„œ ๋‚ ์งœ ํ•„๋“œ๋ฅผ ์ œ๊ฑฐํ•˜์‹ญ์‹œ์˜ค. ํŒŒํ‹ฐ์…˜๋œ ํ…Œ์ด๋ธ”์—์„œ. ์šฐ๋ฆฌ์˜ ๊ฑฐ๋ž˜๋Ÿ‰์„ ๊ฐ์•ˆํ•  ๋•Œ ์ด์ต์€ ์•ฝ 1TB/์ฃผ!

์ด์ œ ์ด ํ…Œ๋ผ๋ฐ”์ดํŠธ๋Š” ์–ด๋–ป๊ฒŒ๋“  ๊ธฐ๋ก๋˜์–ด์•ผ ํ•œ๋‹ค๋Š” ์ ์— ์ฃผ๋ชฉํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ์šฐ๋ฆฌ๋„ ์ด์ œ ๋””์Šคํฌ์˜ ๋กœ๋“œ๊ฐ€ ์ค„์–ด๋“ญ๋‹ˆ๋‹ค! ์ด ์‚ฌ์ง„์€ ์šฐ๋ฆฌ๊ฐ€ ์ผ์ฃผ์ผ ๋™์•ˆ ์ง‘์ค‘ํ•œ ์ฒญ์†Œ๋ฅผ ํ†ตํ•ด ์–ป์€ ํšจ๊ณผ๋ฅผ ๋ช…ํ™•ํ•˜๊ฒŒ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

Sublight์—์„œ PostgreSQL๋กœ ์ž‘์„ฑ: ํ˜ธ์ŠคํŠธ 1๊ฐœ, 1์ผ, 1TB

#์‚ผ. ์ตœ๋Œ€ ๋ถ€ํ•˜๋ฅผ "ํ™•์‚ฐ"

๋กœ๋“œ๋œ ์‹œ์Šคํ…œ์˜ ๊ฐ€์žฅ ํฐ ๋ฌธ์ œ ์ค‘ ํ•˜๋‚˜๋Š” ์ค‘๋ณต ๋™๊ธฐํ™” ํ•„์š”ํ•˜์ง€ ์•Š์€ ์ผ๋ถ€ ์ž‘์—…. ๋•Œ๋กœ๋Š” "๊ทธ๋“ค์ด ๋ˆˆ์น˜์ฑ„์ง€ ๋ชปํ–ˆ๊ธฐ ๋•Œ๋ฌธ์—", ๋•Œ๋กœ๋Š” "๊ทธ๊ฒŒ ๋” ์‰ฌ์› ์–ด์š”"๋ผ๊ณ  ํ•˜์ง€๋งŒ ์กฐ๋งŒ๊ฐ„ ์ œ๊ฑฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด์ „ ์‚ฌ์ง„์„ ํ™•๋Œ€ํ•˜์—ฌ ๋””์Šคํฌ๊ฐ€ ์žˆ๋Š”์ง€ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด์ค‘ ์ง„ํญ์˜ ๋ถ€ํ•˜์—์„œ "ํŽŒํ”„" ์ด๋Š” ๋ถ„๋ช…ํžˆ "ํ†ต๊ณ„์ ์œผ๋กœ" ์ด๋Ÿฌํ•œ ์—ฌ๋Ÿฌ ์ž‘์—…์—์„œ ๋ฐœ์ƒํ•ด์„œ๋Š” ์•ˆ ๋˜๋Š” ์ธ์ ‘ ์ƒ˜ํ”Œ ์‚ฌ์ด์˜ ์ž‘์—…์ž…๋‹ˆ๋‹ค.

Sublight์—์„œ PostgreSQL๋กœ ์ž‘์„ฑ: ํ˜ธ์ŠคํŠธ 1๊ฐœ, 1์ผ, 1TB

์ด๊ฒƒ์€ ๋‹ฌ์„ฑํ•˜๊ธฐ ๋งค์šฐ ์‰ฝ์Šต๋‹ˆ๋‹ค. ์ด๋ฏธ ๋ชจ๋‹ˆํ„ฐ๋ง์„ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค ๊ฑฐ์˜ 1000๊ฐœ์˜ ์„œ๋ฒ„, ๊ฐ๊ฐ์€ ๋ณ„๋„์˜ ๋…ผ๋ฆฌ์  ์Šค๋ ˆ๋“œ์— ์˜ํ•ด ์ฒ˜๋ฆฌ๋˜๋ฉฐ ๊ฐ ์Šค๋ ˆ๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํŠน์ • ๋นˆ๋„๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ „์†ก๋˜๋„๋ก ์ถ•์ ๋œ ์ •๋ณด๋ฅผ ์žฌ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

setInterval(sendToDB, interval)

์—ฌ๊ธฐ์„œ ๋ฌธ์ œ๋Š” ๋ฐ”๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์‚ฌ์‹ค์— ์žˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ์Šค๋ ˆ๋“œ๋Š” ๊ฑฐ์˜ ๋™์‹œ์— ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค., ๋”ฐ๋ผ์„œ ์ „์†ก ์‹œ๊ฐ„์€ ๊ฑฐ์˜ ํ•ญ์ƒ "์š”์ ๊นŒ์ง€" ์ผ์น˜ํ•ฉ๋‹ˆ๋‹ค. ์•— #2...

๋‹คํ–‰ํžˆ๋„ ์ด ๋ฌธ์ œ๋Š” ํ•ด๊ฒฐํ•˜๊ธฐ๊ฐ€ ๋งค์šฐ ์‰ฝ์Šต๋‹ˆ๋‹ค. "๋ฌด์ž‘์œ„" ๋Ÿฐ์—… ์ถ”๊ฐ€ ์‹œ๊ฐ„๋ณ„:

setInterval(sendToDB, interval * (1 + 0.1 * (Math.random() - 0.5)))

#4. ํ•„์š”ํ•œ ๊ฒƒ์„ ์บ์‹œํ•ฉ๋‹ˆ๋‹ค.

์„ธ ๋ฒˆ์งธ ์ „ํ†ต์ ์ธ ๊ณ ๋ถ€ํ•˜ ๋ฌธ์ œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์บ์‹œ ์—†์Œ ๊ทธ๊ฐ€ ์–ด๋””์— ์žˆ๋Š”์ง€ ํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค ๊ทธ๋ ‡๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ์šฐ๋ฆฌ๋Š” ๊ณ„ํš ๋…ธ๋“œ(์ด ๋ชจ๋“  ๊ฒƒ) ์ธก๋ฉด์—์„œ ๋ถ„์„์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ–ˆ์Šต๋‹ˆ๋‹ค. Seq Scan on users), ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๋“ค์€ ๋Œ€๋ถ€๋ถ„ ๋™์ผํ•˜๋‹ค๊ณ  ์ฆ‰์‹œ ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ์žŠ์–ด๋ฒ„๋ ธ์Šต๋‹ˆ๋‹ค.

์•„๋‹ˆ์š”, ๋ฌผ๋ก  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—๋Š” ์•„๋ฌด ๊ฒƒ๋„ ๋‹ค์‹œ ๊ธฐ๋ก๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํŠธ๋ฆฌ๊ฑฐ๊ฐ€ ์ฐจ๋‹จ๋ฉ๋‹ˆ๋‹ค. INSERT ... ON CONFLICT DO NOTHING. ํ•˜์ง€๋งŒ ์ด ๋ฐ์ดํ„ฐ๋Š” ์—ฌ์ „ํžˆ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋„๋‹ฌํ•˜๋ฏ€๋กœ ๋ถˆํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ถฉ๋Œ์„ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ์ฝ๊ธฐ ํ•ด์•ผ ํ• . ์•— #3...

์บ์‹ฑ์ด ํ™œ์„ฑํ™”๋˜๊ธฐ ์ „/ํ›„์— ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋กœ ์ „์†ก๋˜๋Š” ๋ ˆ์ฝ”๋“œ ์ˆ˜์˜ ์ฐจ์ด๋Š” ๋ช…๋ฐฑํ•ฉ๋‹ˆ๋‹ค.

Sublight์—์„œ PostgreSQL๋กœ ์ž‘์„ฑ: ํ˜ธ์ŠคํŠธ 1๊ฐœ, 1์ผ, 1TB

๊ทธ๋ฆฌ๊ณ  ์ด๋Š” ๊ทธ์— ๋”ฐ๋ฅธ ์Šคํ† ๋ฆฌ์ง€ ๋กœ๋“œ ๊ฐ์†Œ์ž…๋‹ˆ๋‹ค.

Sublight์—์„œ PostgreSQL๋กœ ์ž‘์„ฑ: ํ˜ธ์ŠคํŠธ 1๊ฐœ, 1์ผ, 1TB

์ „์ฒด๋กœ

"์ผ์ผ ํ…Œ๋ผ๋ฐ”์ดํŠธ"๋ผ๋Š” ๋ง์€ ์ •๋ง ๋ฌด์„ญ๊ฒŒ ๋“ค๋ฆฝ๋‹ˆ๋‹ค. ๋ชจ๋“  ์ผ์„ ์˜ฌ๋ฐ”๋ฅด๊ฒŒํ–ˆ๋‹ค๋ฉด ์ด๊ฒƒ์€ ๋‹จ์ง€ 2^40๋ฐ”์ดํŠธ / 86400์ดˆ = ~12.5MB/s๋ฐ์Šคํฌํƒ‘ IDE ๋‚˜์‚ฌ๋„ ๊ณ ์ •๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๐Ÿ™‚

๊ทธ๋Ÿฌ๋‚˜ ์‹ฌ๊ฐํ•˜๊ฒŒ ๋งํ•˜๋ฉด ํ•˜๋ฃจ ๋™์•ˆ ๋กœ๋“œ๊ฐ€ XNUMX๋ฐฐ๋‚˜ "ํŽธํ–ฅ"๋˜์–ด๋„ ์ตœ์‹  SSD์˜ ๊ธฐ๋Šฅ์„ ์‰ฝ๊ฒŒ ์ถฉ์กฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Sublight์—์„œ PostgreSQL๋กœ ์ž‘์„ฑ: ํ˜ธ์ŠคํŠธ 1๊ฐœ, 1์ผ, 1TB

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€