๋ฐ์ดํ„ฐ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ์‹œ์Šคํ…œ ๋น„๊ต ๋ฐ โ€‹โ€‹์„ ํƒ

๋ฐ์ดํ„ฐ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ์‹œ์Šคํ…œ ๋น„๊ต ๋ฐ โ€‹โ€‹์„ ํƒ

๋ฐ์ดํ„ฐ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ์‹œ์Šคํ…œ ๋น„๊ต ๋ฐ โ€‹โ€‹์„ ํƒ

๋ฐ์ดํ„ฐ ๋ชจ๋ธ์€ ๊ฐœ๋ฐœ ํ”„๋กœ์„ธ์Šค ์ค‘์— ๋ณ€๊ฒฝ๋˜๋Š” ๊ฒฝํ–ฅ์ด ์žˆ์œผ๋ฉฐ ์–ด๋Š ์‹œ์ ์—์„œ๋Š” ๋” ์ด์ƒ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ์ผ์น˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ฌผ๋ก  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์‚ญ์ œํ•˜๋ฉด ORM์ด ๋ชจ๋ธ๊ณผ ์ผ์น˜ํ•˜๋Š” ์ƒˆ ๋ฒ„์ „์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์ด ์ ˆ์ฐจ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋ฉด ๊ธฐ์กด ๋ฐ์ดํ„ฐ๊ฐ€ ์†์‹ค๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ์‹œ์Šคํ…œ์˜ ๊ธฐ๋Šฅ์€ ์Šคํ‚ค๋งˆ ๋ณ€๊ฒฝ์œผ๋กœ ์ธํ•ด ๊ธฐ์กด ๋ฐ์ดํ„ฐ ์†์‹ค ์—†์ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ๊ณผ ๋™๊ธฐํ™”๋˜๋„๋ก ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด ๊ธฐ์‚ฌ์—์„œ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ๋‹ค์–‘ํ•œ ๋„๊ตฌ๋ฅผ ์‚ดํŽด๋ณด๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฆฌ๋ทฐ๊ฐ€ ๋น„์Šทํ•œ ์„ ํƒ์— ์ง๋ฉดํ•œ ๊ฐœ๋ฐœ์ž์—๊ฒŒ ๋„์›€์ด ๋˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

ํƒœ์Šคํฌ

์šฐ๋ฆฌ ํšŒ์‚ฌ๋Š” ํ˜„์žฌ ์ฐจ์„ธ๋Œ€ ์ œํ’ˆ์ธ Docs Security Suite(DSS)๋ฅผ ์ ๊ทน์ ์œผ๋กœ ๊ฐœ๋ฐœํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์„œ๋ฒ„ ๋ถ€๋ถ„์€ .Net Core๋กœ ์ž‘์„ฑํ•˜๊ณ , DBMS๋กœ๋Š” Entity Framework Core๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋””์ž์ธํ•  ๋•Œ ์šฐ๋ฆฌ๋Š” Code First ์ ‘๊ทผ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ๋„๋ฉ”์ธ ๋ชจ๋ธ์€ ์—ฌ๋Ÿฌ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋™์‹œ์— ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ๊ฐœ๋ฐœ์ž๋Š” ์‹œ์Šคํ…œ์˜ ์ž์ฒด ๋…ผ๋ฆฌ์  ๋ถ€๋ถ„์„ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค.

