Spanner์ฉ PostgreSQL ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉํ๋ฉด ์ต์ํ PostgreSQL ๋๊ตฌ์ ๊ตฌ๋ฌธ์ ์ฌ์ฉํ์ฌ Spanner์ ํ์ฅ ๊ฐ๋ฅํ๊ณ ๊ฐ์ฉ์ฑ์ด ๋์ ์์ ๊ด๋ฆฌํ ์ธํ๋ผ๋ฅผ ํ์ฉํ ์ ์์ต๋๋ค. ์ด ํ์ด์ง๋ PostgreSQL ์ธํฐํ์ด์ค์ ๊ธฐ๋ฅ๊ณผ ์ ํ์ฌํญ์ ์ดํดํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
PostgreSQL ์ธํฐํ์ด์ค์ ์ด์
- ์ด์์ฑ: PostgreSQL ์ธํฐํ์ด์ค๋ ์คํ์์ค PostgreSQL๊ณผ ํธํ๋๋ ์คํค๋ง, ์ฟผ๋ฆฌ, ํด๋ผ์ด์ธํธ๋ฅผ ์ฌ์ฉํ์ฌ ๋ค์ํ Spanner ๊ธฐ๋ฅ์ ๋ํ ์ก์ธ์ค ๊ถํ์ ์ ๊ณตํฉ๋๋ค. ์ด๋ฅผ ํตํด Spanner์์ ๋น๋๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ค๋ฅธ PostgreSQL ํ๊ฒฝ์ผ๋ก ์ด์ ํ๋ ๊ณผ์ ์ด ๊ฐ์ํ๋ฉ๋๋ค. ์ด๋ฌํ ์ด์์ฑ์ ๋ฐฐํฌ ์ ์ฐ์ฑ์ ์ ๊ณตํ๊ณ ๋น์์ ์ถ๊ตฌ ์ ๋ต๊ณผ ๊ฐ์ ์ฌํด ๋ณต๊ตฌ ์๋๋ฆฌ์ค๋ฅผ ์ง์ํฉ๋๋ค.
- ๊ธฐ๋ณธ ์ง์: ์ด๋ฏธ PostgreSQL์ ์ฌ์ฉํ๊ณ ์๋ ๊ฒฝ์ฐ ๋์ผํ PostgreSQL ๋ฌธ๊ณผ ๋๊ตฌ๋ฅผ ๋ง์ด ์ฌ์ฉํ์ฌ Spanner๋ฅผ ๋น ๋ฅด๊ฒ ์์ํ ์ ์์ต๋๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค ํฌํธํด๋ฆฌ์ค ์ ๋ฐ์์ PostgreSQL์ ์ฌ์ฉํ๋ฉด ํน์ ์ ํ๊ณผ ๊ณตํต ๊ถ์ฅ์ฌํญ ๊ฐ์ ์ฐจ์ด๊ฐ ์ค์ด๋ญ๋๋ค.
- ํํํ์ง ์๋ Spanner: PostgreSQL ์ธํฐํ์ด์ค๋ Spanner์ ๊ธฐ์กด ๊ธฐ๋ฐ์ ๊ธฐ๋ฐ์ผ๋ก ํ๋ฏ๋ก ๋ณด์์ ์ธ GoogleSQL ์ํ๊ณ์์ ์ ๊ณต๋๋ ๊ธฐ๋ฅ์ ์ ํ์ํค์ง ์๊ณ ๋ Spanner์ ๊ธฐ์กด ๊ฐ์ฉ์ฑ, ์ผ๊ด์ฑ, ๊ฐ๊ฒฉ ๋๋น ์ฑ๋ฅ ์ด์ ์ ๋ชจ๋ ์ ๊ณตํฉ๋๋ค.
Spanner์์ ์ง์๋์ง ์๋ PostgreSQL ๊ธฐ๋ฅ
PostgreSQL ์ธํฐํ์ด์ค๋ PostgreSQL๊ณผ ํธํ๋๋ ์คํค๋ง, ์ ํ, ์ฟผ๋ฆฌ, ํด๋ผ์ด์ธํธ๋ฅผ ํตํด Spanner์ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค๋ ์ ์ ์ดํดํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. PostgreSQL์ ์ผ๋ถ ๊ธฐ๋ฅ์ ์ง์๋์ง ์์ต๋๋ค. ๊ธฐ์กด PostgreSQL ์ ํ๋ฆฌ์ผ์ด์ ์ Spanner๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ๋ ค๋ฉด Spanner์ฉ PostgreSQL ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉํ๋๋ผ๋ ์ง์๋์ง ์๋ PostgreSQL ๊ธฐ๋ฅ์ด๋ ๋์์ ์ฐจ์ด(์: ์ฟผ๋ฆฌ ์ต์ ํ ๋๋ ๊ธฐ๋ณธ ํค ์ค๊ณ)๋ฅผ ์์ฉํ๊ธฐ ์ํด ์ฝ๊ฐ์ ์ฌ์์ ์ด ํ์ํ ์ ์์ต๋๋ค. ํ์ง๋ง ์ผ๋จ ๋ง์ด๊ทธ๋ ์ด์ ๋๋ฉด ์ํฌ๋ก๋์์ Spanner์ ์์ ์ฑ๊ณผ ๊ณ ์ ํ ๋ค์ค ๋ชจ๋ธ ๊ธฐ๋ฅ์ ํ์ฉํ ์ ์์ต๋๋ค.
๋ค์ ๋ชฉ๋ก์๋ ์ง์๋๋ PostgreSQL ๊ธฐ๋ฅ๊ณผ ์ง์๋์ง ์๋ PostgreSQL ๊ธฐ๋ฅ์ ๊ดํ ์์ธํ ๋ด์ฉ์ด ๋์ ์์ต๋๋ค.
- ์ง์๋๋ PostgreSQL ๊ธฐ๋ฅ: PostgreSQL ์ธํฐํ์ด์ค๋ ๊ฐ์ฅ ํํ ์ฌ์ฉ๋๋ ๋ง์ PostgreSQL ๊ธฐ๋ฅ์ ์ง์ํฉ๋๋ค. ์ฌ๊ธฐ์๋ ์คํค๋ง ๋ฐ ์ ํ ์์คํ ์ ํต์ฌ ๋ถ๋ถ, ์ฌ๋ฌ ์ผ๋ฐ์ ์ธ ์ฟผ๋ฆฌ ํํ, ๋ค์ํ ํจ์ ๋ฐ ์ฐ์ฐ์, PostgreSQL ์์คํ ์นดํ๋ก๊ทธ์ ์ฃผ์ ์ธก๋ฉด์ด ํฌํจ๋ฉ๋๋ค. ์ ํ๋ฆฌ์ผ์ด์ ์ Spanner์ PostgreSQL ์ ์ ํ๋กํ ์ฝ ๊ตฌํ์ ํตํด ์ฐ๊ฒฐํ์ฌ ๋ง์ PostgreSQL ํด๋ผ์ด์ธํธ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- ์ง์๋์ง ์๋ PostgreSQL ์ธ์ด ๊ธฐ๋ฅ: ํ์ฅ ํ๋ก๊ทธ๋จ, ์ฌ์ฉ์ ์ ์ ๋ฐ์ดํฐ ์ ํ, ์ฌ์ฉ์ ์ ์ ์ ์ฅ ํ๋ก์์ , ๊ธฐํ ๊ธฐ๋ฅ์ด ์ง์๋์ง ์์ต๋๋ค. ์ ์ฒด ๋ชฉ๋ก์ Spanner์ PostgreSQL ์ธ์ด๋ฅผ ์ฐธ์กฐํ์ธ์. PostgreSQL์๋ ์คํ์์ค PostgreSQL๊ณผ ๋ค๋ฅด๊ฒ ์๋ํ๋ ๋ช ๊ฐ์ง ๊ธฐ๋ฅ๋ ์์ต๋๋ค. ์์ธํ ๋ด์ฉ์ Spanner์ฉ PostgreSQL ์ธํฐํ์ด์ค์ ์๋ ค์ง ๋ฌธ์ ๋ฅผ ์ฐธ์กฐํ์ธ์.
- Spanner ๋ฐ Spanner ์ปจํธ๋กค ํ๋ ์ธ: PostgreSQL ์ธํฐํ์ด์ค๊ฐ ์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ Spanner ๋ฐ Google Cloud๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ์ธ์คํด์ค๋ฅผ ํ๋ก๋น์ ๋, ๋ณดํธ, ๋ชจ๋ํฐ๋ง, ์ต์ ํํฉ๋๋ค. Spanner๋ ๊ด๋ฆฌ ํ๋์ ์ํ pgAdmin๊ณผ ๊ฐ์ ๋๊ตฌ๋ฅผ ์ง์ํ์ง ์์ต๋๋ค.
- ํด๋ผ์ด์ธํธ ๋ฐ ์ ์ ํ๋กํ ์ฝ ์ง์: Spanner๋ ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ํจ๊ป ์คํ๋๋ ๊ฐ๋จํ ํ๋ก์์ธ PGAdapter๋ฅผ ์ฌ์ฉํ์ฌ PostgreSQL ์ ์ ํ๋กํ ์ฝ์ ํต์ฌ ์ฟผ๋ฆฌ ๊ธฐ๋ฅ์ ์ง์ํฉ๋๋ค. ์ด๋ฅผ ํตํด ๋ง์ Spanner ํด๋ผ์ด์ธํธ๊ฐ Spanner PostgreSQL ์ธํฐํ์ด์ค ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์๋ ๊ทธ๋๋ก ์ฌ์ฉํ๋ฉด์ Spanner์ ์ ์ญ ์๋ํฌ์ธํธ ๋ฐ ์ฐ๊ฒฐ ๊ด๋ฆฌ์ IAM ์ธ์ฆ์ ํ์ฉํ ์ ์์ต๋๋ค. Google์ ๋ด๋ถ ๋ฒค์น๋งํน์ ๋ฐ๋ฅด๋ฉด PGAdapter๋ Spanner์ ๊ธฐ๋ณธ ์ ๊ณต ์๋ํฌ์ธํธ์ ์ง์ ์ฐ๊ฒฐํ๋ ๊ฒ๊ณผ ๋น๊ตํ์ฌ ๋์ ๋๋ ์ง์ฐ ์๊ฐ์ ์ถ๊ฐํ์ง ์๋ ๊ฒ์ผ๋ก ๋ํ๋ฌ์ต๋๋ค.
์ด์ ๋ฐ ๊ด๋ฆฌ
PostgreSQL ์ธํฐํ์ด์ค๋ ๋ค์๊ณผ ๊ฐ์ ๊ธฐ๋ฅ์ผ๋ก Spanner ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ด๋ฆฌ๋ฅผ ์ง์ํฉ๋๋ค.
- ํตํฉ ํ๊ฒฝ: Spanner์ ๊ธฐ์กด ์ฝ์, API, ๋๊ตฌ(์: Google Cloud CLI)๋ฅผ ์ฌ์ฉํ์ฌ PostgreSQL ์ธํฐํ์ด์ค ์ง์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ํ๋ก๋น์ ๋, ๊ด๋ฆฌ, ๋ชจ๋ํฐ๋งํฉ๋๋ค.
- ์ ์ฐํ ๊ตฌ์ฑ: ์์ฑ ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ณ๋ก PostgreSQL ์ธํฐํ์ด์ค๋ฅผ ๊ตฌ์ฑํฉ๋๋ค. ๋จ์ผ Spanner ์ธ์คํด์ค์์ GoogleSQL ๋ฐ PostgreSQL ์ธํฐํ์ด์ค ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ชจ๋ ์์ฉํ ์ ์์ต๋๋ค.
- ๊ณต์ ์ด์ : ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ธ์ด ๋ชจ๋ ๋์ผํ ๊ธฐ๋ณธ ๋ถ์ฐํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ง์ ๊ณต์ ํ๋ฏ๋ก ์ผ๊ด๋ ํ์ฅ์ฑ, ์ผ๊ด์ฑ, ์ฑ๋ฅ, ๋ณด์์ ๋ณด์ฅํ ์ ์์ต๋๋ค.
๊ธฐ๋ฅ
Spanner์ PostgreSQL ์ธํฐํ์ด์ค๋ PostgreSQL ์ํ๊ณ์์ ํตํฉ์ ์ง์ํ๋ ๋ ๊ฐ์ง ๊ธฐ๋ณธ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
PostgreSQL ์ธ์ด ์ง์
Spanner๋ ๋ฐ์ดํฐ ์ฟผ๋ฆฌ ์ธ์ด(DQL), ๋ฐ์ดํฐ ์กฐ์ ์ธ์ด(DML), ๋ฐ์ดํฐ ์ ์ ์ธ์ด(DDL)๋ฅผ ๋น๋กฏํ PostgreSQL SQL ์ธ์ด์ ํ์ ์งํฉ์ ์ ๊ณตํฉ๋๋ค. ๋ํ ์ธํฐ๋ฆฌ๋ธ ์ฒ๋ฆฌ๋ ํ ์ด๋ธ, TTL(์๋ช ), ์ฟผ๋ฆฌ ํํธ์ ๊ฐ์ Spanner ๊ด๋ จ ๊ธฐ๋ฅ์ ์ง์ํ๋ ํ์ฅ ํ๋ก๊ทธ๋จ๋ ํฌํจ๋์ด ์์ต๋๋ค.
์ง์๋๋ PostgreSQL ์ธ์ด ์์์ ๋ํ ์์ธํ ๋ด์ฉ์ Spanner์ PostgreSQL ์ธ์ด๋ฅผ ์ฐธ์กฐํ์ธ์. PostgreSQL ์ธ์ด๋ก Spanner ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ์์๋ณด๋ ค๋ฉด ํน์ ๊ธฐ๋ฅ์ ๊ดํ ๋ฌธ์๋ฅผ ์ฐธ์กฐํ์ธ์.
PostgreSQL ํด๋ผ์ด์ธํธ ์ง์
Spanner๋ฅผ ์ฌ์ฉํ๋ฉด ๋ค์ํ ํด๋ผ์ด์ธํธ์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฐ๊ฒฐํ ์ ์์ต๋๋ค.
PostgreSQL ์ํ๊ณ ๋๊ตฌ: PostgreSQL JDBC ๋๋ผ์ด๋ฒ ๋ฐ PostgreSQL pgx ๋๋ผ์ด๋ฒ์ ๊ฐ์ ์ต์ํ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ PostgreSQL ์ธํฐํ์ด์ค ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฐ๊ฒฐํ ์ ์์ต๋๋ค. ์ง์๋๋ ๋๋ผ์ด๋ฒ, ORM, ๋๊ตฌ ๋ชฉ๋ก์ PostgreSQL ๋๋ผ์ด๋ฒ ๋ฐ ORM์ ์ฐธ์กฐํ์ธ์.
psql ๋ช ๋ น์ค ๋๊ตฌ: ๋๋ฆฌ ์ฌ์ฉ๋๋
psql
๋ํํ ํ๊ฒฝ์ด ์ง์๋๋ฏ๋ก ํฐ๋ฏธ๋์์ ์ง์ ์ฟผ๋ฆฌ๋ฅผ ์คํํ๊ณ , ๋ฉํ๋ฐ์ดํฐ๋ฅผ ํ์ํ๊ณ , ๋ฐ์ดํฐ๋ฅผ ๋ก๋ํ ์ ์์ต๋๋ค.PGAdapter: ์ด ๊ฐ๋จํ ํ๋ก์๋ ์ฐ๊ฒฐ ๊ด๋ฆฌ ๋ฐ ์ธ์ฆ์ ๊ฐ์ํํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ PGAdapter ๊ฐ์๋ฅผ ์ฐธ์กฐํ์ธ์.
Spanner ํด๋ผ์ด์ธํธ: Spanner๋ Spanner JDBC ๋๋ผ์ด๋ฒ ๋ฐ Go์ SQL ํจํค์ง์ฉ ๋๋ผ์ด๋ฒ์ ํจ๊ป ๋ค์ํ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด(Java, Go, Python, Node.js, Ruby, PHP, C#, C++)์ฉ ์คํ์์ค Spanner ํด๋ผ์ด์ธํธ๋ฅผ ์ ๊ณตํฉ๋๋ค. Spanner ํด๋ผ์ด์ธํธ๋ ํ๋ก์ ์์ด Spanner์ ์ ์ญ ์๋ํฌ์ธํธ์ ์ง์ ์ฐ๊ฒฐ๋ฉ๋๋ค. ๊ทธ๋ฌ๋ Spanner ํด๋ผ์ด์ธํธ๋ ๊ธฐ์กด PostgreSQL ํด๋ผ์ด์ธํธ, ORM, ๋๊ตฌ์์ ํธํ์ฑ์ ์ ๊ณตํ์ง ์์ต๋๋ค.
PostgreSQL ์ธํฐํ์ด์ค ์ฌ์ฉ ๊ถ์ฅ์ฌํญ
PostgreSQL ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉํ ๋๋ ๋ค์ ๊ถ์ฅ์ฌํญ์ ๋ฐ๋ฅด์ธ์.
- ์ ํ๋ฆฌ์ผ์ด์ ์ฐ๊ฒฐ: ์ง์๋๋ PostgreSQL ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ํจ์จ์ ์ผ๋ก ์ฐ๊ฒฐํฉ๋๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ํธ์์ฉ: ๋ํํ ์์ ์ ๊ฒฝ์ฐ ๋ค์ ์ค์์ ์ ํํฉ๋๋ค.
- ์ต์ํ psql ๋ช ๋ น์ค ๋๊ตฌ(PGAdapter ํ๋ก์ ์ฌ์ฉ)
- Google Cloud ์ฝ์ ๋ด์ ์ง๊ด์ ์ธ Spanner ์คํ๋์ค ํ์ด์ง
- IDE(์: DBeaver, Visual Studio Code, JetBrains, IntelliJ)
- ๋ก์ปฌ ๋จธ์ ์์ Spanner๋ฅผ ์๋ฎฌ๋ ์ด์ ํ ์ ์๋ Spanner ์๋ฎฌ๋ ์ดํฐ. ์ด๋ ๊ฐ๋ฐ ๋ฐ ํ ์คํธ ํ๋ก์ธ์ค ์ค์ ์ ์ฉํฉ๋๋ค.
๋ค์ ๋จ๊ณ
- PostgreSQL๊ณผ GoogleSQL ์ค์์ ์ ํํ๋ ๋ฐฉ๋ฒ ์์๋ณด๊ธฐ
- ๋น ๋ฅธ ์์์ ๋ฐ๋ผ PostgreSQL ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ง๋ค๊ธฐ ๋ฐ ์ํธ์์ฉํ๊ธฐ
- Spanner์ PostgreSQL ์ธ์ด ์ง์ ์์ธํ ์์๋ณด๊ธฐ
- PGAdapter ์์๋ณด๊ธฐ
- PGAdapter GitHub ์ ์ฅ์ ์์๋ณด๊ธฐ
- PostgreSQL ์ธํฐํ์ด์ค์์ ์๋ ค์ง ๋ฌธ์ ๊ฒํ ํ๊ธฐ