All pages
1 of 1

Loading...

์•„ํ‚คํ…์ฒ˜ ๊ฐœ์š”

PostgreSQL์˜ Extension ์†Œ๊ฐœ

PostgreSQL์€ ํ™•์žฅ์„ฑ์ด ๋›ฐ์–ด๋‚œ ์˜คํ”ˆ์†Œ์Šค ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋กœ ์ž˜ ์•Œ๋ ค์ ธ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ช…์„ฑ์„ ์ด๋ฃจ๋Š” ๋ฐ์—๋Š” PostgreSQL์˜ ๊ธฐ๋Šฅ์„ ์œ ์—ฐํ•˜๊ฒŒ ํ™•์žฅํ•  ์ˆ˜ ์žˆ๋Š” Extension Framework๊ฐ€ ํฐ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. Extension์„ ํ™œ์šฉํ•œ ๊ธฐ๋Šฅ ํ™•์žฅ์€ PostgreSQL์˜ ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ ํƒ€์ž… ๋ฐ ํ•จ์ˆ˜ ์ง€์›์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๋ฉฐ, ๋” ๋‚˜์•„๊ฐ€ ๋‚ด๋ถ€ ๊ธฐ๋Šฅ์˜ ๊ฐœ์„ ๋„ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

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


O2 Extensions ์†Œ๊ฐœ

O2๋Š” OpenSQL for Oracle์˜ ์•ฝ์–ด๋กœ, Oracle ๋ฐ์ดํ„ฐ ํƒ€์ž…, ๋ทฐ, ๋‚ด์žฅ ํ•จ์ˆ˜ ๋ฐ ๋‚ด์žฅ ํŒจํ‚ค์ง€๋ฅผ ํ˜ธํ™˜ํ•ด์ฃผ๋Š” Extension์˜ ์ง‘ํ•ฉ์ž…๋‹ˆ๋‹ค. O2๋Š” ์˜คํ”ˆ์†Œ์Šค ํ”„๋กœ์ ํŠธ์ธ Orafce๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์‹œ์ž‘๋˜์—ˆ์ง€๋งŒ, ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฉด์—์„œ ๋งŽ์€ ๋ณ€ํ™”๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์›๋ž˜ ํ•˜๋‚˜์˜ Extension์œผ๋กœ ๊ด€๋ฆฌ๋˜์—ˆ๋˜ Orafce๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ์˜ Extension์œผ๋กœ ๋ถ„๋ฆฌํ•˜์˜€์Šต๋‹ˆ๋‹ค.

O2 Extensions์—๋Š” ์•„๋ž˜ Extension์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

  • O2Types: Oracle ๋ฐ์ดํ„ฐ ํƒ€์ž… ํ˜ธํ™˜ Extension

  • O2Views: Oracle ๋ทฐ ํ˜ธํ™˜ Extension

  • O2Functions: Oracle ๋‚ด์žฅ ํ•จ์ˆ˜ ํ˜ธํ™˜ Extension

  • Package Extensions: Oracle ๋‚ด์žฅ ํŒจํ‚ค์ง€ ํ˜ธํ™˜ Extension ๋ชจ์Œ

    • DBMS_ALERT

    • DBMS_ASSERT

    • DBMS_OUTPUT

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


O2 Extension์—์„œ ์ œ๊ณตํ•˜๋Š” ๋‚ด์žฅ ํ•จ์ˆ˜๋‚˜ ํŒจํ‚ค์ง€๋Š” ๋‚ด๋ถ€์ ์œผ๋กœ ์‚ฌ์šฉ์ž ์ •์˜ ํ•จ์ˆ˜(UDF)๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. PostgreSQL์€ ์‚ฌ์šฉ์ž ์ •์˜ ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•  ๋•Œ SQL, PL/pgSQL๋ฟ๋งŒ ์•„๋‹ˆ๋ผ C/C++, Python, Perl, Rust ๋“ฑ ๋‹ค์–‘ํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. O2 Extension์€ ํŠนํžˆ SQL ๋ฐ PL/pgSQL๋กœ ์ž‘์„ฑ๋œ ์‚ฌ์šฉ์ž ์ •์˜ ํ•จ์ˆ˜๋ฅผ C ์ฝ”๋“œ๋กœ ๋ณ€๊ฒฝํ•˜์—ฌ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œ์ผฐ์Šต๋‹ˆ๋‹ค.

