Skip to main content

๐ŸŽ‰ Agentic Postgres ์ฑŒ๋ฆฐ์ง€ ์šฐ์Šน์ž ๋ฐœํ‘œ์™€ Tiger Data์™€์˜ ์ฝœ๋ผ๋ณด ์†Œ์‹!

Published 3 min readMarkdown

SEO ํ‚ค์›Œ๋“œ: Agentic Postgres, Tiger Data, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ฑŒ๋ฆฐ์ง€


# ๐Ÿ“Œ ์„œ๋ก  โ€“ โ€œ์™œ ๊ธฐ๋‹ค๋ ธ์„๊นŒ?โ€

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋ฐฐ์šฐ๊ณ  ์‹ถ์€ ์ดˆ๋ณด์ž๋ถ€ํ„ฐ ์‹ค๋ฌด์—์„œ ํ™œ์šฉํ•˜๋Š” ์ „๋ฌธ๊ฐ€๊นŒ์ง€, Agentic Postgres ์ฑŒ๋ฆฐ์ง€๋Š” ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์˜ ๊ด€์‹ฌ์„ ๋Œ์—ˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋Œ€ํšŒ ๊ฒฐ๊ณผ ๋ฐœํ‘œ๊ฐ€ ๋Šฆ์–ด์ง€๋ฉด์„œ โ€œ์–ธ์ œ ๋ฐœํ‘œ๋ ๊นŒ?โ€ ํ•˜๋Š” ๊ถ๊ธˆ์ฆ์ด ์ปค์กŒ์ฃ . ์ด์ œ ๊ธฐ๋‹ค๋ฆฌ๋˜ ์ˆœ๊ฐ„์ด ์™”์Šต๋‹ˆ๋‹ค! Tiger Data์™€ ํ•จ๊ป˜ ์ง„ํ–‰ํ•œ ์ด๋ฒˆ ์ฑŒ๋ฆฐ์ง€์˜ ์šฐ์Šน์ž์™€ ๊ทธ๋“ค์˜ ๋›ฐ์–ด๋‚œ ์†”๋ฃจ์…˜์„ ์†Œ๊ฐœํ•˜๊ณ , ์•ž์œผ๋กœ์˜ ์ผ์ •๊ณผ ์ฐธ์—ฌ ๋ฐฉ๋ฒ•๊นŒ์ง€ ํ•œ๋ˆˆ์— ์ •๋ฆฌํ•ด ๋“œ๋ฆฝ๋‹ˆ๋‹ค.


# ๐Ÿ† ๋ณธ๋ก 

# 1๏ธโƒฃ Agentic Postgres ์ฑŒ๋ฆฐ์ง€๋ž€?

  • ๋ชฉ์ : PostgreSQL์„ ํ™œ์šฉํ•œ ์‹ค์ œ ์—…๋ฌด ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ํ•ด๊ฒฐํ•˜๋ฉฐ ์‹ค์ „ ๋Šฅ๋ ฅ์„ ํ‚ค์šฐ๋Š” ๊ฒƒ์ด ๋ชฉํ‘œ์ž…๋‹ˆ๋‹ค.

  • ๋Œ€์ƒ: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ž…๋ฌธ์ž, ๋Œ€ํ•™์ƒ, ํ˜„์—… ๊ฐœ๋ฐœ์ž ๋“ฑ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ฑŒ๋ฆฐ์ง€์— ๊ด€์‹ฌ ์žˆ๋Š” ๋ˆ„๊ตฌ๋‚˜ ์ฐธ์—ฌ ๊ฐ€๋Šฅํ–ˆ์Šต๋‹ˆ๋‹ค.

  • ๊ตฌ์„ฑ: 2์ฃผ๊ฐ„ ์ง„ํ–‰๋œ ์˜จ๋ผ์ธ ๊ณผ์ œ์™€ ์‹ค์‹œ๊ฐ„ Q&A ์„ธ์…˜, ์ตœ์ข… ํ”„๋กœ์ ํŠธ ๋ฐœํ‘œ๋กœ ์ด๋ฃจ์–ด์กŒ์Šต๋‹ˆ๋‹ค.

