PostgreSQL์ ํ์ฅ์ฑ์ด ๋ฐ์ด๋ ์คํ์์ค ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก ์ ์๋ ค์ ธ ์์ต๋๋ค. ์ด๋ฌํ ๋ช ์ฑ์ ์ด๋ฃจ๋ ๋ฐ์๋ PostgreSQL์ ๊ธฐ๋ฅ์ ์ ์ฐํ๊ฒ ํ์ฅํ ์ ์๋ Extension Framework๊ฐ ํฐ ์ญํ ์ ํฉ๋๋ค. Extension์ ํ์ฉํ ๊ธฐ๋ฅ ํ์ฅ์ PostgreSQL์ ๋ค์ํ ๋ฐ์ดํฐ ํ์ ๋ฐ ํจ์ ์ง์์ ๊ฐ๋ฅํ๊ฒ ํ๋ฉฐ, ๋ ๋์๊ฐ ๋ด๋ถ ๊ธฐ๋ฅ์ ๊ฐ์ ๋ ๊ฐ๋ฅํฉ๋๋ค.
Extension์ ์ค์ํ ํน์ง์ PostgreSQL ์ธ์คํด์ค์ ๋์ ์ผ๋ก ๋ก๋ฉ ๋๋ค๋ ๊ฒ์ ๋๋ค. ์ฆ, PostgreSQL์์๋ Extension์ ํตํด ์๋ก์ด ๊ธฐ๋ฅ์ ์ถ๊ฐํ ๋ ์์ค๋ฅผ ๋ค์ ๋น๋ํ๊ฑฐ๋ ์คํ ํ์ผ์ ๊ต์ฒดํ ํ์๊ฐ ์์ต๋๋ค. ์ธ์คํด์ค ๊ธฐ๋ ์ ์ด๊ธฐํ ์์ ์ด ํ์ํ Extension์ ์ ์ธํ๋ฉด, Extension์ ์ถ๊ฐํ ๋ ์ธ์คํด์ค๋ฅผ ๋ค์ ๊ธฐ๋ํ๋ ์ผ๋ ํ์ ์์ต๋๋ค. ์ด๋ฌํ ์ ๋๋ฌธ์ PostgreSQL์์๋ ์๋ก์ด ๊ธฐ๋ฅ์ ์ถ๊ฐํ๋ ์์ ์ด ๋งค์ฐ ๊ฐํธํฉ๋๋ค.
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