getPuri๋ Puri ์ฟผ๋ฆฌ ๋น๋๋ฅผ ๊ฐ์ ธ์ค๋ ๋ฉ์๋์
๋๋ค. ์ง์ SQL ์ฟผ๋ฆฌ๋ฅผ ์์ฑํ๊ฑฐ๋ UpsertBuilder๋ฅผ ์ฌ์ฉํ ๋ ํ์ํฉ๋๋ค.
ํ์ ์๊ทธ๋์ฒ
๋งค๊ฐ๋ณ์
which
๋ฐ์ดํฐ๋ฒ ์ด์ค ํ๋ฆฌ์ ์ ์ง์ ํฉ๋๋ค. ํ์ :DBPreset ("r" | "w")
"r": Read ์ ์ฉ (๋ณต์ DB, ์กฐํ์ฉ)"w": Write ๊ฐ๋ฅ (Primary DB, ์ฐ๊ธฐ์ฉ)
"r"๊ณผ "w"๋ ๋์ผํ DB๋ฅผ ๊ฐ๋ฆฌํฌ ์ ์์ต๋๋ค. ์ค์ ์ ๋ฐ๋ผ ๋ค๋ฆ
๋๋ค.๋ฐํ๊ฐ
ํ์ :PuriWrapper
Puri ์ฟผ๋ฆฌ ๋น๋ ๋ํผ ๊ฐ์ฒด๋ฅผ ๋ฐํํฉ๋๋ค.
PuriWrapper ๋ฉ์๋
table / from
ํ ์ด๋ธ์ ์ง์ ํ์ฌ Puri ์ฟผ๋ฆฌ ๋น๋๋ฅผ ์์ํฉ๋๋ค.transaction
ํธ๋์ญ์ ์ ์์ํฉ๋๋ค.UpsertBuilder ๋ฉ์๋
ubRegister
UpsertBuilder์ ๋ ์ฝ๋๋ฅผ ๋ฑ๋กํฉ๋๋ค.ubUpsert
๋ฑ๋ก๋ ๋ ์ฝ๋๋ฅผ Upsertํฉ๋๋ค.ubInsertOnly
๋ฑ๋ก๋ ๋ ์ฝ๋๋ฅผ Insert๋ง ํฉ๋๋ค (UPDATE ์์).ubUpdateBatch
๋ฑ๋ก๋ ๋ ์ฝ๋๋ฅผ ๋ฐฐ์น ์ ๋ฐ์ดํธํฉ๋๋ค.raw
Raw SQL์ ์คํํฉ๋๋ค.๊ธฐ๋ณธ ์ฌ์ฉ๋ฒ
์ง์ ์ฟผ๋ฆฌ ์์ฑ
๋ณต์กํ ์ฟผ๋ฆฌ
ํธ๋์ญ์ ์ฌ์ฉ
ํธ๋์ญ์ ์ปจํ ์คํธ ์๋ ๊ฐ์ง
getPuri๋ ํธ๋์ญ์
์ปจํ
์คํธ๋ฅผ ์๋์ผ๋ก ๊ฐ์งํ๊ณ ์ฌ์ฌ์ฉํฉ๋๋ค. ์ด๋ @transactional ๋ฐ์ฝ๋ ์ดํฐ์ ํจ๊ป ์ฌ์ฉํ ๋ ์ค์ํ ๊ธฐ๋ฅ์
๋๋ค.
๋์ ์๋ฆฌ
getPuri ๋ฉ์๋๋ ๋ด๋ถ์ ์ผ๋ก ๋ค์๊ณผ ๊ฐ์ด ๋์ํฉ๋๋ค:
DB.getTransactionContext()๋ฅผ ํตํด ํ์ฌ ์คํ ์ค์ธ ํธ๋์ญ์ ํ์ธ- ํธ๋์ญ์ ์ด ์์ผ๋ฉด ํด๋น ํธ๋์ญ์ ์ ์ฌ์ฌ์ฉ
- ํธ๋์ญ์ ์ด ์์ผ๋ฉด ์๋ก์ด PuriWrapper ์์ฑ
@transactional ๋ด์์ ์ฌ์ฉ
์ค์ฒฉ ๋ฉ์๋ ํธ์ถ ์์ ์ฑ
์ด ๊ธฐ๋ฅ ๋๋ถ์ ํธ๋์ญ์ ๋ด์์ ๋ค๋ฅธ ๋ฉ์๋๋ฅผ ํธ์ถํด๋ ์์ ํฉ๋๋ค. ๋ชจ๋getPuri ํธ์ถ์ด ๋์ผํ ํธ๋์ญ์
์ ์ฌ์ฉํฉ๋๋ค.
@transactional ๋ฐ์ฝ๋ ์ดํฐ๊ฐ ์ค์ ํ ํธ๋์ญ์
์ปจํ
์คํธ๋ ๋ชจ๋ ํ์ ๋ฉ์๋ ํธ์ถ์์ ์๋์ผ๋ก
๊ณต์ ๋ฉ๋๋ค. ์ด๋ AsyncLocalStorage๋ฅผ ํตํด ๊ตฌํ๋ฉ๋๋ค.์ค์ ์์
- ์ง๊ณ ์ฟผ๋ฆฌ
- Raw SQL
- ๋ฐฐ์น ์์
- ๋ณต์กํ ํธ๋์ญ์
getPuri vs getDB
getPuri
Puri ์ฟผ๋ฆฌ ๋น๋ + UpsertBuilder๋ฅผ ์ ๊ณตํฉ๋๋ค.getDB
์์ Knex ์ธ์คํด์ค๋ฅผ ์ ๊ณตํฉ๋๋ค.๋๋ถ๋ถ์ ๊ฒฝ์ฐ
getPuri๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๊ถ์ฅํฉ๋๋ค. ํ์
์์ ์ฑ๊ณผ UpsertBuilder ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.ํธ๋์ญ์ ๊ฒฉ๋ฆฌ ์์ค
"read uncommitted""read committed"(PostgreSQL ๊ธฐ๋ณธ)"repeatable read""serializable"
ํ์ ์์ ์ฑ
Puri๋ ์์ ํ ํ์ ์์ ์ฑ์ ์ ๊ณตํฉ๋๋ค.์ฃผ์์ฌํญ
1. ์ฝ๊ธฐ/์ฐ๊ธฐ ๊ตฌ๋ถ
์ฝ๊ธฐ ์์ ์"r", ์ฐ๊ธฐ ์์
์ "w"๋ฅผ ์ฌ์ฉํ์ธ์.
2. ํธ๋์ญ์ ์ปจํ ์คํธ
@transactional ๋ด์์๋ ํธ๋์ญ์
์ด ์๋์ผ๋ก ๊ด๋ฆฌ๋ฉ๋๋ค.
3. UpsertBuilder๋ ํธ๋์ญ์ ํ์
์ฑ๋ฅ ์ต์ ํ
1. ์ธ๋ฑ์ค ํ์ฉ
2. SELECT ํ๋ ์ ํ
3. ๋ฐฐ์น ์ฒ๋ฆฌ
๋ค์ ๋จ๊ณ
Puri ์ฟผ๋ฆฌ ๋น๋
Puri ์ฟผ๋ฆฌ ์์ฑ ๋ฐฉ๋ฒ
UpsertBuilder
UpsertBuilder ์ฌ์ฉ ๊ฐ์ด๋
@transactional
ํธ๋์ญ์
๋ฐ์ฝ๋ ์ดํฐ
ํธ๋์ญ์
์๋ ํธ๋์ญ์
๊ด๋ฆฌ