๊ด€๊ณ„ํ˜• ๊ทธ๋ž˜ํ”„ DBMS EdgeDB 2.0 ์ถœ์‹œ

EdgeDB 2.0 DBMS ๋ฆด๋ฆฌ์Šค๋ฅผ ์†Œ๊ฐœํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฆด๋ฆฌ์Šค๋Š” ๋ณต์žกํ•œ ๊ณ„์ธตํ˜• ๋ฐ์ดํ„ฐ ์ž‘์—…์— ์ตœ์ ํ™”๋œ ๊ด€๊ณ„ํ˜• ๊ทธ๋ž˜ํ”„ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ๊ณผ EdgeQL ์ฟผ๋ฆฌ ์–ธ์–ด๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค. ์ฝ”๋“œ๋Š” Python๊ณผ Rust(ํŒŒ์„œ ๋ฐ ์„ฑ๋Šฅ์— ์ค‘์š”ํ•œ ๋ถ€๋ถ„)๋กœ ์ž‘์„ฑ๋˜์—ˆ์œผ๋ฉฐ Apache 2.0 ๋ผ์ด์„ ์Šค์— ๋”ฐ๋ผ ๋ฐฐํฌ๋ฉ๋‹ˆ๋‹ค. ์ด ํ”„๋กœ์ ํŠธ๋Š” PostgreSQL์˜ ์• ๋“œ์˜จ์œผ๋กœ ๊ฐœ๋ฐœ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” Python, Go, Rust, TypeScript/Javascript์šฉ์œผ๋กœ ์ค€๋น„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. DBMS ๊ด€๋ฆฌ ๋ฐ ๋Œ€ํ™”ํ˜• ์ฟผ๋ฆฌ ์‹คํ–‰(REPL)์„ ์œ„ํ•œ ๋ช…๋ น์ค„ ๋„๊ตฌ๊ฐ€ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.

EdgeDB๋Š” ํ…Œ์ด๋ธ” ๊ธฐ๋ฐ˜ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ ๋Œ€์‹  ๊ฐ์ฒด ์œ ํ˜• ๊ธฐ๋ฐ˜์˜ ์„ ์–ธ์  ์‹œ์Šคํ…œ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์™ธ๋ž˜ ํ‚ค ๋Œ€์‹  ์ฐธ์กฐ์— ์˜ํ•œ ์—ฐ๊ฒฐ์ด ์œ ํ˜• ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ์ •์˜ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค(ํ•œ ๊ฐ์ฒด๊ฐ€ ๋‹ค๋ฅธ ๊ฐ์ฒด์˜ ์†์„ฑ์œผ๋กœ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์Œ).

type Person {ํ•„์ˆ˜ ์†์„ฑ ์ด๋ฆ„ -> str;} type Movie {ํ•„์ˆ˜ ์†์„ฑ ์ œ๋ชฉ -> str; ๋‹ค์ค‘ ๋งํฌ actors -> Person;}

์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ฟผ๋ฆฌ ์ฒ˜๋ฆฌ ์†๋„๋ฅผ ๋†’์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ•๋ ฅํ•œ ์†์„ฑ ์œ ํ˜• ์ง€์ •, ์†์„ฑ ๊ฐ’ ์ œํ•œ, ๊ณ„์‚ฐ ์†์„ฑ ๋ฐ ์ €์žฅ ํ”„๋กœ์‹œ์ €์™€ ๊ฐ™์€ ๊ธฐ๋Šฅ๋„ ์ง€์›๋ฉ๋‹ˆ๋‹ค. ORM์„ ์—ฐ์ƒ์‹œํ‚ค๋Š” EdgeDB ๊ฐ์ฒด ์Šคํ† ๋ฆฌ์ง€ ์ฒด๊ณ„์˜ ๊ธฐ๋Šฅ์—๋Š” ์Šคํ‚ค๋งˆ ํ˜ผํ•ฉ, ๋‹ค์–‘ํ•œ ๊ฐ์ฒด์˜ ์†์„ฑ ์—ฐ๊ฒฐ, ํ†ตํ•ฉ JSON ์ง€์› ๊ธฐ๋Šฅ์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