์ด์ „ ์„ธ๋Œ€์˜ DSS๋Š” ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์œผ๋กœ ํด๋ž˜์‹ EF 6(Entity Framework ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜)์„ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด์— ๋Œ€ํ•œ ์ผ๋ถ€ ๋ถˆ๋งŒ์ด ์Œ“์˜€์Šต๋‹ˆ๋‹ค. ๊ฐ€์žฅ ํฐ ์ด์œ ๋Š” EF์— ๋ฒ„์ „ ์ถฉ๋Œ์„ ํ•ด๊ฒฐํ•˜๋Š” ์˜ฌ๋ฐ”๋ฅธ ์ ‘๊ทผ ๋ฐฉ์‹์ด ๋ถ€์กฑํ•˜๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ์‚ฌ์‹ค์€ ์ง€์›์˜ ์ผํ™˜์œผ๋กœ ๋ฒ„๊ทธ๋ฅผ ์ˆ˜์ •ํ•  ๋•Œ ์—ฌ์ „ํžˆ ์šฐ๋ฆฌ๋ฅผ ๋‹นํ™ฉํ•˜๊ฒŒ ํ•˜๋ฏ€๋กœ ์šฐ๋ฆฌ๋Š” ๋Œ€์ฒด ์˜ต์…˜์„ ๊ณ ๋ คํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋…ผ์˜ ๊ฒฐ๊ณผ, ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์— ๋Œ€ํ•œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์š”๊ตฌ ์‚ฌํ•ญ์ด ํ˜•์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

  1. ๋‹ค์–‘ํ•œ DBMS๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. MS SQL Server, PostgreSQL, Oracle์ด ํ•„์š”ํ•˜์ง€๋งŒ ์ž ์žฌ์ ์œผ๋กœ ๋‹ค๋ฅธ ๊ฒƒ์„ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
  2. ORM์œผ๋กœ ์ž‘์—…ํ•ฉ๋‹ˆ๋‹ค. ์ฒ˜์Œ์—๋Š” EF Core๋ฅผ ์‚ฌ์šฉํ•  ๊ณ„ํš์ด์—ˆ์ง€๋งŒ ์„ค๊ณ„ ๋‹จ๊ณ„์—์„œ๋Š” ๋‹ค๋ฅธ ORM์„ ๊ณ ๋ คํ•  ์ค€๋น„๊ฐ€ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  3. ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ์ž๋™ ์ƒ์„ฑ. Code First์˜ ๊ฐœ๋ฐœ์„ ๊ณ ๋ คํ•˜์—ฌ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ "์ง์ ‘ ์ž‘์„ฑ"ํ•  ํ•„์š”๊ฐ€ ์—†๋„๋ก ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.
  4. ๋ฒ„์ „ ์ถฉ๋Œ. ๋ถ„์‚ฐ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ๋Š” ๋ณ‘ํ•ฉ ์‹œ EF Core๊ฐ€ ์ถฉ๋Œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์—ฌ๋Ÿฌ ๋ถ€๋ถ„์ด ์„œ๋กœ ๋‹ค๋ฅธ ๊ฐœ๋ฐœ์ž์— ์˜ํ•ด ์ƒ์„ฑ๋˜๋ฏ€๋กœ ๊ฐ ๋ถ€๋ถ„์— ๋งŽ์€ ์‹œ๊ฐ„์„ ์†Œ๋น„ํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์‹ฌ๊ฐํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.
  5. ๊ณ ๊ธ‰ ๋ฌธ์„œํ™” ๋ฐ ์ง€์›. ์—ฌ๊ธฐ์„œ๋Š” ์„ค๋ช…์ด ํ•„์š”ํ•˜์ง€ ์•Š์€ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
  6. ๋ฌด๋ฃŒ. ๊ธฐ์ค€์€ ์กฐ๊ฑด๋ถ€์ž…๋‹ˆ๋‹ค. ์‹œ์Šคํ…œ์€ ๊ทธ๋‹ค์ง€ ๋น„์‹ธ์ง€๋„ ๋น„์‹ธ์ง€๋„ ์•Š์ง€๋งŒ ํŽธ์˜์„ฑ ์ธก๋ฉด์—์„œ ์ด์ƒ์ ์ด๊ธฐ ๋•Œ๋ฌธ์— ์šฐ๋ฆฌ๋„ ๊ณ ๋ คํ•  ์ค€๋น„๊ฐ€ ๋˜์–ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

