trino_base

Trino

  • 2012๋…„ Martin Traverso , David Phillips, Dain Sundstrom ๋ฐ Eric Hwang์€ Facebook ๋ฐFacebook์ด ๋ถ„์„ํ•˜๋ ค๊ณ  ํ–ˆ๋˜ ์ˆ˜๋ฐฑ ํŽ˜ํƒ€๋ฐ”์ดํŠธ๋ฅผ ๋” ์ž˜ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด Apache Hive๋ฅผ ๋Œ€์ฒดํ•  Presto๋ฅผ ๊ฐœ๋ฐœํ•˜์˜€์Šต๋‹ˆ๋‹ค.

    • Presto์˜ ์›๋ž˜ ์ œ์ž‘์ž๋Š” Presto ์˜คํ”ˆ ์†Œ์Šค๋ฅผ ์œ ์ง€ํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ•˜๊ณ  Presto ์˜คํ”ˆ ์†Œ์Šค ์ปค๋ฎค๋‹ˆํ‹ฐ ๊ตฌ์ถ•์„ ํ’€ํƒ€์ž„์œผ๋กœ ์ถ”๊ตฌํ–ˆ์Šต๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ์ด๋ฆ„์ธ PrestoSQL๋กœ ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜์˜€๊ณ  Facebook์€ Prestoยฎ์— ์ƒํ‘œ๋ฅผ ์‹ ์ฒญํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋กœ ์ธํ•ด ๊ฒฐ๊ตญ Presto๋ฅผ ๊ฐœ๋ฐœํ•œ ์›๋ž˜ ๊ทธ๋ฃน์ด ๋ธŒ๋žœ๋“œ๋ฅผ ๋ณ€๊ฒฝํ•ด์•ผ ํ•˜๋Š” ์†Œ์†ก ๋ฐ ๊ธฐํƒ€ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ PrestoSQL์€ Trino๋กœ ๋ฆฌ๋ธŒ๋žœ๋”ฉํ–ˆ์Šต๋‹ˆ๋‹ค.

  • Trino๋Š” SQL ์—”์ง„, ์—ฌ๋Ÿฌ ์œ ํ˜•์˜ ๋ฐ์ดํ„ฐ ์†Œ์Šค์— ๋Œ€ํ•œ ์ž„์‹œ ๋ฐ ๋ฐฐ์น˜ ETL ์ฟผ๋ฆฌ๋ฅผ ์œ„ํ•œ ์˜คํ”ˆ ์†Œ์Šค ๋ถ„์‚ฐ SQL ์ฟผ๋ฆฌ ์—”์ง„์ž…๋‹ˆ๋‹ค.

  • Trino๋Š” ๊ธฐ๊ฐ€๋ฐ”์ดํŠธ์—์„œ ํŽ˜ํƒ€๋ฐ”์ดํŠธ์— ์ด๋ฅด๋Š” ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ ์†Œ์Šค์— ๋Œ€ํ•ด ๋น ๋ฅธ ๋ถ„์„ ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ์˜คํ”ˆ ์†Œ์Šค ๋ถ„์‚ฐ SQL ์—”์ง„์ž…๋‹ˆ๋‹ค.

  • Trino๋Š” ํ•˜๋‚˜ ์ด์ƒ์˜ ์ด๊ธฐ์ข… ๋ฐ์ดํ„ฐ ์†Œ์Šค์— ๋ถ„์‚ฐ๋œ ๋Œ€๊ทœ๋ชจ ๋ฐ์ดํ„ฐ ์„ธํŠธ๋ฅผ ์ฟผ๋ฆฌํ•˜๋„๋ก ์„ค๊ณ„๋œ ๋ถ„์‚ฐ SQL ์ฟผ๋ฆฌ ์—”์ง„์ž…๋‹ˆ๋‹ค.

  • Trino๋Š” ๋Œ€ํ™”ํ˜• ๋ถ„์„์„ ์œ„ํ•ด ์ฒ˜์Œ๋ถ€ํ„ฐ ์„ค๊ณ„ ๋ฐ ์ œ์ž‘๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋งค์šฐ ํฐ ์กฐ์ง์˜ ๊ทœ๋ชจ๋กœ ํ™•์žฅํ•˜๋ฉด์„œ ์ƒ์šฉ ๋ฐ์ดํ„ฐ ์›จ์–ดํ•˜์šฐ์Šค์˜ ์†๋„์— ์ ‘๊ทผํ•ฉ๋‹ˆ๋‹ค.

  • JSON, ๋ฐฐ์—ด ๋ฐ ๋งต๊ณผ ๊ฐ™์€ ํ‘œ์ค€ ๋ฐ ๋ฐ˜๊ตฌ์กฐํ™”๋œ ๋ฐ์ดํ„ฐ ์œ ํ˜•์˜ ์ „์ฒด ํ˜ธ์ŠคํŠธ๋ฅผ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋™์ž‘

  • Trino๋Š” ๋Œ€๊ทœ๋ชจ ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ(MPP) ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ์œ ์‚ฌํ•œ ์•„ํ‚คํ…์ฒ˜๋ฅผ ํ™œ์šฉํ•˜๋Š” ๋ถ„์‚ฐ ์‹œ์Šคํ…œ

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

  • ๋ถ„์„๊ฐ€ ๋˜๋Š” ์ผ๋ฐ˜ ์‚ฌ์šฉ์ž๋Š” ์ฝ”๋””๋„ค์ดํ„ฐ์—๊ฒŒ ํ‘ธ์‹œ๋˜๋Š” SQL์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ์ฝ”๋””๋„ค์ดํ„ฐ๋Š” ๋ถ„์‚ฐ ์ฟผ๋ฆฌ๋ฅผ ๊ตฌ๋ฌธ ๋ถ„์„, ๊ณ„ํš ๋ฐ ์˜ˆ์•ฝํ•ฉ๋‹ˆ๋‹ค.

  • ํ‘œ์ค€ ANSI SQL ์„ ์ง€์›ํ•˜๊ณ  ์‚ฌ์šฉ์ž๊ฐ€ JSON ๋ฐ MAP ๋ณ€ํ™˜ ๋ฐ ๊ตฌ๋ฌธ ๋ถ„์„๊ณผ ๊ฐ™์€ ๋ณด๋‹ค ๋ณต์žกํ•œ ๋ณ€ํ™˜์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์ฟผ๋ฆฌ ์ƒํƒœ

    • BLOCKEDโ€“ ์ฟผ๋ฆฌ๊ฐ€ ์ฐจ๋‹จ๋˜๊ณ  ๋ฆฌ์†Œ์Šค(๋ฒ„ํผ ๊ณต๊ฐ„, ๋ฉ”๋ชจ๋ฆฌ, ๋ถ„ํ•  ๋“ฑ)๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.(์ƒํƒœ BLOCKED๋Š” ์ •์ƒ์ด์ง€๋งŒ ์ง€์†์ ์ด๋ผ๋ฉด ์กฐ์‚ฌ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.)

    • ๋ฉ”๋ชจ๋ฆฌ ๋ถ€์กฑ ๋˜๋Š” ๋ถ„ํ• , ๋””์Šคํฌ ๋˜๋Š” ๋„คํŠธ์›Œํฌ I/O ๋ณ‘๋ชฉ ํ˜„์ƒ, ๋ฐ์ดํ„ฐ ์™œ๊ณก(๋ชจ๋“  ๋ฐ์ดํ„ฐ๊ฐ€ ์†Œ์ˆ˜์˜ ์ž‘์—…์ž์—๊ฒŒ ์ „๋‹ฌ๋จ), ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ ๋ถ€์กฑ(๋ช‡ ๋ช…์˜ ์ž‘์—…์ž๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅ) ๋˜๋Š” ์ง€์ •๋œ ๋‹จ๊ณ„๋ฅผ ๋”ฐ๋ฅด๋Š” ์ฟผ๋ฆฌ์˜ ๊ณ„์‚ฐ ๋น„์šฉ์ด ๋งŽ์ด ๋“œ๋Š” ๋‹จ๊ณ„ ๋“ฑ ๋งŽ์€ ์ž ์žฌ์  ์›์ธ์ด ์žˆ์Šต๋‹ˆ๋‹ค

