PostgreSQL์ ๊ฒฝ์ฐ ์ ์ํด ์ ์ ์ฟผ๋ฆฌ ์ธ์ด ๊ตฌํ์ ํตํ AGE(AgensGraph-Extension) ์ถ๊ฐ ์คํ์ฌ์ดํผ ๊ทธ๋ํ๋ฅผ ํ์ฑํ๋ ์ํธ ์ฐ๊ฒฐ๋ ๊ณ์ธต์ ๋ฐ์ดํฐ ์ธํธ๋ฅผ ์กฐ์ํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ์ด๊ณผ ํ ๋์ ๊ทธ๋ํ ์ค์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ๋คํธ์ํฌ์ ์ ์ฌํ ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ฆ, ๋
ธ๋, ํด๋น ์์ฑ ๋ฐ ๋
ธ๋ ๊ฐ์ ๊ด๊ณ๊ฐ ์ง์ ๋ฉ๋๋ค. ๋์ด ๋ฐฐํฌ์ Apache 2.0 ๋ผ์ด์ผ์ค์ ๋ฐ๋ผ ๋ผ์ด์ผ์ค๊ฐ ๋ถ์ฌ๋์์ผ๋ฉฐ Bitnine์ด Apache Foundation์ ํ์์ ๋ฐ์ ํ์ฌ Apache Incubator์ ๋ณด๊ด๋์ด ์์ต๋๋ค.
์ด ํ๋ก์ ํธ๋ DBMS์ ๊ฐ๋ฐ์ ๊ณ์ํฉ๋๋ค. ์์ ์ค๊ทธ๋ํ, ์ด๋ ์ด ๊ทธ๋ํ ์ฒ๋ฆฌ๋ฅผ ์ํด ์์ ๋ PostgreSQL ์์ ์
๋๋ค. ์ฃผ์ ์ฐจ์ด์ ์ ํ์ค PostgreSQL ๋ฆด๋ฆฌ์ค์ ๋ํ ์ถ๊ฐ ๊ธฐ๋ฅ์ผ๋ก ์๋ํ๋ ๋ฒ์ฉ ์ถ๊ฐ ๊ธฐ๋ฅ ํํ๋ก AGE๋ฅผ ๊ตฌํํ๋ค๋ ๊ฒ์
๋๋ค. ์ต๊ทผ ๋ฐํ๋ ์ด์ ์ํ์น ์๋ 0.2.0 PostgreSQL 11์ ์ง์ํฉ๋๋ค.
ํ์ฌ ์ํ AGE ะฟะพะดะดะตัะถะธะฒะฐะตั ๋
ธ๋์ ๋งํฌ๋ฅผ ์ ์ํ๊ธฐ ์ํด "CREATE" ํํ์์ ์ฌ์ฉํ๊ณ , ์ง์ ๋ ์กฐ๊ฑด(WHERE), ์ง์ ๋ ์์(ORDER BY)์ ๋ฐ๋ผ ๊ทธ๋ํ์์ ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํ๋ "MATCH" ํํ์์ ์ฌ์ฉํ๋ Cypher ์ฟผ๋ฆฌ ์ธ์ด์ ๊ธฐ๋ฅ ์ ํ ์ฌํญ์ ์ค์ ํฉ๋๋ค(SKIP, LIMIT). ์ฟผ๋ฆฌ์์ ๋ฐํ๋ ๊ฒฐ๊ณผ ์งํฉ์ "RETURN" ์์ ์ฌ์ฉํ์ฌ ๊ฒฐ์ ๋ฉ๋๋ค. "WITH" ํํ์์ ์ฌ๋ฌ ์์ฒญ์ ํจ๊ป ์ฐ๊ฒฐํ๋ ๋ฐ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๊ทธ๋ํ ํํ์ ์์ฑ์ ๊ณ์ธต์ ์ผ๋ก ์ ์ฅํ๋ ๋ชจ๋ธ, ๊ด๊ณํ ๋ชจ๋ธ, JSON ํ์์ผ๋ก ๋ฌธ์๋ฅผ ์ ์ฅํ๋ ๋ชจ๋ธ์ ๊ฒฐํฉํ ๋ค์ค ๋ชจ๋ธ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์์ฑํ ์ ์์ต๋๋ค. SQL ๋ฐ Cypher ์ธ์ด์ ์์๋ฅผ ํฌํจํ๋ ํตํฉ ์ฟผ๋ฆฌ ์คํ์ ์ง์ํฉ๋๋ค.
๊ทธ๋ํ์ ๊ผญ์ง์ ๊ณผ ๋ชจ์๋ฆฌ์ ์์ฑ์ ๋ํ ์ธ๋ฑ์ค๋ฅผ ์์ฑํ ์ ์์ต๋๋ค.
๊ทธ๋ํ์ ๋ชจ์๋ฆฌ, ์ ์ ๋ฐ ๊ฒฝ๋ก์ ๋ํ ์ ํ์ ํฌํจํ์ฌ Agtype ์ ํ์ ํ์ฅ๋ ์ธํธ๋ฅผ ์ฌ์ฉํ๋๋ก ์ ์๋์์ต๋๋ค. ์ง๊ณ ํํ์์ ์์ง ๊ตฌํ๋์ง ์์์ต๋๋ค. ์ฌ์ฉ ๊ฐ๋ฅํ ํน์ ํจ์์๋ id, start_id, end_id, ์ ํ, ์์ฑ, head, last, length, size, startNode, endNode, timestamp, toBoolean, toFloat, toInteger ๋ฐ coalesce๊ฐ ํฌํจ๋ฉ๋๋ค.
์ถ์ฒ : opennet.ru