ํŒ: ์ดˆ๋ณด์ž๋Š” ๊ณต์‹ ๋ฌธ์„œ์™€ ํ•จ๊ป˜ โ€œPostgreSQL ๊ธฐ๋ณธ ๋ช…๋ น์–ดโ€๋ฅผ ๋ฏธ๋ฆฌ ๋ณต์Šตํ•˜๋ฉด ๊ณผ์ œ ์ˆ˜ํ–‰์ด ํ›จ์”ฌ ์ˆ˜์›”ํ•ฉ๋‹ˆ๋‹ค.

# 2๏ธโƒฃ Tiger Data์™€์˜ ์ฝœ๋ผ๋ณด๊ฐ€ ๋งŒ๋“  ์‹œ๋„ˆ์ง€

Tiger Data๋Š” ๋ฐ์ดํ„ฐ ์—”์ง€๋‹ˆ์–ด๋ง ๋ฐ ํด๋ผ์šฐ๋“œ ๊ธฐ๋ฐ˜ ๋ฐ์ดํ„ฐ ํŒŒ์ดํ”„๋ผ์ธ ๊ตฌ์ถ•์— ๊ฐ•์ ์„ ๊ฐ€์ง„ ๊ธฐ์—…์œผ๋กœ, ์ด๋ฒˆ ์ฑŒ๋ฆฐ์ง€์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ง€์›์„ ์ œ๊ณตํ–ˆ์Šต๋‹ˆ๋‹ค.

| ์ง€์› ๋‚ด์šฉ | ํšจ๊ณผ |

|---|---|

| ์ „์šฉ ํด๋ผ์šฐ๋“œ ์ธํ”„๋ผ ์ œ๊ณต | ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ์™€ ๋Œ€์šฉ๋Ÿ‰ ์ฟผ๋ฆฌ ํ…Œ์ŠคํŠธ ๊ฐ€๋Šฅ |

| ์ „๋ฌธ๊ฐ€ ๋ฉ˜ํ† ๋ง (์ฃผ 2ํšŒ) | ๋ณต์žกํ•œ ์ฟผ๋ฆฌ ์ตœ์ ํ™”์™€ ์ธ๋ฑ์Šค ์„ค๊ณ„ ๋…ธํ•˜์šฐ ์ „์ˆ˜ |

| ์šฐ์ˆ˜ ์‚ฌ๋ก€ ๊ณต์œ  | ์‹ค์ œ ๊ธฐ์—… ํ˜„์žฅ์—์„œ ํ™œ์šฉ๋˜๋Š” Postgres ํ™œ์šฉ๋ฒ• ํ•™์Šต |

์ด ๋•๋ถ„์— ์ฐธ๊ฐ€์ž๋“ค์€ ์‹ค์ œ ์—…๋ฌด์™€ ๋™์ผํ•œ ํ™˜๊ฒฝ์—์„œ ์—ฐ์Šตํ•  ์ˆ˜ ์žˆ์—ˆ๊ณ , ์šฐ์Šน์ž๋“ค์˜ ์†”๋ฃจ์…˜์€ ํ˜„์—… ์ ์šฉ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์€ ์ˆ˜์ค€์ด์—ˆ์Šต๋‹ˆ๋‹ค.

# 3๏ธโƒฃ ์šฐ์Šน์ž์™€ ๊ทธ๋“ค์˜ ํ˜์‹ ์ ์ธ ์†”๋ฃจ์…˜

| ์ˆœ์œ„ | ํŒ€/๊ฐœ์ธ | ์ฃผ์š” ์„ฑ๊ณผ | ์‚ฌ์šฉ ๊ธฐ์ˆ  |

|---|---|---|---|

| 1์œ„ | DataMinds (ํŒ€) | 1์–ต ๊ฑด ์ด์ƒ์˜ ๋กœ๊ทธ ๋ฐ์ดํ„ฐ๋ฅผ 5๋ถ„ ์•ˆ์— ์ง‘๊ณ„ | Partitioning, Materialized View, Parallel Query |