ํŠธ๋ฆฌ๋…ธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ 

  • ๋…๋ฆฝ์ ์ธ ๋ฐ์ดํ„ฐ ์†Œ์Šค ์—ฐ๊ฒฐ

    • ๋ฐ์ดํ„ฐ๋ฅผ ์ฟผ๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•๊ณผ ๊ด€๋ จํ•˜์—ฌ ๋งŽ์€ ์˜ต์…˜์ด ์žˆ์Šต๋‹ˆ๋‹ค.(Athena, Hive ๋ฐ Apache Drill๊ณผ ๊ฐ™์€ ๋„๊ตฌ๊ฐ€ ์žˆ์Œ)

    • Trino์˜ ๊ฐ€์žฅ ํฐ ์žฅ์ ์€ ๋ฐ”๋กœ SQL ์—”์ง„์ด๋ผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ฆ‰, MySQL, HDFS ๋ฐ SQL Server์™€ ๊ฐ™์€ ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ ์†Œ์Šค ์œ„์— ๋ถˆ๊ฐ€์ง€๋ก ์ ์œผ๋กœ ์œ„์น˜

  • ํด๋ผ์šฐ๋“œ ์ค‘์‹ฌ

    • ์Šคํ† ๋ฆฌ์ง€์™€ ์ปดํ“จํŒ…์„ ๋ณ„๋„๋กœ ์‹คํ–‰ํ•˜๋Š” Presto์˜ ๊ธฐ๋ณธ ์„ค๊ณ„๋Š” ํด๋ผ์šฐ๋“œ ํ™˜๊ฒฝ์—์„œ ์šด์˜ํ•˜๋Š” ๋ฐ ๋งค์šฐ ํŽธ๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

    • Presto ํด๋Ÿฌ์Šคํ„ฐ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ์ดํ„ฐ ์†์‹ค ์—†์ด ๋กœ๋“œ์— ๋”ฐ๋ผ ์ž๋™ ํ™•์žฅ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์•„ํ‚คํ…์ฒ˜

  • image

  • ์•„ํ‚คํ…์ฒ˜

    • ํด๋Ÿฌ์Šคํ„ฐ: Trino ํด๋Ÿฌ์Šคํ„ฐ๋Š” ์ฝ”๋””๋„ค์ดํ„ฐ์™€ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์›Œ์ปค๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค. ์ฝ”๋””๋„ค์ดํ„ฐ๋Š” ์ฟผ๋ฆฌ ์‹คํ–‰์„ ๊ด€๋ฆฌํ•˜๊ณ , ์›Œ์ปค๋Š” ์นดํƒˆ๋กœ๊ทธ์— ๊ตฌ์„ฑ๋œ ๋ฐ์ดํ„ฐ ์†Œ์Šค์— ์•ก์„ธ์Šคํ•˜๊ณ  ๊ฐ ์ฟผ๋ฆฌ๋ฅผ ๋ณ‘๋ ฌ๋กœ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

    • ์ฝ”๋””๋„ค์ดํ„ฐ: ์ฝ”๋””๋„ค์ดํ„ฐ๋Š” SQL ๋ฌธ์„ ํŒŒ์‹ฑํ•˜๊ณ  ์ฟผ๋ฆฌ๋ฅผ ๊ณ„ํšํ•˜๋ฉฐ Trino ์›Œ์ปค ๋…ธ๋“œ๋ฅผ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์ฟผ๋ฆฌ์˜ ๋…ผ๋ฆฌ์  ๋ฐ ๋ฌผ๋ฆฌ์ ์ธ ๊ณ„ํš์„ ์ƒ์„ฑํ•˜๋ฉฐ Trino ์›Œ์ปค ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ์‹คํ–‰๋˜๋Š” ์ผ๋ จ์˜ ๋‹จ๊ณ„์™€ ์ž‘์—…์œผ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.

    • ์›Œ์ปค: Trino ์›Œ์ปค๋Š” ์ž‘์—…์„ ์‹คํ–‰ํ•˜๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋ฉฐ, ์ปค๋„ฅํ„ฐ๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๊ณ  ๋‹ค๋ฅธ ์›Œ์ปค์™€ ์ค‘๊ฐ„ ๋ฐ์ดํ„ฐ๋ฅผ ๊ตํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์ฝ”๋””๋„ค์ดํ„ฐ๋Š” ์›Œ์ปค๋กœ๋ถ€ํ„ฐ ๊ฒฐ๊ณผ๋ฅผ ์ˆ˜์ง‘ํ•˜์—ฌ ์ตœ์ข… ๊ฒฐ๊ณผ๋ฅผ ํด๋ผ์ด์–ธํŠธ์— ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

      • ์™ธ๋ถ€ ์ €์žฅ์†Œ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๊ณ  SQL ์—ฐ์‚ฐ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋ฉฐ, ๋‹ค๋ฅธ Trino ์›Œ์ปค์™€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ตํ™˜ํ•˜๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ์ง‘๊ณ„ํ•˜์—ฌ ์ตœ์ข… ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ์—ญํ• ์„ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค.

      • ์ปดํ“จํŒ… ํŒŒ์›Œ๋ฅผ ์ œ๊ณตํ•˜๋ฉฐ, Trino ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์œ„ํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ๋กœ๋“œํ•˜๋Š” ์—ญํ• ์„ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ, ๊ฐ ์›Œ์ปค์— ๋” ๋งŽ๊ณ  ๊ฐ•๋ ฅํ•œ CPU๋ฅผ ์žฅ์ฐฉํ•˜๋ฉด ์ฟผ๋ฆฌ๋ฅผ ๋น ๋ฅด๊ฒŒ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

      • Trino๋Š” ์ค‘๊ฐ„ ์—ฐ์‚ฐ ๊ฒฐ๊ณผ๋ฅผ ๋””์Šคํฌ ๋Œ€์‹  ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ์ผ์ƒ์ ์ธ ์šด์˜๊ณผ ์œ ์ง€๋ณด์ˆ˜์—์„œ๋Š” ๋ชจ๋“  ์›Œ์ปค์˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋ถ„์‚ฐ ๋ฉ”๋ชจ๋ฆฌ ์ž์› ํ’€๋กœ ๊ฐ„์ฃผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฟผ๋ฆฌ์˜ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์ด ์ด ๋ฉ”๋ชจ๋ฆฌ ํ’€์„ ์ดˆ๊ณผํ•˜๋ฉด ์ฟผ๋ฆฌ๊ฐ€ ์‹คํŒจํ•˜๊ฑฐ๋‚˜ ๋ฌด๊ธฐํ•œ์œผ๋กœ ์ฐจ๋‹จ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

    • ์นดํƒˆ๋กœ๊ทธ: Trino๋Š” ๊ฐ ๋ฐ์ดํ„ฐ ์†Œ์Šค๋ฅผ ์นดํƒˆ๋กœ๊ทธ๋กœ ๊ตฌ์„ฑํ•˜์—ฌ ๋ฐ์ดํ„ฐ์— ์•ก์„ธ์Šคํ•ฉ๋‹ˆ๋‹ค. SQL ์กฐ์ธ์„ ์‚ฌ์šฉํ•˜์—ฌ ํ•˜๋‚˜์˜ ์ฟผ๋ฆฌ ๋‚ด์—์„œ ์—ฌ๋Ÿฌ ์นดํƒˆ๋กœ๊ทธ๋ฅผ ์ฟผ๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์นดํƒˆ๋กœ๊ทธ๋Š” Trino ๊ตฌ์„ฑ ๋””๋ ‰ํ† ๋ฆฌ์— ์ €์žฅ๋œ ์†์„ฑ ํŒŒ์ผ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.

  • ์—ฌ๋Ÿฌ ์ž‘์—…์ž ๋…ธ๋“œ์™€ ๋™๊ธฐํ™”๋˜์–ด ์ž‘๋™ํ•˜๋Š” ํ•˜๋‚˜์˜ ์ฝ”๋””๋„ค์ดํ„ฐ ๋…ธ๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์‚ฌ์šฉ์ž๋Š” ์‚ฌ์šฉ์ž ์ง€์ • ์ฟผ๋ฆฌ ๋ฐ ์‹คํ–‰ ์—”์ง„์„ ์‚ฌ์šฉํ•˜์—ฌ ์ž‘์—…์ž ๋…ธ๋“œ์—์„œ ๋ถ„์‚ฐ ์ฟผ๋ฆฌ ๊ณ„ํš์„ ๊ตฌ๋ฌธ ๋ถ„์„, ๊ณ„ํš ๋ฐ ์˜ˆ์•ฝํ•˜๋Š” ์ฝ”๋””๋„ค์ดํ„ฐ์— SQL ์ฟผ๋ฆฌ๋ฅผ ์ œ์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • Presto๋Š” ๋ณต์žกํ•œ ์ฟผ๋ฆฌ, ์ง‘๊ณ„, ์กฐ์ธ, ์™ผ์ชฝ/์˜ค๋ฅธ์ชฝ ์™ธ๋ถ€ ์กฐ์ธ, ํ•˜์œ„ ์ฟผ๋ฆฌ, ์ฐฝ ํ•จ์ˆ˜, ๊ฐœ๋ณ„ ์นด์šดํŠธ ๋ฐ ๋Œ€๋žต์ ์ธ ๋ฐฑ๋ถ„์œ„์ˆ˜๋ฅผ ํฌํ•จํ•˜์—ฌ ํ‘œ์ค€ ANSI SQL ์˜๋ฏธ ์ฒด๊ณ„๋ฅผ ์ง€์›ํ•˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

  • ์ฟผ๋ฆฌ๊ฐ€ ์ปดํŒŒ์ผ๋œ ํ›„ Presto๋Š” ์ž‘์—…์ž ๋…ธ๋“œ์—์„œ ์š”์ฒญ์„ ์—ฌ๋Ÿฌ ๋‹จ๊ณ„๋กœ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

  • ๋ถˆํ•„์š”ํ•œ I/O ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด ๋ชจ๋“  ์ฒ˜๋ฆฌ๋Š” ๋ฉ”๋ชจ๋ฆฌ ๋‚ด์—์„œ ์ด๋ฃจ์–ด์ง€๋ฉฐ ๋‹จ๊ณ„ ๊ฐ„์— ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ํŒŒ์ดํ”„๋ผ์ธ๋ฉ๋‹ˆ๋‹ค.

