InfluxDB ์ž‘์—… ์‹œ ๋ถ„๋…ธ, ํ˜‘์ƒ ๋ฐ ์šฐ์šธ์ฆ

InfluxDB ์ž‘์—… ์‹œ ๋ถ„๋…ธ, ํ˜‘์ƒ ๋ฐ ์šฐ์šธ์ฆ

์‹œ๊ณ„์—ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(timeseries db, ์œ„ํ‚ค)์„ ํ†ต๊ณ„๊ฐ€ ์žˆ๋Š” ์‚ฌ์ดํŠธ์˜ ๊ธฐ๋ณธ ์ €์žฅ์†Œ๋กœ ์‚ฌ์šฉํ•˜๋ฉด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋Œ€์‹  ๋งŽ์€ ๊ณจ์น˜ ์•„ํ”ˆ ์ผ์„ ๊ฒช์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ €๋Š” ๊ทธ๋Ÿฌํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๊ณ  ์žˆ๋Š”๋ฐ, ๋•Œ๋•Œ๋กœ ๋…ผ์˜๋  InfluxDB๊ฐ€ ์ „ํ˜€ ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ๋†€๋ผ์›€์„ ์„ ์‚ฌํ–ˆ์Šต๋‹ˆ๋‹ค.

์ฑ…์ž„ ๋ถ€์ธ: ๋‚˜์—ด๋œ ๋ฌธ์ œ๋Š” InfluxDB ๋ฒ„์ „ 1.7.4์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.

์™œ ์‹œ๊ณ„์—ด์ธ๊ฐ€?

์ด ํ”„๋กœ์ ํŠธ๋Š” ๋‹ค์–‘ํ•œ ๋ธ”๋ก์ฒด์ธ์˜ ๊ฑฐ๋ž˜๋ฅผ ์ถ”์ ํ•˜๊ณ  ํ†ต๊ณ„๋ฅผ ํ‘œ์‹œํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ตฌ์ฒด์ ์œผ๋กœ๋Š” ์Šคํ…Œ์ด๋ธ” ์ฝ”์ธ์˜ ๋ฐฐ์ถœ๊ณผ ์†Œ๊ฐ์„ ์‚ดํŽด๋ณธ๋‹ค(์œ„ํ‚ค). ์ด๋Ÿฌํ•œ ํŠธ๋žœ์žญ์…˜์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ทธ๋ž˜ํ”„๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ์š”์•ฝ ํ…Œ์ด๋ธ”์„ ํ‘œ์‹œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

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

์ง‘๊ณ„ ๊ธฐ๋Šฅ๋„ ๋งค์šฐ ํŽธ๋ฆฌํ•ด ๋ณด์˜€์Šต๋‹ˆ๋‹ค. ์žฅ๊ธฐ๊ฐ„ ์ฐจํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐ ์ด์ƒ์ ์ž…๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๋Š” 365๋…„ ๋™์•ˆ์˜ ์ฐจํŠธ๊ฐ€ ํ•„์š”ํ•˜๋ฉฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—๋Š” XNUMX๋ถ„ ๋‹จ์œ„์˜ ๋ฐ์ดํ„ฐ ์„ธํŠธ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ์—๊ฒŒ ์‹ญ๋งŒ ์ ์„ ๋ชจ๋‘ ๋ณด๋‚ด๋Š” ๊ฒƒ์€ ์˜๋ฏธ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๊ธด ์ฒ˜๋ฆฌ ์‹œ๊ฐ„์„ ์ œ์™ธํ•˜๋ฉด ํ™”๋ฉด์— ๋งž์ง€๋„ ์•Š์Šต๋‹ˆ๋‹ค. ๊ธฐ๊ฐ„์„ ๋Š˜๋ฆฌ๋Š” ๊ตฌํ˜„์„ ์ง์ ‘ ์ž‘์„ฑํ•˜๊ฑฐ๋‚˜ Influx์— ๋‚ด์žฅ๋œ ์ง‘๊ณ„ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋“ค์˜ ๋„์›€์„ ๋ฐ›์•„ ๋‚ ์งœ๋ณ„๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๊ทธ๋ฃนํ™”ํ•˜๊ณ  ํ•„์š”ํ•œ XNUMX๊ฐœ ํฌ์ธํŠธ๋ฅผ ๋ณด๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์ผ๋ฐ˜์ ์œผ๋กœ ์ง€ํ‘œ ์ˆ˜์ง‘์„ ๋ชฉ์ ์œผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค๋Š” ์ ์ด ์•ฝ๊ฐ„ ํ˜ผ๋ž€์Šค๋Ÿฌ์› ์Šต๋‹ˆ๋‹ค. ์„œ๋ฒ„, IoT ์žฅ์น˜, "ํ๋ฆ„" ํ˜•ํƒœ์˜ ์ˆ˜๋ฐฑ๋งŒ ํฌ์ธํŠธ๊ฐ€ ์žˆ๋Š” ๋ชจ๋“  ๊ฒƒ์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•ฉ๋‹ˆ๋‹ค: [<์‹œ๊ฐ„> - <๋ฉ”ํŠธ๋ฆญ ๊ฐ’>]. ๊ทธ๋Ÿฌ๋‚˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ๋Œ€๊ทœ๋ชจ ๋ฐ์ดํ„ฐ ํ๋ฆ„์—์„œ ์ž˜ ์ž‘๋™ํ•œ๋‹ค๋ฉด ์ž‘์€ ๋ณผ๋ฅจ์ด ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ค๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ์ด๋ฅผ ์—ผ๋‘์— ๋‘๊ณ  ์šฐ๋ฆฌ๋Š” InfluxDB๋ฅผ ์ž‘์—…์— ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.

