TimescaleDB 1.7 ์ถœ์‹œ

๊ฒŒ์‹œ ๋จ DBMS ์ถœ์‹œ ํƒ€์ž„์Šค์ผ€์ผDB 1.7, ์‹œ๊ณ„์—ด(์ง€์ •๋œ ๊ฐ„๊ฒฉ์˜ ๋งค๊ฐœ๋ณ€์ˆ˜ ๊ฐ’ ์กฐ๊ฐ, ๋ ˆ์ฝ”๋“œ๋Š” ์‹œ๊ฐ„๊ณผ ์ด ์‹œ๊ฐ„์— ํ•ด๋‹นํ•˜๋Š” ๊ฐ’ ์ง‘ํ•ฉ์„ ํ˜•์„ฑํ•จ) ํ˜•์‹์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ์ฒ˜๋ฆฌํ•˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ํ˜•ํƒœ์˜ ์Šคํ† ๋ฆฌ์ง€๋Š” ๋ชจ๋‹ˆํ„ฐ๋ง ์‹œ์Šคํ…œ, ๊ฑฐ๋ž˜ ํ”Œ๋žซํผ, ์ง€ํ‘œ ๋ฐ ์„ผ์„œ ์ƒํƒœ ์ˆ˜์ง‘ ์‹œ์Šคํ…œ๊ณผ ๊ฐ™์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ตœ์ ์ž…๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ์™€์˜ ํ†ตํ•ฉ์„ ์œ„ํ•œ ๋„๊ตฌ๊ฐ€ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ผ ํŒŒ๋‚˜ ะธ ํ”„๋กœ ๋ฉ”ํ…Œ์šฐ์Šค.

TimescaleDB ํ”„๋กœ์ ํŠธ๋Š” PostgreSQL์˜ ํ™•์žฅ์œผ๋กœ ๊ตฌํ˜„๋˜๋ฉฐ ๋ฐฐํฌ์ž Apache 2.0์— ๋”ฐ๋ผ ๋ผ์ด์„ผ์Šค๊ฐ€ ๋ถ€์—ฌ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ฝ”๋“œ์˜ ์ผ๋ถ€ ๋ณ„๋„์˜ ๋…์  ๋ผ์ด์„ผ์Šค์— ๋”ฐ๋ผ ๊ณ ๊ธ‰ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ ์‹œ๊ฐ„๋Œ€ (TSL)์€ ๋ณ€๊ฒฝ์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š์œผ๋ฉฐ ํƒ€์‚ฌ ์ œํ’ˆ์—์„œ ์ฝ”๋“œ ์‚ฌ์šฉ์„ ๊ธˆ์ง€ํ•˜๊ณ  ํด๋ผ์šฐ๋“œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(Database-as-a-Service)์—์„œ์˜ ๋ฌด๋ฃŒ ์‚ฌ์šฉ์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

TimescaleDB 1.7์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ ์ค‘:

  • DBMS์™€์˜ ํ†ตํ•ฉ ์ง€์› ์ถ”๊ฐ€ PostgreSQL 12. PostgreSQL 9.6.x ๋ฐ 10.x์— ๋Œ€ํ•œ ์ง€์›์€ ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค(Timescale 2.0์€ PostgreSQL 11+๋งŒ ์ง€์›ํ•จ).
  • ์ง€์†์ ์œผ๋กœ ์‹คํ–‰๋˜๋Š” ์ง‘๊ณ„ ํ•จ์ˆ˜(์ง€์†์ ์œผ๋กœ ๋“ค์–ด์˜ค๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ง‘๊ณ„)๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ฟผ๋ฆฌ์˜ ๋™์ž‘์ด ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ฟผ๋ฆฌ๋Š” ์ด์ œ ๊ตฌ์ฒดํ™”๋œ ๋ทฐ์™€ ์•„์ง ๊ตฌ์ฒดํ™”๋˜์ง€ ์•Š์€ ์ƒˆ๋กœ ๋„์ฐฉํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒฐํ•ฉํ•ฉ๋‹ˆ๋‹ค(์ด์ „์—๋Š” ์ด๋ฏธ ๊ตฌ์ฒดํ™”๋œ ๋ฐ์ดํ„ฐ๋งŒ ์ง‘๊ณ„ํ–ˆ์Šต๋‹ˆ๋‹ค). ์ƒˆ๋กœ์šด ๋™์ž‘์€ ์ƒˆ๋กœ ์ƒ์„ฑ๋œ ์—ฐ์† ์ง‘๊ณ„์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. ๊ธฐ์กด ๋ณด๊ธฐ์˜ ๊ฒฝ์šฐ "timescaledb.materialized_only=false" ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” "ALTER VIEW"๋ฅผ ํ†ตํ•ด ์„ค์ •๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฐ์ดํ„ฐ๋ฅผ ์žฌ๊ทธ๋ฃนํ™”ํ•˜๊ณ  ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ๋ฐ์ดํ„ฐ ์ œ๊ฑฐ ์ •์ฑ…์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ธฐ๋Šฅ(ํ˜„์žฌ ๋ฐ์ดํ„ฐ๋งŒ ์ €์žฅํ•˜๊ณ  ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ๋ ˆ์ฝ”๋“œ๋ฅผ ์ž๋™์œผ๋กœ ์‚ญ์ œ, ์ง‘๊ณ„ ๋˜๋Š” ๋ณด๊ด€ํ•  ์ˆ˜ ์žˆ์Œ)์„ ํฌํ•จํ•˜์—ฌ ์ผ๋ถ€ ๊ณ ๊ธ‰ ๋ฐ์ดํ„ฐ ์ˆ˜๋ช…์ฃผ๊ธฐ ๊ด€๋ฆฌ ๋„๊ตฌ๊ฐ€ ์ƒ์šฉ ๋ฒ„์ „์—์„œ ์ปค๋ฎค๋‹ˆํ‹ฐ ๋ฒ„์ „์œผ๋กœ ์ด์ „๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