Presto ์ฟผ๋ฆฌ ์—”์ง„ ์‚ฌ์šฉ

  • image

  • Presto๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ชจ๋“  ํฌ๊ธฐ์˜ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด ๋น ๋ฅธ ๋ถ„์„ ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” Presto๊ฐ€ ๋Œ€๊ธฐ ์‹œ๊ฐ„์— ์ตœ์ ํ™”๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

Hive์™€ ๋น„๊ต

  • image

  • hive : ์˜คํ”ˆ ์†Œ์Šค Hadoop ํ”Œ๋žซํผ์—์„œ ๋Œ€๊ทœ๋ชจ ๋ฐ์ดํ„ฐ ์‹œ์Šคํ…œ์„ ์ฟผ๋ฆฌํ•˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. Hive 2019.1์€ SQL๊ณผ ์œ ์‚ฌํ•œ ์ฟผ๋ฆฌ๋ฅผ MapReduce ์ž‘์—…์œผ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ๋Œ€๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์‰ฝ๊ฒŒ ์‹คํ–‰ํ•˜๊ณ  ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. Hive๋Š” ์ฟผ๋ฆฌ ์ฒ˜๋ฆฌ๋Ÿ‰์— ์ตœ์ ํ™”๋˜์–ด ์žˆ์œผ๋ฉฐ ํ’€ ๋ชจ๋ธ๋กœ ์„ค๋ช…๋ฉ๋‹ˆ๋‹ค.

  • presto : HDFS ๋“ฑ์˜ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ๋น ๋ฅธ ๋Œ€ํ™”ํ˜• ์ฟผ๋ฆฌ๋ฅผ ์œ„ํ•ด ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. Presto ๋Š” ๋Œ€๊ธฐ ์‹œ๊ฐ„์— ์ตœ์ ํ™”๋˜์–ด ์žˆ์œผ๋ฉฐ ์ข…์ข… ํ’€ ๋ชจ๋ธ๋กœ ์„ค๋ช…๋ฉ๋‹ˆ๋‹ค.