InfluxDB์—์„œ ๋˜ ๋ฌด์—‡์ด ํŽธ๋ฆฌํ•œ๊ฐ€์š”?

์–ธ๊ธ‰๋œ ์ง‘๊ณ„ ํ•จ์ˆ˜ ์™ธ์—๋„ ๋˜ ๋‹ค๋ฅธ ์ข‹์€ ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฐ์† ์ฟผ๋ฆฌ (์˜์‚ฌ). ์ผ์ •์— ๋”ฐ๋ผ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋‚ด์žฅ๋œ ์Šค์ผ€์ค„๋Ÿฌ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, 24์‹œ๊ฐ„๋งˆ๋‹ค ๊ทธ๋‚ ์˜ ๋ชจ๋“  ๊ธฐ๋ก์„ ๊ทธ๋ฃนํ™”ํ•˜๊ณ , ํ‰๊ท ์„ ๊ณ„์‚ฐํ•˜๊ณ , ์ž์ „๊ฑฐ๋ฅผ ์ง์ ‘ ์ž‘์„ฑํ•˜์ง€ ์•Š๊ณ ๋„ ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”์— ์ƒˆ๋กœ์šด ์ง€์  ํ•˜๋‚˜๋ฅผ ๊ธฐ๋กํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ์žˆ๋‹ค ๋ณด์กด ์ •์ฑ… (์˜์‚ฌ)โ€”ํŠน์ • ๊ธฐ๊ฐ„ ์ดํ›„ ๋ฐ์ดํ„ฐ ์‚ญ์ œ๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์ดˆ๋‹น ํ•œ ๋ฒˆ์”ฉ ์ธก์ •ํ•˜์—ฌ ์ผ์ฃผ์ผ ๋™์•ˆ CPU ๋กœ๋“œ๋ฅผ ์ €์žฅํ•ด์•ผ ํ•˜์ง€๋งŒ ๋ช‡ ๋‹ฌ ๋™์•ˆ ์ด๋Ÿฌํ•œ ์ •ํ™•๋„๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ์— ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ƒํ™ฉ์—์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  1. ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”์— ์ง‘๊ณ„ํ•˜๊ธฐ ์œ„ํ•œ ์—ฐ์† ์ฟผ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
  2. ์ฒซ ๋ฒˆ์งธ ํ…Œ์ด๋ธ”์— ๋Œ€ํ•ด ๊ฐ™์€ ์ฃผ๋ณด๋‹ค ์˜ค๋ž˜๋œ ์ง€ํ‘œ๋ฅผ ์‚ญ์ œํ•˜๋Š” ์ •์ฑ…์„ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  Influx๋Š” ๋ฐ์ดํ„ฐ ํฌ๊ธฐ๋ฅผ ๋…๋ฆฝ์ ์œผ๋กœ ์ค„์ด๊ณ  ๋ถˆํ•„์š”ํ•œ ๊ฒƒ์„ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.