์Šคํ‚ค๋งˆ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•œ ๋‚ด์žฅ ๋„๊ตฌ๊ฐ€ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. ๋ณ„๋„์˜ esdl ํŒŒ์ผ์— ์ง€์ •๋œ ์Šคํ‚ค๋งˆ๋ฅผ ๋ณ€๊ฒฝํ•œ ํ›„ "edgedb migration create" ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๋ฉด DBMS๊ฐ€ ์Šคํ‚ค๋งˆ์˜ ์ฐจ์ด์ ์„ ๋ถ„์„ํ•˜๊ณ  ๋Œ€ํ™”์‹์œผ๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๊ธฐ ์œ„ํ•œ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ์Šคํ‚ค๋งˆ. ์Šคํ‚ค๋งˆ ๋ณ€๊ฒฝ ๋‚ด์—ญ์ด ์ž๋™์œผ๋กœ ์ถ”์ ๋ฉ๋‹ˆ๋‹ค.

์ฟผ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด GraphQL ์ฟผ๋ฆฌ ์–ธ์–ด์™€ ๊ณ„์ธต์  ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ SQL์„ ์ ์šฉํ•œ ๋…์  EdgeDB ์–ธ์–ด๊ฐ€ ๋ชจ๋‘ ์ง€์›๋ฉ๋‹ˆ๋‹ค. ๋ชฉ๋ก ๋Œ€์‹  ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๊ฐ€ ๊ตฌ์กฐํ™”๋œ ๋ฐฉ์‹์œผ๋กœ ํ˜•์‹ํ™”๋˜๊ณ , ํ•˜์œ„ ์ฟผ๋ฆฌ ๋ฐ JOIN ๋Œ€์‹  ํ•˜๋‚˜์˜ EdgeQL ์ฟผ๋ฆฌ๋ฅผ ๋‹ค๋ฅธ ์ฟผ๋ฆฌ ๋‚ด์˜ ํ‘œํ˜„์‹์œผ๋กœ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํŠธ๋žœ์žญ์…˜๊ณผ ์ฃผ๊ธฐ๊ฐ€ ์ง€์›๋ฉ๋‹ˆ๋‹ค.

์˜ํ™” ์„ ํƒ { ์ œ๋ชฉ, ๋ฐฐ์šฐ: { ์ด๋ฆ„ } } ํ•„ํ„ฐ .์ œ๋ชฉ = "๋งคํŠธ๋ฆญ์Šค" ์˜ํ™” ์‚ฝ์ž… { ์ œ๋ชฉ := "๋งคํŠธ๋ฆญ์Šค ๋ถ€ํ™œ", ๋ฐฐ์šฐ := ( ์ธ๋ฌผ ์„ ํƒ ํ•„ํ„ฐ .์ด๋ฆ„ { 'ํ‚ค์•„๋ˆ„ ๋ฆฌ๋ธŒ์Šค', '์บ๋ฆฌ์•ค ๋ชจ์Šค', '๋กœ๋ Œ์Šค ํ”ผ์‹œ๋ฒˆ' } ) } for number in {0, 1, 2, 3} union ( { ์ˆซ์ž, ์ˆซ์ž + 0.5 } ์„ ํƒ);