Spark์™€ ๋น„๊ต

  • Trino๋Š” ์• ๋“œํ˜น SQL ๋ถ„์„์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ๋ฐ˜๋ฉด Spark๋Š” ETL/ML ํŒŒ์ดํ”„๋ผ์ธ์šฉ์œผ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค

  • ํ™œ์šฉ

    • Trino: ์ฃผ๋กœ OLAP(Online Analytical Processing) ์ž‘์—…์— ์‚ฌ์šฉ๋˜๋ฉฐ ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ์…‹์— ๋Œ€ํ•œ ๋น ๋ฅธ SQL ์งˆ์˜๋ฅผ ์ œ๊ณตํ•˜๋Š” ๋ฐ ์ตœ์ ํ™”๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

    • Spark: OLAP๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ETL ์ž‘์—…, ์ŠคํŠธ๋ฆฌ๋ฐ ์ฒ˜๋ฆฌ, ๊ทธ๋ž˜ํ”„ ์ฒ˜๋ฆฌ ๋ฐ ๋จธ์‹ ๋Ÿฌ๋‹ ๋“ฑ์˜ ๋‹ค์–‘ํ•œ ์ž‘์—…์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

  • ์ปค๋„ฅํ„ฐ

    • Trino: ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ ์†Œ์Šค (RDBMS, NoSQL, HDFS, S3 ๋“ฑ)์— ๋Œ€ํ•œ ์ปค๋„ฅํ„ฐ๋ฅผ ์ œ๊ณตํ•˜์—ฌ ์‚ฌ์šฉ์ž๊ฐ€ ํ•˜๋‚˜์˜ SQL ์ฟผ๋ฆฌ๋กœ ์—ฌ๋Ÿฌ ๋ฐ์ดํ„ฐ ์†Œ์Šค์— ์งˆ์˜ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.

    • Spark: Spark๋„ ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ ์†Œ์Šค๋ฅผ ์ง€์›ํ•˜์ง€๋งŒ, Trino๋งŒํผ ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ์— ๋Œ€ํ•œ ์ปค๋„ฅํ„ฐ๋ฅผ ๊ฐ–์ถ”์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค.

  • ๋‚ด๊ฒฐํ•จ์„ฑ

    • Trino: ๋Œ€๋ถ€๋ถ„์˜ SQL ์ฟผ๋ฆฌ๋ฅผ ๋Œ€ํ™”์‹์œผ๋กœ ์‹คํ–‰ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์†๋„๊ฐ€ ์ค‘์š”ํ•˜๋ฉฐ ์ž‘์—…์ž ๋…ธ๋“œ ์ค‘ ํ•˜๋‚˜์— ์žฅ์• (์˜ˆ: ์ข…๋ฃŒ)๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์ง„ํ–‰ ์ค‘์ธ ์ฟผ๋ฆฌ๊ฐ€ ์ค‘๋‹จ๋˜๊ณ  ๋‹ค์‹œ ์‹œ์ž‘ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    • Spark: ๋Œ€๋ถ€๋ถ„์˜ ์ฟผ๋ฆฌ๊ฐ€ ์‹คํŒจํ•˜์ง€ ์•Š์Œ์—๋„ ๊ฒฐํ•จ ํ—ˆ์šฉ์„ฑ์„ ์ œ๊ณตํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ๋””์Šคํฌ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋ฉด ์žฅ์•  ๋ฐœ์ƒ ์‹œ ๋ณต๊ตฌ๊ฐ€ ์šฉ์ดํ•˜์ง€๋งŒ, ์ŠคํŒŒํฌ์™€ ๊ฐ™์€ ๋ฉ”๋ชจ๋ฆฌ ๊ธฐ๋ฐ˜ ์‹œ์Šคํ…œ์—์„œ๋Š” ๋ณต๊ตฌ ์ž‘์—…์ด ๋ณต์žกํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ŠคํŒŒํฌ๋Š” ์žฅ์•  ๋ฐœ์ƒ ์‹œ ์ด์ „ ์ž‘์—…์„ ์žฌ์‹คํ–‰ํ•˜์—ฌ ๋ณต๊ตฌ๋ฅผ ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค.

  • ์ฟผ๋ฆฌ ์Šค์ผ€์ค„๋ง

    • Trino: ํ•ญ์ƒ ์‹คํ–‰ ์ค‘์ธ ์ฝ”๋””๋„ค์ดํ„ฐ๋ฅผ ๊ฐ–๊ณ  ์žˆ์–ด ์ฟผ๋ฆฌ์˜ ์Šค์ผ€์ค„๋ง์— ํฐ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

    • Spark: Spark๋Š” ์ง€์—ฐ๋œ ์ ‘๊ทผ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฆฌ์†Œ์Šค๋ฅผ ํ˜‘์ƒํ•˜๊ณ  JAR ํŒŒ์ผ์„ ๋ณต์‚ฌํ•œ ๋‹ค์Œ ์ฒ˜๋ฆฌ๋ฅผ ์‹œ์ž‘ํ•˜๋Š” ๋ฐ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค.

  • ์‹คํ–‰ ๋ชจ๋ธ

    • Trino: ํŒŒ์ดํ”„๋ผ์ธ ์‹คํ–‰ ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•˜์—ฌ ์—ฌ๋Ÿฌ ์ฟผ๋ฆฌ ๊ณ„ํš์˜ ๋ถ€๋ถ„์ด ๋™์‹œ์— ์‹คํ–‰๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    • Spark: ์—ฐ๊ฒฐ๋˜์ง€ ์•Š์€ ๋‹จ๊ณ„๋ฅผ ๊ฐ€์ง€๋ฉฐ ํ•˜๋‚˜์˜ ๋‹จ๊ณ„๊ฐ€ ์ฒ˜๋ฆฌ๋ฅผ ์™„๋ฃŒํ•  ๋•Œ๊นŒ์ง€ ๋‹ค์Œ ๋‹จ๊ณ„๋Š” ์•„๋ฌด ๊ฒƒ๋„ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค(DAG)

Reference

  • https://www.starburst.io/learn/open-source-trino/

  • https://api-docs.treasuredata.com/en/tools/presto/quickstart/

  • https://www.oreilly.com/library/view/trino-the-definitive/9781098107703/ch04.html

Last updated