์ €์žฅ๋œ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•˜์—ฌ

์ €์žฅ๋˜๋Š” ๋ฐ์ดํ„ฐ๋Š” ๋งŽ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์•ฝ 70๋งŒ ๊ฑด์˜ ๊ฑฐ๋ž˜์™€ ์‹œ์žฅ ์ •๋ณด๊ฐ€ ํฌํ•จ๋œ ๋ฐฑ๋งŒ ํฌ์ธํŠธ๊ฐ€ ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค. ์ƒˆ ํ•ญ๋ชฉ ์ถ”๊ฐ€ - ํ•˜๋ฃจ์— 3000ํฌ์ธํŠธ๋ฅผ ๋„˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์‚ฌ์ดํŠธ์— ๋Œ€ํ•œ ์ธก์ • ํ•ญ๋ชฉ๋„ ์žˆ์ง€๋งŒ ๋ฐ์ดํ„ฐ๊ฐ€ ๊ฑฐ์˜ ์—†์œผ๋ฉฐ ๋ณด์กด ์ •์ฑ…์— ๋”ฐ๋ผ ํ•œ ๋‹ฌ ์ด์ƒ ์ €์žฅ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋ฌธ์ œ

์„œ๋น„์Šค ๊ฐœ๋ฐœ ๋ฐ ํ›„์† ํ…Œ์ŠคํŠธ ๊ณผ์ •์—์„œ InfluxDB ์šด์˜์— ์ ์  ๋” ์‹ฌ๊ฐํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

1. ๋ฐ์ดํ„ฐ ์‚ญ์ œ

๊ฑฐ๋ž˜์™€ ๊ด€๋ จ๋œ ์ผ๋ จ์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

SELECT time, amount, block, symbol FROM transactions WHERE symbol='USDT'

๊ฒฐ๊ณผ :

InfluxDB ์ž‘์—… ์‹œ ๋ถ„๋…ธ, ํ˜‘์ƒ ๋ฐ ์šฐ์šธ์ฆ

๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œํ•˜๋ผ๋Š” ๋ช…๋ น์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค.

DELETE FROM transactions WHERE symbol=โ€™USDTโ€™

๋‹ค์Œ์œผ๋กœ ์ด๋ฏธ ์‚ญ์ œ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์‹ ํ•ด ๋‹ฌ๋ผ๊ณ  ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  Influx๋Š” ๋นˆ ์‘๋‹ต ๋Œ€์‹  ์‚ญ์ œํ•ด์•ผ ํ•˜๋Š” ๋ฐ์ดํ„ฐ์˜ ์ผ๋ถ€๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

์ „์ฒด ํ…Œ์ด๋ธ”์„ ์‚ญ์ œํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

DROP MEASUREMENT transactions

ํ…Œ์ด๋ธ” ์‚ญ์ œ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

SHOW MEASUREMENTS

๋ชฉ๋ก์— ํ…Œ์ด๋ธ”์ด ํ‘œ์‹œ๋˜์ง€ ์•Š์ง€๋งŒ ์ƒˆ ๋ฐ์ดํ„ฐ ์ฟผ๋ฆฌ๋Š” ์—ฌ์ „ํžˆ ๋™์ผํ•œ ํŠธ๋žœ์žญ์…˜ ์ง‘ํ•ฉ์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

์‚ญ์ œ ์‚ฌ๋ก€๊ฐ€ ๋‹จ๋… ์‚ฌ๋ก€์˜€๊ธฐ ๋•Œ๋ฌธ์— ๋ฌธ์ œ๋Š” ๋”ฑ ํ•œ ๋ฒˆ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๋Ÿฌํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋™์ž‘์€ ๋ถ„๋ช…ํžˆ "์˜ฌ๋ฐ”๋ฅธ" ์ž‘์—…์˜ ํ‹€์— ๋งž์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‚˜์ค‘์— github์—์„œ ์—ด๋ฆฐ ๊ฒƒ์„ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค. ํ‹ฐ์ผ“ ๊ฑฐ์˜ XNUMX๋…„ ์ „ ์ด ์ฃผ์ œ์— ๊ด€ํ•ด.