์•ฝ๊ฐ„์˜ ์—ฐ๊ตฌ ๊ฒฐ๊ณผ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์˜ต์…˜์ด ๋ฐœ๊ฒฌ๋˜์—ˆ์œผ๋ฉฐ ๊ณ ๋ คํ•ด์•ผ ํ•  ๋ฐ”๋žŒ์งํ•œ ๊ฒƒ์œผ๋กœ ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค.

  1. EF ์ฝ”์–ด ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜
  2. DBup
  3. ๋ผ์šด๋“œํ•˜์šฐ์ŠคE
  4. ThinkingHome.Migrator
  5. ์œ ์ฐฝํ•œ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜

์ด์ œ ์ข€ ๋” ์ž์„ธํžˆ ์„ค๋ช…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ์‹œ์Šคํ…œ ๋น„๊ต ๋ฐ โ€‹โ€‹์„ ํƒ
EntityFramework ์ฝ”์–ด ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜

๋‹น์—ฐํžˆ ์ด๊ฒƒ์ด ์„ ํƒํ•  ์ฒซ ๋ฒˆ์งธ์ด์ž ์ฃผ์š” ์˜ต์…˜์ด์—ˆ์Šต๋‹ˆ๋‹ค. ํƒฌ๋ฒ„๋ฆฐ์„ ๋งŒ์ง€์ž‘๊ฑฐ๋ฆฌ์ง€ ์•Š๊ณ ๋„ ์ฆ‰์‹œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋ณธ ์•…๊ธฐ์ž…๋‹ˆ๋‹ค. ๋งŽ์€ ์–‘์˜ ๋ฌธ์„œ, ๊ณต์‹ ์—ฌ๋ถ€, ๋‹จ์ˆœ์„ฑ ๋“ฑ ๊ทธ๋Ÿฌ๋‚˜ ํด๋ž˜์‹ EF์— ๋Œ€ํ•œ ๋ถˆ๋งŒ ์‚ฌํ•ญ์€ EF Core์—๋„ ์ƒ๋‹นํžˆ ๊ด€๋ จ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ EF Core์˜ ์žฅ์ ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • Microsoft ์ง€์›, ๋ฌธ์„œ(๋Ÿฌ์‹œ์•„์–ด ํฌํ•จ), ๋Œ€๊ทœ๋ชจ ์ปค๋ฎค๋‹ˆํ‹ฐ
  • CodeFirst ๊ธฐ๋ฐ˜ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ์ž๋™ ์ƒ์„ฑ
  • EF 6๊ณผ ๋น„๊ตํ•˜์—ฌ EF Core๋Š” ๋” ์ด์ƒ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์Šค๋ƒ…์ƒท์„ ์ €์žฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Code First์—์„œ EF Core๋กœ ์ž‘์—…ํ•  ๋•Œ ๋” ์ด์ƒ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋ฐฐํฌํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.
  • Code First์—์„œ ์ถค์„ ์ถ”๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํ•„์š”ํ•œ ๋ชจ๋“  ๋ฐ์ดํ„ฐ ์•ก์„ธ์Šค ๊ณต๊ธ‰์ž๋กœ ํ•œ ๋ฒˆ์˜ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
  • ๊ณต๊ธ‰์ž์˜ ๊ฒฝ์šฐ PostgreSQL์„ ์ง€์›ํ•˜๊ณ  Oracle์„ ์ง€์›ํ•˜๋ฉฐ MS SQL Server๊นŒ์ง€ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค ๏Š

๊ทธ๋ฆฌ๊ณ  ๋‹จ์ ๋„ ์žˆ์Šต๋‹ˆ๋‹ค:

  • ๊ฐˆ๋“ฑ ํ•ด๊ฒฐ์€ ๋™์ผํ•œ ์ˆ˜์ค€์œผ๋กœ ์œ ์ง€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ์ˆœ์„œ๋ฅผ ์ง€์ •ํ•˜๊ณ  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์Šค๋ƒ…์ƒท์„ ์—…๋ฐ์ดํŠธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์ด ์ƒ์„ฑ๋˜๋Š” ๋ชจ๋ธ์— ๋Œ€ํ•œ ์ข…์†์„ฑ

DbUp