PostgreSQL Query ์‹คํ–‰ ์—”์ง„์ด SQL์ด๋‚˜ PL/pgSQL๋กœ ์ž‘์„ฑ๋œ UDF๋ฅผ ์‹คํ–‰ํ•  ๋•Œ ๋‚ด๋ถ€์ ์œผ๋กœ ์ปค์„œ๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ์„œ๋ธŒ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•˜์ง€๋งŒ, C ์ฝ”๋“œ๋กœ ์ž‘์„ฑ๋œ ํ•จ์ˆ˜๋Š” ์ปดํŒŒ์ผ ๋œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ์ง์ ‘ ์‹คํ–‰๋˜๋ฏ€๋กœ ๋น ๋ฅธ ์„ฑ๋Šฅ์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ, C ์ฝ”๋“œ๋กœ ๊ตฌํ˜„ํ•˜๋ฉด PostgreSQL ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋” ์ •๊ตํ•˜๊ณ  ์œ ์—ฐํ•œ ๊ตฌํ˜„์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ์กด Orafce๋Š” ํ•˜๋‚˜์˜ Extension์œผ๋กœ ๊ด€๋ฆฌ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์—, ์ „์ฒด ๊ตฌํ˜„ ์ค‘ ํ•˜๋‚˜์˜ ์š”์†Œ์— ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์ „์ฒด Extension์„ ์—…๋ฐ์ดํŠธํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด, O2๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ Extension์œผ๋กœ ๋‚˜๋ˆ„์–ด ๊ด€๋ฆฌํ•จ์œผ๋กœ์จ, ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ Extension๋งŒ ๊ต์ฒดํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, DBMS_ALERT๋‚˜ DBMS_PIPE์™€ ๊ฐ™์ด ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํŒจํ‚ค์ง€๋Š” shared_preload_libraries์— ์ถ”๊ฐ€ํ•˜์—ฌ DB ์ธ์Šคํ„ด์Šค๋ฅผ ๊ธฐ๋™ํ•ด์•ผ ํ•˜๋Š”๋ฐ, O2์˜ ๊ฒฝ์šฐ ์ด๋“ค Extension์ด ๋ณ„๋„๋กœ ๋ถ„๋ฆฌ๋˜์–ด ์žˆ์–ด ํ•„์š”ํ•œ Extension๋งŒ shared_preload_libraries์— ์ถ”๊ฐ€ํ•˜๋ฉด ๋˜๋„๋ก ๊ฐœ์„ ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด์™€ ๊ฐ™์€ ๊ฐœ์„  ์‚ฌํ•ญ๋“ค์€ O2 Extension์ด PostgreSQL ์‚ฌ์šฉ์ž๋“ค์—๊ฒŒ ๋” ๊ฐ•๋ ฅํ•˜๊ณ  ์œ ์—ฐํ•œ Oracle ํ˜ธํ™˜ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ, O2 Extension์˜ ๋„์ž…์œผ๋กœ ์ธํ•ด ์„ฑ๋Šฅ, ์œ ์—ฐ์„ฑ, ์•ˆ์ •์„ฑ์ด ํฌ๊ฒŒ ํ–ฅ์ƒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

  • DBMS_PIPE

  • DBMS_RANDOM

  • DBMS_SCHEDULER

  • DBMS_SQL

  • DBMS_JOB

  • DBMS_RLS

  • UTL_FILE

  • O2 Extensions ์žฅ์ ๊ณผ ๊ฐœ์„  ์‚ฌํ•ญ

    SQL, PL/pgSQL๋กœ ์ž‘์„ฑ๋œ ์‚ฌ์šฉ์ž ์ •์˜ ํ•จ์ˆ˜๋ฅผ C ์ฝ”๋“œ๋กœ ๋ณ€๊ฒฝ

    Extension์„ ์—ฌ๋Ÿฌ ๊ฐœ๋กœ ๋‚˜๋ˆ„์–ด Blast Radius ๊ฐ์†Œ