๊ฒฐ๊ณผ์ ์œผ๋กœ ์ „์ฒด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์‚ญ์ œํ•œ ํ›„ ๋ณต์›ํ•˜๋Š” ๊ฒƒ์ด ๋„์›€์ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

2. ๋ถ€๋™ ์†Œ์ˆ˜์  ์ˆซ์ž

InfluxDB์— ๋‚ด์žฅ๋œ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์ˆ˜ํ•™ ๊ณ„์‚ฐ์—๋Š” ์ •ํ™•๋„ ์˜ค๋ฅ˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์ด์ƒํ•œ ๊ฒƒ์€ ์•„๋‹ˆ์ง€๋งŒ ๋ถˆ์พŒํ•ฉ๋‹ˆ๋‹ค.

์ œ ๊ฒฝ์šฐ์—๋Š” ๋ฐ์ดํ„ฐ์— ๊ธˆ์œต์ ์ธ ์š”์†Œ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์–ด ๋†’์€ ์ •ํ™•๋„๋กœ ์ฒ˜๋ฆฌํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์ด๋กœ ์ธํ•ด ์ง€์†์ ์ธ ์ฟผ๋ฆฌ๋ฅผ ํฌ๊ธฐํ•  ๊ณ„ํš์ž…๋‹ˆ๋‹ค.

3. ์—ฐ์† ์ฟผ๋ฆฌ๋Š” ๋‹ค๋ฅธ ์‹œ๊ฐ„๋Œ€์— ์ ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์ด ์„œ๋น„์Šค์—๋Š” ์ผ์ผ ๊ฑฐ๋ž˜ ํ†ต๊ณ„๊ฐ€ ํฌํ•จ๋œ ํ…Œ์ด๋ธ”์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋งค์ผ ํ•ด๋‹น ๋‚ ์งœ์˜ ๋ชจ๋“  ๊ฑฐ๋ž˜๋ฅผ ๊ทธ๋ฃนํ™”ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ฐ ์‚ฌ์šฉ์ž์˜ ํ•˜๋ฃจ๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ์‹œ๊ฐ„์— ์‹œ์ž‘๋˜๋ฏ€๋กœ ๊ฑฐ๋ž˜ ์„ธํŠธ๋„ ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค. UTC ๊ธฐ์ค€ ์˜ˆ 37๊ฐ€์ง€ ์˜ต์…˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ง‘๊ณ„ํ•ด์•ผ ํ•˜๋Š” ๊ต๋Œ€๊ทผ๋ฌด.

InfluxDB์—์„œ๋Š” ์‹œ๊ฐ„๋ณ„๋กœ ๊ทธ๋ฃนํ™”ํ•  ๋•Œ ๋ชจ์Šคํฌ๋ฐ” ์‹œ๊ฐ„(UTC+3)๊ณผ ๊ฐ™์ด ๊ต๋Œ€ ๊ทผ๋ฌด๋ฅผ ์ถ”๊ฐ€๋กœ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

SELECT MEAN("supply") FROM transactions GROUP BY symbol, time(1d, 3h) fill(previous)

๊ทธ๋Ÿฌ๋‚˜ ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๊ฐ€ ์˜ฌ๋ฐ”๋ฅด์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์–ด๋–ค ์ด์œ ๋กœ ๋‚ ์งœ๋ณ„๋กœ ๊ทธ๋ฃนํ™”๋œ ๋ฐ์ดํ„ฐ๋Š” 1677๋…„๋ถ€ํ„ฐ ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค(InfluxDB๋Š” ๊ณต์‹์ ์œผ๋กœ ์˜ฌํ•ด๋ถ€ํ„ฐ ๊ธฐ๊ฐ„์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค).

InfluxDB ์ž‘์—… ์‹œ ๋ถ„๋…ธ, ํ˜‘์ƒ ๋ฐ ์šฐ์šธ์ฆ

