728x90

๋ฐ์ดํ„ฐ ํŒŒ์ดํ”„๋ผ์ธ ๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐ ์ด์ƒ ํƒ์ง€


  • ์ถ”์ฒœ ๋„์„œ Anomaly Detection for Monitoring

์•Œ๋ ค์ง„ ๋ฏธ์ง€์™€ ์•Œ๋ ค์ง€์ง€ ์•Š์€ ๋ฏธ์ง€

  • ์•Œ๋ ค์ง„ ๋ฏธ์ง€ : ์˜ˆ์ธกํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ
    • ์‰ฝ๊ฒŒ ์˜ˆ์ธก์ด ๊ฐ€๋Šฅํ•œ ์ข…๋ฅ˜(NULL ๊ฐ’, ํŠน์ • ์‹ ์„ ๋„ ๋ฌธ์ œ, ์‹œ์Šคํ…œ ์ •๊ธฐ ์—…๋ฐ์ดํŠธ๋กœ ์œ ๋ฐœ๋œ ์Šคํ‚ค๋งˆ ๋ณ€๊ฒฝ)
  • ์•Œ๋ ค์ง€์ง€ ์•Š์€ ๋ฏธ์ง€ : ํ…Œ์ŠคํŠธ๋กœ๋„ ์„ค๋ช…ํ•  ์ˆ˜ ์—†๋Š” ๋ฐ์ดํ„ฐ ๋‹ค์šดํƒ€์ž„, ์ฆ‰ ํŠน์ • ํ…Œ์ŠคํŠธ์—์„œ ๋‹ค๋ฃจ๋Š” ์„น์…˜๋ฟ ์•„๋‹ˆ๋ผ ์ „์ฒด ๋ฐ์ดํ„ฐ ํŒŒ์ดํ”„๋ผ์ธ์—์„œ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ๋ฅผ ์˜๋ฏธ

 

๋ฐ์ดํ„ฐ ๋ชจ๋‹ˆํ„ฐ๋ง

 1. ์‹ ์„ ๋„ ๋ชจ๋‹ˆํ„ฐ๋ง

 ์•„๋ž˜ ์ฟผ๋ฆฌ๋Š” ROW ์ถ”๊ฐ€ ์ˆ˜๋ฅผ ๋‚ ์งœ๋ณ„๋กœ ์ •๋ฆฌ๋œ table์„ ํ™œ์šฉํ•ด ๋ฐ์ดํ„ฐ ๋‹ค์šด์ŠคํŠธ๋ฆผ์„ ์ถ”์ ํ•˜๋Š” ์ฟผ๋ฆฌ์ด๋‹ค. DAYS_SINCE_LAST_UPDATE ์ค‘๋‹จ ์ง€์ ์„ ๊ธฐ์ ์œผ๋กœ ๋‹ค์Œ ๋‚ ์งœ๊ฐ„์˜ ๊ฐ„๊ฒฉ์ด 2์ผ ์ดˆ๊ณผ์ด๋ฉด ์กฐํšŒ๋ฅผ ํ•œ๋‹ค.
์ด๋ ‡๊ฒŒ

WITH UPDATES AS (
    SELECT DATE_ADDED
         , COUNT(*) ROWS_ADDED
      FROM EXOPLANETS
     GROUP BY DATE_ADDED
     ), 
 NUM_DAYS_UPDATES AS (
    SELECT DATE_ADDED
         , TO_DAYS(DATE_ADDED) - TO_DAYS(LAG(DATE_ADDED) OVER(ORDER BY DATE_ADDED)) AS DAYS_SINCE_LAST_UPDATE
      FROM UPDATES
      )
 SELECT *
   FROM NUM_DAYS_UPDATES
  WHERE DAYS_SINCE_LAST_UPDATE > 2
;

 

2. ๋ถ„ํฌ

 ์ •๊ทœ ๋ถ„ํฌ๋ฅผ ํ™œ์šฉํ•˜๋ฉด ๋งค์šฐ ๋‹จ์ˆœํ•˜์ง€๋งŒ ๋†€๋ž๊ณ  ํšจ๊ณผ์ ์ธ ์ด์ƒํƒ์ง€์˜ ๊ธฐ์ดˆ์ ์ธ ์ ‘๊ทผ ๋ฐฉ์‹์„ ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ๋‹ค.
NULL ๊ฐ’ ๋น„์œจ์„ ํƒ์ง€ํ•˜๋Š” '์ŠคํŒŒ์ดํฌ'๊ฐ€ ์žˆ์Œ์„ ๋ณด์—ฌ์ค€๋‹ค.