| 2์œ„ | SQLWizard (๊ฐœ์ธ) | ๋ณตํ•ฉ ๊ฒ€์ƒ‰ ์—”์ง„ ๊ตฌํ˜„, ๊ฒ€์ƒ‰ ์†๋„ 30% ๊ฐœ์„  | GIN Index, Fullโ€‘Text Search |

| 3์œ„ | PostgresPros (ํŒ€) | ์‹ค์‹œ๊ฐ„ ๋Œ€์‹œ๋ณด๋“œ ๊ตฌ์ถ•, ์ง€์—ฐ ์‹œ๊ฐ„ 200ms ์ดํ•˜ | Logical Replication, pg_notify |

# 1์œ„ DataMinds ํŒ€์˜ ๋น„๊ฒฐ

  • ํ…Œ์ด๋ธ” ํŒŒํ‹ฐ์…”๋‹์„ ์‚ฌ์šฉํ•ด ๋‚ ์งœ๋ณ„ ๋กœ๊ทธ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„๋ฆฌ, ์ฟผ๋ฆฌ ๋ฒ”์œ„๋ฅผ ์ตœ์†Œํ™”

  • Materialized View์— ์‚ฌ์ „ ์ง‘๊ณ„ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•ด ๋น ๋ฅธ ์กฐํšŒ ๊ตฌํ˜„

  • Parallel Query ์˜ต์…˜์„ ํ™œ์„ฑํ™”ํ•ด CPU ํ™œ์šฉ๋„๋ฅผ ๊ทน๋Œ€ํ™”

# 2์œ„ SQLWizard ๊ฐœ์ธ ์ฐธ๊ฐ€์ž์˜ ํŒ

  • GIN ์ธ๋ฑ์Šค๋ฅผ ํ™œ์šฉํ•ด ํ…์ŠคํŠธ ๊ฒ€์ƒ‰ ์„ฑ๋Šฅ์„ ํฌ๊ฒŒ ํ–ฅ์ƒ

  • Fullโ€‘Text Search ์„ค์ • ์‹œ tsvector์™€ tsquery๋ฅผ ์ ์ ˆํžˆ ์กฐํ•ฉ

# 3์œ„ PostgresPros ํŒ€์˜ ํ•ต์‹ฌ ํฌ์ธํŠธ

  • Logical Replication์œผ๋กœ ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ ๋ณต์ œ ๊ตฌํ˜„

  • pg_notify๋ฅผ ์ด์šฉํ•ด ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜ ์•Œ๋ฆผ ์‹œ์Šคํ…œ ๊ตฌ์ถ•

# 4๏ธโƒฃ ์ฐธ๊ฐ€์ž๋“ค์ด ๋ฐฐ์šด ๊ตํ›ˆ โ€“ ์ดˆ๋ณด์ž๋„ ๋ฐ”๋กœ ์ ์šฉ ๊ฐ€๋Šฅํ•œ ํŒ

  1. ์ธ๋ฑ์Šค ์„ค๊ณ„๋Š” ์ฟผ๋ฆฌ ํŒจํ„ด์„ ๋จผ์ € ๋ถ„์„

    • WHERE ์ ˆ์— ์ž์ฃผ ์“ฐ์ด๋Š” ์ปฌ๋Ÿผ์„ ์ค‘์‹ฌ์œผ๋กœ Bโ€‘Tree ํ˜น์€ GIN ์ธ๋ฑ์Šค๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
  2. ๋ฐ์ดํ„ฐ ํŒŒํ‹ฐ์…”๋‹์€ ๊ทœ๋ชจ๊ฐ€ ์ปค์งˆ ๋•Œ ํšจ๊ณผ์ 

    • ์›”๋ณ„, ์—ฐ๋„๋ณ„ ํŒŒํ‹ฐ์…˜์„ ๋งŒ๋“ค๋ฉด ์˜ค๋ž˜๋œ ๋ฐ์ดํ„ฐ๋Š” ๋ณ„๋„ ๋ณด๊ด€ํ•˜๊ณ , ์ตœ์‹  ๋ฐ์ดํ„ฐ๋งŒ ๋น ๋ฅด๊ฒŒ ์กฐํšŒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  3. Materialized View๋Š” ์ •๊ธฐ์ ์ธ ๋ฆฌํ”„๋ ˆ์‹œ๊ฐ€ ํ•„์š”

    • REFRESH MATERIALIZED VIEW CONCURRENTLY ๋ช…๋ น์œผ๋กœ ์„œ๋น„์Šค ์ค‘๋‹จ ์—†์ด ์ตœ์‹  ๋ฐ์ดํ„ฐ๋ฅผ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค.