์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์„œ๋น„์Šค๋ฅผ ์ผ์‹œ์ ์œผ๋กœ UTC+0์œผ๋กœ ์ „ํ™˜ํ–ˆ์Šต๋‹ˆ๋‹ค.

4. ์„ฑ๋Šฅ

InfluxDB์™€ ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋น„๊ตํ•˜๋Š” ๋งŽ์€ ๋ฒค์น˜๋งˆํฌ๊ฐ€ ์ธํ„ฐ๋„ท์— ์žˆ์Šต๋‹ˆ๋‹ค. ์–ผํ• ๋ณด๋ฉด ๋งˆ์ผ€ํŒ… ์ž๋ฃŒ์ฒ˜๋Ÿผ ๋ณด์˜€์ง€๋งŒ, ์ง€๊ธˆ ๋ณด๋‹ˆ ๊ทธ ์†์— ์–ด๋Š ์ •๋„ ์ง„์‹ค์ด ๋“ค์–ด ์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋‚ด ๊ฒฝ์šฐ๋ฅผ ๋งํ•ด์ฃผ์ง€.

์ด ์„œ๋น„์Šค๋Š” ๋งˆ์ง€๋ง‰ ๋‚ ์˜ ํ†ต๊ณ„๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” API ๋ฉ”์†Œ๋“œ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๊ณ„์‚ฐ์„ ์ˆ˜ํ–‰ํ•  ๋•Œ ๋ฉ”์„œ๋“œ๋Š” ๋‹ค์Œ ์ฟผ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์„ธ ๋ฒˆ ์ฟผ๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

SELECT * FROM coins_info WHERE time <= NOW() GROUP BY symbol ORDER BY time DESC LIMIT 1

SELECT * FROM dominance_info ORDER BY time DESC LIMIT 1

SELECT * FROM transactions WHERE time >= NOW() - 24h ORDER BY time DESC

์„ค๋ช…:

  1. ์ฒซ ๋ฒˆ์งธ ์š”์ฒญ์—์„œ๋Š” ์‹œ์žฅ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ ์ฝ”์ธ์˜ ๋งˆ์ง€๋ง‰ ํฌ์ธํŠธ๋ฅผ ์–ป์Šต๋‹ˆ๋‹ค. ์ œ ๊ฒฝ์šฐ์—๋Š” ๋™์ „ XNUMX๊ฐœ์— XNUMX์ ์ž…๋‹ˆ๋‹ค.
  2. ๋‘ ๋ฒˆ์งธ ์š”์ฒญ์€ ์ตœ์‹  ํฌ์ธํŠธ ์ค‘ ํ•˜๋‚˜๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.
  3. ์„ธ ๋ฒˆ์งธ๋Š” ์ง€๋‚œ XNUMX์‹œ๊ฐ„ ๋™์•ˆ์˜ ๊ฑฐ๋ž˜ ๋ชฉ๋ก์„ ์š”์ฒญํ•˜๋ฉฐ ๊ทธ ์ค‘ ์ˆ˜๋ฐฑ ๊ฐœ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

InfluxDB๋Š” ํƒœ๊ทธ์™€ ์‹œ๊ฐ„์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ธ๋ฑ์Šค๋ฅผ ์ž๋™์œผ๋กœ ๊ตฌ์ถ•ํ•˜์—ฌ ์ฟผ๋ฆฌ ์†๋„๋ฅผ ๋†’์ธ๋‹ค๋Š” ์ ์„ ๋ถ„๋ช…ํžˆ ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ์š”์ฒญ์—์„œ๋Š” ์ƒ์ง• ํƒœ๊ทธ์ž…๋‹ˆ๋‹ค.

์ด API ๋ฉ”์„œ๋“œ์— ๋Œ€ํ•ด ์ŠคํŠธ๋ ˆ์Šค ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค. 25RPS์˜ ๊ฒฝ์šฐ ์„œ๋ฒ„๋Š” XNUMX๊ฐœ CPU์˜ ์ „์ฒด ๋กœ๋“œ๋ฅผ ์‹œ์—ฐํ–ˆ์Šต๋‹ˆ๋‹ค.