TimescaleDB DBMS๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ด€๊ณ„ํ˜• DBMS ๊ณ ์œ ์˜ ์‚ฌ์šฉ ์šฉ์ด์„ฑ๊ณผ ์ „๋ฌธ NoSQL ์‹œ์Šคํ…œ ๊ณ ์œ ์˜ ํ™•์žฅ์„ฑ ๋ฐ ๊ธฐ๋Šฅ์„ ๊ฒฐํ•ฉํ•˜์—ฌ ๋ณธ๊ฒฉ์ ์ธ SQL ์ฟผ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ถ•์ ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„์„ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์„ ๊ธฐ์–ตํ•ด ๋ณด์‹ญ์‹œ์˜ค. ๋น ๋ฅธ ๋ฐ์ดํ„ฐ ์ถ”๊ฐ€ ์†๋„๋ฅผ ๋ณด์žฅํ•˜๋„๋ก ์Šคํ† ๋ฆฌ์ง€ ๊ตฌ์กฐ๊ฐ€ ์ตœ์ ํ™”๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ์„ธํŠธ์˜ ์ผ๊ด„ ์ถ”๊ฐ€, ๋ฉ”๋ชจ๋ฆฌ ๋‚ด ์ธ๋ฑ์Šค ์‚ฌ์šฉ, ๊ธฐ๋ก ์กฐ๊ฐ์˜ ์†Œ๊ธ‰ ๋กœ๋“œ ๋ฐ ํŠธ๋žœ์žญ์…˜ ์‚ฌ์šฉ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

TimescaleDB์˜ ์ฃผ์š” ๊ธฐ๋Šฅ์€ ๋ฐ์ดํ„ฐ ๋ฐฐ์—ด์˜ ์ž๋™ ํŒŒํ‹ฐ์…”๋‹์„ ์ง€์›ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ž…๋ ฅ ๋ฐ์ดํ„ฐ ์ŠคํŠธ๋ฆผ์€ ๋ถ„ํ• ๋œ ํ…Œ์ด๋ธ” ์ „์ฒด์— ์ž๋™์œผ๋กœ ๋ถ„์‚ฐ๋ฉ๋‹ˆ๋‹ค. ์„น์…˜์€ ์‹œ๊ฐ„(๊ฐ ์„น์…˜์€ ํŠน์ • ๊ธฐ๊ฐ„ ๋™์•ˆ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•จ)์— ๋”ฐ๋ผ ์ƒ์„ฑ๋˜๊ฑฐ๋‚˜ ์ž„์˜์˜ ํ‚ค(์˜ˆ: ์žฅ์น˜ ID, ์œ„์น˜ ๋“ฑ)์™€ ๊ด€๋ จํ•˜์—ฌ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ์„ฑ๋Šฅ์„ ์ตœ์ ํ™”ํ•˜๊ธฐ ์œ„ํ•ด ํŒŒํ‹ฐ์…˜์„ ๋‚˜๋ˆˆ ํ…Œ์ด๋ธ”์„ ์—ฌ๋Ÿฌ ๋””์Šคํฌ์— ๋ถ„์‚ฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฟผ๋ฆฌ์˜ ๊ฒฝ์šฐ ๋ถ„ํ• ๋œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ํ•˜์ดํผํ…Œ์ด๋ธ”์ด๋ผ๋Š” ํ•˜๋‚˜์˜ ํฐ ํ…Œ์ด๋ธ”์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค. ํ•˜์ดํผํ…Œ์ด๋ธ”์€ ๋“ค์–ด์˜ค๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ถ•์ ํ•˜๋Š” ๋งŽ์€ ๊ฐœ๋ณ„ ํ…Œ์ด๋ธ”์„ ๊ฐ€์ƒ์œผ๋กœ ํ‘œํ˜„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ•˜์ดํผํ…Œ์ด๋ธ”์€ ์ฟผ๋ฆฌ ๋ฐ ๋ฐ์ดํ„ฐ ์ถ”๊ฐ€๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ธ๋ฑ์Šค ์ƒ์„ฑ ๋ฐ ๊ตฌ์กฐ ๋ณ€๊ฒฝ(โ€œALTER TABLEโ€)๊ณผ ๊ฐ™์€ ์ž‘์—…์—๋„ ์‚ฌ์šฉ๋˜์–ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ํ•˜์œ„ ์ˆ˜์ค€ ๋ถ„ํ•  ๊ตฌ์กฐ๋ฅผ ๊ฐœ๋ฐœ์ž์—๊ฒŒ ์ˆจ๊น๋‹ˆ๋‹ค. ํ•˜์ดํผํ…Œ์ด๋ธ”์„ ์‚ฌ์šฉํ•˜๋ฉด ์ง‘๊ณ„ ํ•จ์ˆ˜, ํ•˜์œ„ ์ฟผ๋ฆฌ, ์ผ๋ฐ˜ ํ…Œ์ด๋ธ”๊ณผ์˜ ๋ณ‘ํ•ฉ ์ž‘์—…(JOIN) ๋ฐ ์ฐฝ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

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