SELECT DATE_ADDED
     , COUNT(*) ROWS_ADDED
     , CAST(
        SUM(
            CASE 
                WHEN DISTANCE IS NULL THEN 1
                ELSE 0
            END
            ) AS FLOAT) / COUNT(*) AS DISTANCE_NULL_RATE,
        CAST(
            SUM(
                CASE
                    WHEN G IS NULL THEN 1
                    ELSE 0
                END
                ) AS FLOAT) / COUNT(*) AS G_NULL_RATE,
        CAST(
            SUM(
                CASE
                    WHEN ORBITAL_PERIOD IS NULL THEN 1
                    ELSE 0
                END
                ) AS FLOAT) / COUNT(*) AS ORBITAL_PERIOD_NULL_RATE,
        CAST(
            SUM(
                CASE
                    WHEN AVG_TEMP IS NULL THEN 1
                    ELSE 0
                END
                ) AS FLOAT) / COUNT(*) AS AVG_TEMP_NULL_RATE
        FROM EXOPLANETS
        GROUP BY DATE_ADDED;

 

 3. ๊ณ„๋ณด์˜ ์‹œ๊ฐํ™”

 ๊ณ„๋ณด : ๋ฐ์ดํ„ฐ ์˜ต์ €๋ฒ„๋นŒ๋ฆฌํ‹ฐ์˜ ๋‹ค์„ฏ๊ฐ€์ง€ ํ•ต์‹ฌ ์š”์†Œ ์ค‘ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฒƒ

  • ์˜ํ–ฅ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ๋‹ค์šด์ŠคํŠธ๋ฆผ ์†Œ์Šค
  • ๊ทผ๋ณธ์ ์ธ ์›์ธ์ด ๋  ์ˆ˜ ์žˆ๋Š” ์—…์ŠคํŠธ๋ฆผ ์†Œ์Šค๋ฅผ ์•Œ๋ ค์คŒ์œผ๋กœ์จ ๋งฅ๋ฝํ™” ๋‹จ์„œ
    ๋ฐ์ดํ„ฐ Quick SQL Script๋ฅผ ์ด์šฉํ•ด ๊ฐ ์ปฌ๋Ÿผ์˜ ์†์„ฑ์„ ๋ณด๊ณ  ์˜์กด์„ฑ์„ ํŒŒ์•…ํ•œ๋‹ค.4. ๋ฐ์ดํ„ฐ ์ด์ƒ ์กฐ์‚ฌํ‰์ƒ์‹œ ์ •๊ทœ๋ถ„ํฌ๋ฅผ ๋”ฐ๋ฅด๊ณ  ์žˆ๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ 3 sigma ์ด์ƒ์˜ ์ฐจ์ด๊ฐ€ ๋‚˜๋Š” ๊ฐ’์ด ์ž์ฃผ ๋ฐœ์ƒํ•œ๋‹ค๋ฉด ์ด์ƒ์น˜๋ผ๊ณ  ์˜์‹ฌํ•ด ๋ณผ ์ˆ˜ ์žˆ๋‹ค. 1๋ฒˆ์˜ NULL ๋น„์œจ๊ณผ ๊ฐ™๋‹ค๊ณ  ๋ณด๋ฉด ๋œ๋‹ค.

 

๋ฐ์ดํ„ฐ ํ’ˆ์งˆ ๋ชจ๋‹ˆํ„ฐ ์„ค๊ณ„ : ๋ฐ์ดํ„ฐ ์›จ์–ดํ•˜์šฐ์Šค vs ๋ฐ์ดํ„ฐ ๋ ˆ์ดํฌ

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

 

๊ณ ๋ คํ•ด์•ผํ•  ์š”์†Œ

  • ๊ณ ๋ คํ•ด์•ผํ•˜๋Š” ์ง„์ž…์ ์˜ ์ˆ˜
  • ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์ˆ˜์ง‘ ๋ฐ ์ €์žฅ ๋ฐฉ๋ฒ•
  • ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•˜๋Š” ๋ฐฉ๋ฒ•

์ •๋ฆฌ

  1. ๋ฐ์ดํ„ฐ ๋ ˆ์ดํฌ์˜ ์ง„์ž…์ ์ด ๋งŽ๋‹ค. ๋†’์€ ์ด์งˆ์„ฑ ๊ณ ๋ ค (PostgresSQL)
  2. ๋ฐ์ดํ„ฐ ๋ ˆ์ดํฌ๋กœ ์ง์ ‘ ์ˆ˜์ง‘๋œ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋Š” ์ด์ƒ ํƒ์ง€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‹คํ–‰ํ•˜๊ธฐ ์ „์— ๋‹ค์–‘ํ•œ ์ˆ˜์ค€์˜ ์ „์ฒ˜๋ฆฌ๊ฐ€ ํ•„์š”.

[keyword]

์•„์ฃผ ๋‚ฎ์€ ๊ฐ’๊ณผ ์•„์ฃผ ๋†’์€ ๊ฐ’ ์‚ฌ์ด์˜ ๊ณจ๋””๋ฝ์Šค ์กด(Goldilocks Zone), ์Šค์œ„ํŠธ ์ŠคํŒŸ(sweet spot)
๊ณจ๋””๋ฝ์Šค ์กด(Goldilocks Zone) : ์ƒ๋ฌผ์ด ์‚ด์•„๊ฐ€๊ธฐ์— ์ ํ•ฉํ•œ ํ™˜๊ฒฝ์„ ์ง€๋‹Œ ์šฐ์ฃผ ๊ณต๊ฐ„์˜ ๋ฒ”์œ„
์Šค์œ„ํŠธ ์ŠคํŒŸ(sweet spot) : ํด๋Ÿฝ, ๋ผ์ผ“, ๋ฐฐํŠธ ๋“ฑ์— ๊ณต์ด ๋งž์•˜์„๋•Œ ๊ฐ€์žฅ ์ž˜ ๋‚ ์•„๊ฐ€๋Š” ์ตœ์ ์˜ ์ง€์ ์„ ๋œปํ•˜๋Š” ์Šคํฌ์ธ  ์šฉ์–ด
๋ฐ˜์‘ํ˜•

'๐Ÿ›ข๏ธ Database' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Kafka] Kafka Kraft mode Docker ์„ค์น˜  (0) 2024.12.08
๋ฐ์ดํ„ฐ ์ด์ฃผ To NAS (synology, dropbox)  (0) 2024.09.03
Data Orchestration  (0) 2024.08.03
๋ฐ์ดํ„ฐ ํ’ˆ์งˆ์˜ ๋น„๋ฐ€ (3)  (0) 2024.07.30
Airflow Entrypoint  (0) 2024.07.28
๋‹คํ–ˆ๋‹ค