๋ฐ์ดํ„ฐ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ์‹œ์Šคํ…œ ๋น„๊ต ๋ฐ โ€‹โ€‹์„ ํƒ
dbup.github.io

DbUp์€ NuGet์— ์˜ํ•ด ์„ค์น˜๋˜๊ณ  ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ SQL Server์— ํ‘ธ์‹œํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜๋Š” .NET ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค. ์ด๋ฏธ ์‹คํ–‰๋œ ๋ณ€๊ฒฝ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ถ”์ ํ•˜๊ณ  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—…๋ฐ์ดํŠธ์— ํ•„์š”ํ•œ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ASP.NET์˜ ์˜คํ”ˆ ์†Œ์Šค ๋ธ”๋กœ๊ทธ ์—”์ง„ ํ”„๋กœ์ ํŠธ์—์„œ ์„ฑ์žฅํ–ˆ์œผ๋ฉฐ MIT ๋ผ์ด์„ ์Šค์— ๋”ฐ๋ผ ์กด์žฌํ•˜๋ฉฐ ์ฝ”๋“œ๋Š” GitHub์— ์žˆ์Šต๋‹ˆ๋‹ค. ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์€ T-SQL์„ ์‚ฌ์šฉํ•˜์—ฌ ์„ค๋ช…๋ฉ๋‹ˆ๋‹ค.

์žฅ์ ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

  • ๋‹ค์ˆ˜์˜ DBMS ์ง€์›(MS SQL Server, PstgreSQL, MySQL)
  • ์Šคํฌ๋ฆฝํŠธ๋Š” T-SQL๋กœ ์ž‘์„ฑ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋งค์šฐ ๋‹จ์ˆœํ•ด ๋ณด์ž…๋‹ˆ๋‹ค.
  • SQL์„ ์‚ฌ์šฉํ•˜์—ฌ ์ถฉ๋Œ๋„ ํ•ด๊ฒฐ๋ฉ๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋‹จ์ :

  • ์ง€์›๋˜๋Š” DBMS๊ฐ€ ๋‹ค์–‘ํ•˜๊ธฐ ๋•Œ๋ฌธ์— Oracle์€ ๊ทธ์ค‘ ํ•˜๋‚˜๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.
  • ORM๊ณผ ์ƒํ˜ธ ์ž‘์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • T-SQL ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ง์ ‘ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์€ ์šฐ๋ฆฌ๊ฐ€ ๋ชฉํ‘œ๋กœ ํ–ˆ๋˜ ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค.
  • ๋ฌธ์„œ์™€ ์ปค๋ฎค๋‹ˆํ‹ฐ๋Š” ๊ทธ์ € ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค. ๋น„๋ก SQL ์Šคํฌ๋ฆฝํŠธ ์ž‘์„ฑ ์ธก๋ฉด์—์„œ๋Š” ํ•„์š”ํ•˜์ง€ ์•Š์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ผ์šด๋“œํ•˜์šฐ์ŠคE

๋ฐ์ดํ„ฐ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ์‹œ์Šคํ…œ ๋น„๊ต ๋ฐ โ€‹โ€‹์„ ํƒ
github.com/chucknorris/roundhouse

์ด์ „ ๋„๊ตฌ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ Apache 2.0 ๋ผ์ด์„ ์Šค์— ๋”ฐ๋ผ ๋ฐฐํฌ๋˜๋Š” ์ด ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๊ด€๋ฆฌ ๋„๊ตฌ๋Š” T-SQL ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ์—”์ง„์—์„œ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ์•„๋ฌด๋ž˜๋„ ๊ฐœ๋ฐœ์ž๋“ค์€ ํŽธ์•ˆํ•œ ๊ฐœ๋ฐœ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋งŒ๋“ค๊ธฐ๋ณด๋‹ค๋Š” DBMS ์ง€์›๊ณผ ๊ด€๋ จ๋œ ๊ธฐ์ˆ ์  ๋ฌธ์ œ ํ•ด๊ฒฐ์„ ์šฐ์„ ์‹œํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์žฅ์  :

  • ํ•„์š”ํ•œ DBMS ์ง€์›(Oracle ํฌํ•จ)