InfluxDB ์ž‘์—… ์‹œ ๋ถ„๋…ธ, ํ˜‘์ƒ ๋ฐ ์šฐ์šธ์ฆ

๋™์‹œ์— NodeJs ํ”„๋กœ์„ธ์Šค๋Š” ์ „ํ˜€ ๋กœ๋“œ๋ฅผ ์ œ๊ณตํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

์‹คํ–‰ ์†๋„๋Š” ์ด๋ฏธ 7-10 RPS๋งŒํผ ์ €ํ•˜๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํ•œ ํด๋ผ์ด์–ธํŠธ๊ฐ€ 200ms ๋‚ด์— ์‘๋‹ต์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค๋ฉด 10๊ฐœ์˜ ํด๋ผ์ด์–ธํŠธ๋Š” 25์ดˆ๋ฅผ ๊ธฐ๋‹ค๋ ค์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. 500RPS๋Š” ์•ˆ์ •์„ฑ์ด ์ €ํ•˜๋˜๋Š” ํ•œ๊ณ„์ด๋ฉฐ XNUMX๊ฐœ์˜ ์˜ค๋ฅ˜๊ฐ€ ํด๋ผ์ด์–ธํŠธ์— ๋ฐ˜ํ™˜๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ์„ฑ๋Šฅ์œผ๋กœ ์ธํ•ด ์šฐ๋ฆฌ ํ”„๋กœ์ ํŠธ์—์„œ๋Š” Influx๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๋”์šฑ์ด, ๋ชจ๋‹ˆํ„ฐ๋ง์„ ๋งŽ์€ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์‹œ์—ฐํ•ด์•ผ ํ•˜๋Š” ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ์œ ์‚ฌํ•œ ๋ฌธ์ œ๊ฐ€ ๋‚˜ํƒ€๋‚  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋ฉ”ํŠธ๋ฆญ ์„œ๋ฒ„๊ฐ€ ๊ณผ๋ถ€ํ•˜๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ถœ๋ ฅ

์–ป์€ ๊ฒฝํ—˜์—์„œ ์–ป์€ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฒฐ๋ก ์€ ์ถฉ๋ถ„ํ•œ ๋ถ„์„ ์—†์ด๋Š” ์•Œ๋ ค์ง€์ง€ ์•Š์€ ๊ธฐ์ˆ ์„ ํ”„๋กœ์ ํŠธ์— ๋„์ž…ํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. github์—์„œ ๊ณต๊ฐœ๋œ ๋ฌธ์ œ๋ฅผ ๊ฐ„๋‹จํžˆ ๊ฒ€์‚ฌํ•˜๋ฉด InfluxDB๋ฅผ ๊ธฐ๋ณธ ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ๋กœ ์„ ํƒํ•˜์ง€ ์•Š๋„๋ก ์ •๋ณด๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

InfluxDB๋Š” ๋‚ด ํ”„๋กœ์ ํŠธ ์ž‘์—…์— ์ ํ•ฉํ•ด์•ผ ํ–ˆ์ง€๋งŒ ์‹ค์Šต์—์„œ ์•Œ ์ˆ˜ ์žˆ๋“ฏ์ด ์ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ์š”๊ตฌ ์‚ฌํ•ญ์„ ์ถฉ์กฑํ•˜์ง€ ๋ชปํ•˜๊ณ  ๋ฒ„๊ทธ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค.

ํ”„๋กœ์ ํŠธ ์ €์žฅ์†Œ์—์„œ ์ด๋ฏธ ๋ฒ„์ „ 2.0.0-๋ฒ ํƒ€๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋‘ ๋ฒˆ์งธ ๋ฒ„์ „์—์„œ๋Š” ์ƒ๋‹นํ•œ ๊ฐœ์„ ์ด ์ด๋ฃจ์–ด์ง€๊ธฐ๋ฅผ ๋ฐ”๋ž„ ๋ฟ์ž…๋‹ˆ๋‹ค. ๊ทธ๋™์•ˆ TimescaleDB ๋ฌธ์„œ๋ฅผ ๊ณต๋ถ€ํ•˜๋Ÿฌ ๊ฐ€๊ฒ ์Šต๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : habr.com

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