์ƒˆ ๋ฒ„์ „์—์„œ:

  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•œ ๋‚ด์žฅ ์›น ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ์ถ”๊ฐ€๋˜์–ด ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๊ณ  ํŽธ์ง‘ํ•˜๊ณ , EdgeQL ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•˜๊ณ , ์‚ฌ์šฉ๋œ ์ €์žฅ ๋ฐฉ์‹์„ ๋ถ„์„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ธํ„ฐํŽ˜์ด์Šค๋Š” "edgedb ui" ๋ช…๋ น์œผ๋กœ ์‹œ์ž‘๋˜๋ฉฐ, ์ดํ›„ localhost์— ์ ‘์†ํ•˜๋ฉด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    ๊ด€๊ณ„ํ˜• ๊ทธ๋ž˜ํ”„ DBMS EdgeDB 2.0 ์ถœ์‹œ
  • "GROUP" ํ‘œํ˜„์‹์ด ๊ตฌํ˜„๋˜์–ด SELECT ์ž‘์—…์˜ ๊ทธ๋ฃนํ™”์™€ ์œ ์‚ฌํ•˜๊ฒŒ ์ž„์˜์˜ EdgeQL ํ‘œํ˜„์‹์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„ํ• ํ•˜๊ณ  ์ง‘๊ณ„ํ•˜๊ณ  ๋ฐ์ดํ„ฐ ๊ทธ๋ฃนํ™”๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๊ฐ์ฒด ์ˆ˜์ค€์—์„œ ์ ‘๊ทผ ์ œ์–ด๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์•ก์„ธ์Šค ๊ทœ์น™์€ ์Šคํ† ๋ฆฌ์ง€ ์Šคํ‚ค๋งˆ ์ˆ˜์ค€์—์„œ ์ •์˜๋˜๋ฉฐ ์„ ํƒ, ์‚ฝ์ž…, ์‚ญ์ œ ๋ฐ ์—…๋ฐ์ดํŠธ ์ž‘์—…์—์„œ ํŠน์ • ๊ฐœ์ฒด ์ง‘ํ•ฉ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ œํ•œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์ž‘์„ฑ์ž๋งŒ ๊ฒŒ์‹œ๋ฌผ์„ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ๋„๋ก ํ—ˆ์šฉํ•˜๋Š” ๊ทœ์น™์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ €์žฅ ์ฒด๊ณ„์—์„œ ์ „์—ญ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž ๋ฐ”์ธ๋”ฉ์„ ์œ„ํ•ด ์ƒˆ๋กœ์šด ์ „์—ญ ๋ณ€์ˆ˜ current_user๊ฐ€ ์ œ์•ˆ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ๊ฐ’ ๋ฒ”์œ„๋ฅผ ์ •์˜ํ•˜๋Š” ์œ ํ˜•์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • Rust ์–ธ์–ด์˜ ๊ณต์‹ ํด๋ผ์ด์–ธํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์ค€๋น„๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • EdgeDB ๋ฐ”์ด๋„ˆ๋ฆฌ ํ”„๋กœํ† ์ฝœ์ด ์•ˆ์ •ํ™”๋˜์–ด ๋‹จ์ผ ๋„คํŠธ์›Œํฌ ์—ฐ๊ฒฐ ๋‚ด์—์„œ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์„œ๋กœ ๋‹ค๋ฅธ ์„ธ์…˜์„ ๋™์‹œ์— ์ฒ˜๋ฆฌํ•˜๊ณ , HTTP๋ฅผ ํ†ตํ•ด ์ „๋‹ฌํ•˜๊ณ , ์ „์—ญ ๋ณ€์ˆ˜์™€ ๋กœ์ปฌ ์ƒํƒœ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์ด ์ œ๊ณต๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ์†Œ์ผ“ ํ™œ์„ฑํ™”์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์„œ๋ฒ„ ํ•ธ๋“ค๋Ÿฌ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ์œ ์ง€ํ•˜์ง€ ์•Š๊ณ  ์—ฐ๊ฒฐ์„ ์„ค์ •ํ•˜๋ ค๊ณ  ํ•  ๋•Œ๋งŒ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(๊ฐœ๋ฐœ์ž ์‹œ์Šคํ…œ์˜ ๋ฆฌ์†Œ์Šค๋ฅผ ์ ˆ์•ฝํ•˜๋Š” ๋ฐ ์œ ์šฉ).

์ถœ์ฒ˜ : opennet.ru

DDoS ๋ณดํ˜ธ, VPS VDS ์„œ๋ฒ„๊ฐ€ ์žˆ๋Š” ์‚ฌ์ดํŠธ๋ฅผ ์œ„ํ•œ ์•ˆ์ •์ ์ธ ํ˜ธ์ŠคํŒ… ๊ตฌ์ž… ๐Ÿ”ฅ DDoS ๊ณต๊ฒฉ ๋ฐฉ์ง€ ๊ธฐ๋Šฅ์ด ํƒ‘์žฌ๋œ ์•ˆ์ •์ ์ธ ์›น์‚ฌ์ดํŠธ ํ˜ธ์ŠคํŒ…, VPS ๋ฐ VDS ์„œ๋ฒ„๋ฅผ ๊ตฌ๋งคํ•˜์„ธ์š” | ProHoster