๋‹จ์  :

  • Oracle(์šฐ๋ฆฌ์™€ ๊ด€๋ จ ์—†๋Š” Access๋Š” ๋ฌผ๋ก )์€ .NET Core์—์„œ ์ง€์›๋˜์ง€ ์•Š๊ณ  .NET Full Framework์—์„œ๋งŒ ์ง€์›๋ฉ๋‹ˆ๋‹ค.
  • ORM์—์„œ๋Š” ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค
  • ์ด์ „ ๋„๊ตฌ๋ณด๋‹ค ๋ฌธ์„œ๊ฐ€ ํ›จ์”ฌ ์ ์Šต๋‹ˆ๋‹ค.
  • ๋‹ค์‹œ ๋งํ•˜์ง€๋งŒ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์€ ์Šคํฌ๋ฆฝํŠธ๋กœ ์ž‘์„ฑ๋ฉ๋‹ˆ๋‹ค.

ThinkingHome.Migrator

๋ฐ์ดํ„ฐ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ์‹œ์Šคํ…œ ๋น„๊ต ๋ฐ โ€‹โ€‹์„ ํƒ

MIT ๋ผ์ด์„ ์Šค์— ๋”ฐ๋ผ ๋ฐฐํฌ๋˜๋Š” .NET Core ํ”Œ๋žซํผ์œผ๋กœ ๋ฒ„์ „์ด ์ง€์ •๋œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์Šคํ‚ค๋งˆ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ์œ„ํ•œ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์ž๋Š” ๊ฑฐ์˜ XNUMX๋…„ ์ „์— ์ตœ์‹  ๋ฒ„์ „์— ๋Œ€ํ•ด ์ง์ ‘ ์ผ์Šต๋‹ˆ๋‹ค..

์žฅ์  :

  • .NET Core์šฉ์œผ๋กœ ์„ค๊ณ„๋จ
  • ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์˜ ๋ถ„๊ธฐ ์ˆœ์„œ๋ฅผ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๋กœ๊น… ๊ตฌํ˜„

๋‹จ์  :

  • XNUMX๋…„ ์ „์— ๋งˆ์ง€๋ง‰์œผ๋กœ ์—…๋ฐ์ดํŠธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ถ„๋ช…ํžˆ ํ”„๋กœ์ ํŠธ๊ฐ€ ์ง€์›๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค
  • Oracle์—์„œ๋Š” ์ง€์›๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค(๋ฌธ์„œ์—๋Š” .NET Core์— ๋Œ€ํ•œ ์•ˆ์ •์ ์ธ ๊ตฌํ˜„์ด ๋ถ€์กฑํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋ผ๊ณ  ๋ช…์‹œ๋˜์–ด ์žˆ์ง€๋งŒ ์ด๋Š” XNUMX๋…„ ์ „์ž…๋‹ˆ๋‹ค).
  • ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ์ž๋™ ์ƒ์„ฑ ์—†์Œ

์ „๋ฐ˜์ ์œผ๋กœ ์ด ํ”„๋กœ์ ํŠธ๋Š” ํŠนํžˆ ๊ฐœ๋ฐœ์˜ ๊ฒฝ์šฐ ์œ ๋งํ•ด ๋ณด์ด์ง€๋งŒ ์šฐ๋ฆฌ๋Š” ์ง€๊ธˆ ์—ฌ๊ธฐ์„œ ๊ฒฐ์ •์„ ๋‚ด๋ ค์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค.

์œ ์ฐฝํ•œ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜

๋ฐ์ดํ„ฐ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ์‹œ์Šคํ…œ ๋น„๊ต ๋ฐ โ€‹โ€‹์„ ํƒ
github.com/fluentmigrator/fluentmigrator