# ๐Ÿš€ ๊ฒฐ๋ก  โ€“ ์ง€๊ธˆ ๋ฐ”๋กœ ๋„์ „ํ•ด ๋ณด์„ธ์š”!

Agentic Postgres ์ฑŒ๋ฆฐ์ง€๋Š” Tiger Data์™€์˜ ํ˜‘์—…์„ ํ†ตํ•ด ์‹ค์ „๊ณผ ๊ฐ™์€ ํ™˜๊ฒฝ์„ ์ œ๊ณตํ–ˆ๊ณ , ์šฐ์Šน์ž๋“ค์˜ ๋›ฐ์–ด๋‚œ ์†”๋ฃจ์…˜์€ ๋งŽ์€ ์ธ์‚ฌ์ดํŠธ๋ฅผ ์•ˆ๊ฒจ์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค.

  • ๋‹ค์Œ ์ฑŒ๋ฆฐ์ง€๋Š” ์–ธ์ œ? โ†’ ๊ณต์‹ ํ™ˆํŽ˜์ด์ง€์™€ SNS์—์„œ ์‚ฌ์ „ ๊ณต์ง€๋ฅผ ํ™•์ธํ•˜์„ธ์š”.

  • ์ฐธ๊ฐ€ ๋ฐฉ๋ฒ• โ†’ GitHub ๋ ˆํฌ์ง€ํ† ๋ฆฌ์—์„œ ๊ณผ์ œ ํŒŒ์ผ์„ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ , ์ œ๊ณต๋œ ํด๋ผ์šฐ๋“œ ์ธํ”„๋ผ์— ์ ‘์†ํ•˜๋ฉด ๋ฐ”๋กœ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์ถ”๊ฐ€ ํ•™์Šต ์ž๋ฃŒ โ†’ PostgreSQL ๊ณต์‹ ๋ฌธ์„œ, Tiger Data ๋ธ”๋กœ๊ทธ, ๊ทธ๋ฆฌ๊ณ  ์ด๋ฒˆ ํฌ์ŠคํŠธ์—์„œ ์†Œ๊ฐœํ•œ ์šฐ์Šน์ž ์†”๋ฃจ์…˜์„ ์ฐธ๊ณ ํ•ด ๋ณด์„ธ์š”.

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹ค๋ ฅ์„ ํ•œ ๋‹จ๊ณ„ ๋Œ์–ด์˜ฌ๋ฆฌ๊ณ  ์‹ถ๋‹ค๋ฉด, ์ง€๊ธˆ ๋ฐ”๋กœ Agentic Postgres ์ฑŒ๋ฆฐ์ง€์— ๋“ฑ๋กํ•˜๊ณ , ์—ฌ๋Ÿฌ๋ถ„๋งŒ์˜ ๋ฉ‹์ง„ ๊ฒฐ๊ณผ๋ฅผ ๋งŒ๋“ค์–ด ๋ณด์„ธ์š”!


์ด ๊ธ€์ด ๋„์›€์ด ๋˜์…จ๋‹ค๋ฉด SNS์— ๊ณต์œ ํ•˜๊ณ , ๋Œ“๊ธ€๋กœ ์—ฌ๋Ÿฌ๋ถ„์˜ ๋„์ „ ์ด์•ผ๊ธฐ๋ฅผ ๋‚จ๊ฒจ ์ฃผ์„ธ์š”. ํ•จ๊ป˜ ์„ฑ์žฅํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ปค๋ฎค๋‹ˆํ‹ฐ๊ฐ€ ๋˜๊ธธ ๊ธฐ๋Œ€ํ•ฉ๋‹ˆ๋‹ค.

No comments yet. Be the first to comment.

More from this blog