๋งŽ์€ ํŒฌ์„ ๋ณด์œ ํ•˜๊ณ  ์žˆ๋Š” ๊ฐ€์žฅ ์ธ๊ธฐ ์žˆ๋Š” ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. Apache 2.0 ๋ผ์ด์„ผ์Šค์— ๋”ฐ๋ผ ๋ฐฐํฌ๋ฉ๋‹ˆ๋‹ค. ์„ค๋ช…์— ๋ช…์‹œ๋œ ๋Œ€๋กœ ์ด๋Š” Ruby on Rails ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜๊ณผ ์œ ์‚ฌํ•œ .NET์šฉ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ํ”„๋ ˆ์ž„์›Œํฌ์ž…๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์Šคํ‚ค๋งˆ์— ๋Œ€ํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์€ C# ํด๋ž˜์Šค์— ์„ค๋ช…๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์—๋Š” ์žฅ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  • ํ•„์ˆ˜ DBMS ์ง€์›
  • .NET ์ฝ”์–ด ์ง€์›
  • ๋Œ€๊ทœ๋ชจ ๊ฐœ๋ฐœ ์ปค๋ฎค๋‹ˆํ‹ฐ
  • ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๊ฐ„์˜ ์ถฉ๋Œ์€ ์ˆœ์ฐจ์ ์œผ๋กœ ํ•ด๊ฒฐ๋ฉ๋‹ˆ๋‹ค. ์ฆ‰, ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ์‹คํ–‰ ์ˆœ์„œ๊ฐ€ ์ง€์ •๋ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ, ํ•˜๋‚˜์˜ ์—”ํ„ฐํ‹ฐ ์ฃผ์œ„์— ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•˜๋ฉด ์ฝ”๋“œ๋ฅผ ๋ณ‘ํ•ฉํ•  ๋•Œ ๋‚˜๋จธ์ง€ ์ฝ”๋“œ์™€ ๋™์ผํ•œ ๋ฐฉ์‹์œผ๋กœ ํ•ด๊ฒฐ๋ฉ๋‹ˆ๋‹ค.
  • ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์ด ์„ฑ๊ณตํ•œ ํ›„์— ์‹คํ–‰๋˜๋Š” ํ”„๋กœํ•„์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์„œ๋น„์Šค ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋งˆ์ง€๋ง‰ ์—…๋ฐ์ดํŠธ๋Š” ํ•œ ๋‹ฌ ์ „์ด์—ˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ํ”„๋กœ์ ํŠธ๊ฐ€ ์‚ด์•„์žˆ์Šต๋‹ˆ๋‹ค.

๋‹จ์ ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ์ž๋™ ์ƒ์„ฑ ์—†์Œ
  • EF ๋ชจ๋ธ๊ณผ ์—ฐ๊ฒฐ๋˜์ง€ ์•Š์Œ
  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์Šค๋ƒ…์ƒท ์—†์Œ

์šฐ๋ฆฌ์˜ ์„ ํƒ์€ ๋ฌด์—‡์ด์—ˆ๋‚˜์š”?

๋ฐ์ดํ„ฐ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ์‹œ์Šคํ…œ ๋น„๊ต ๋ฐ โ€‹โ€‹์„ ํƒ

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

์กฐ์‚ฌ ๊ฒฐ๊ณผ

๋ฌผ๋ก  ์™„๋ฒฝํ•œ ๋„๊ตฌ๋Š” ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์šฐ๋ฆฌ๋Š” ์„ ํƒ์„ ํ•˜๊ธฐ ์œ„ํ•ด '์›ํ•˜๋Š” ๊ฒƒ'์˜ ์šฐ์„ ์ˆœ์œ„๋ฅผ ์ •ํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‹ค๋ฅธ ํŒ€ ๋ฐ ๊ธฐํƒ€ ์ž‘์—…์˜ ๊ฒฝ์šฐ ๋‹ค๋ฅธ ์š”์†Œ๊ฐ€ ๊ฒฐ์ •์ ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ธฐ์‚ฌ๊ฐ€ ๊ท€ํ•˜์˜ ์„ ํƒ์— ๋„์›€์ด ๋˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€