πŸ“Œ 운영 쀑인 DB ꡬ쑰 μˆ˜μ • 및 데이터 볡제 μž‘μ—…

πŸ“ κ°œμš”

운영 쀑인 λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό ν™œμš©ν•˜μ—¬ μƒˆλ‘œμš΄ κΈ°λŠ₯을 μΆ”κ°€ν•˜λŠ” κ³Όμ •μ—μ„œ DB ꡬ쑰 변경이 ν•„μš”ν–ˆλ‹€.

κΈ°μ‘΄ ν…Œμ΄λΈ”μ„ 직접 μˆ˜μ •ν•  경우 운영 ν™˜κ²½μ— 영ν–₯을 쀄 수 있기 λ•Œλ¬Έμ—, 볡제 ν…Œμ΄λΈ”μ„ μƒμ„±ν•˜μ—¬ λ³€κ²½ 사항을 μ μš©ν•˜λŠ” λ°©μ‹μœΌλ‘œ μ§„ν–‰ν–ˆλ‹€.


πŸš€ κ΅¬ν˜„ λ‚΄μš©

πŸ”Ή κΈ°μ‘΄ 문제점

βœ… κΈ°μ‘΄ ν…Œμ΄λΈ”(version_data, content_data)을 직접 μˆ˜μ •ν•˜λ©΄ 운영 ν™˜κ²½μ— 영ν–₯을 쀄 수 있음

βœ… κΈ°μ‘΄ ν…Œμ΄λΈ” κ°„μ˜ 관계가 λͺ…ν™•ν•˜μ§€ μ•Šμ•„ 데이터 쑰회 및 μ—°κ΄€μ„± 관리가 μ–΄λ €μš΄ 문제 λ°œμƒ

βœ… μƒˆλ‘œμš΄ κΈ°λŠ₯ μΆ”κ°€λ₯Ό μœ„ν•΄ κΈ°μ‘΄ ν…Œμ΄λΈ”μ„ ν™•μž₯ν•΄μ•Ό ν•˜μ§€λ§Œ, κΈ°μ‘΄ λ°μ΄ν„°μ˜ 정합성을 μœ μ§€ν•΄μ•Ό 함


πŸ”Ή ν•΄κ²° 방법

βœ… 볡제 ν…Œμ΄λΈ”(version_data_copy, content_data_copy)을 μƒμ„±ν•˜μ—¬ λ³€κ²½ 사항을 적용

βœ… content_data_copy ν…Œμ΄λΈ”μ— μƒˆλ‘œμš΄ 컬럼 μΆ”κ°€ (config_data, script_content)

βœ… κΈ°μ‘΄ 데이터λ₯Ό ν™œμš©ν•˜μ—¬ μƒˆλ‘œμš΄ μ»¬λŸΌμ— ν•„μš”ν•œ κ°’ μžλ™ μž…λ ₯

πŸ“Œ ν…Œμ΄λΈ” 컬럼 μΆ”κ°€

ALTER TABLE content_data_copy
ADD COLUMN config_data LONGTEXT,
ADD COLUMN script_content LONGTEXT;

πŸ“Œ config_data 컬럼 κ°’ μ—…λ°μ΄νŠΈ

UPDATE content_data_copy
SET config_data = CONCAT(
    '{',
    '"logo": "",',
    '"server_address": "',
        COALESCE(
            NULLIF(SUBSTRING_INDEX(SUBSTRING_INDEX(metadata, '"server_address":"', -1), '"', 1), ''),
            NULLIF(remote_host, ''),
            ''
        ),
    '",',
    '"main_page": "",',
    '"privacy_policy": "",',
    '"server_port": "',
        COALESCE(
            NULLIF(SUBSTRING_INDEX(SUBSTRING_INDEX(metadata, '"server_port":"', -1), '"', 1), ''),
            NULLIF(remote_port, ''),
            ''
        ),
    '",',
    '"title": "",',
    '"main_page_id": "",',
    '"server_description": "',
        COALESCE(
            CASE
                WHEN NULLIF(SUBSTRING_INDEX(SUBSTRING_INDEX(metadata, '"server_address":"', -1), '"', 1), '') LIKE 'http://%'
                THEN SUBSTRING_INDEX(SUBSTRING_INDEX(SUBSTRING_INDEX(metadata, '"server_address":"', -1), '"', 1), 'http://', -1)
                WHEN NULLIF(SUBSTRING_INDEX(SUBSTRING_INDEX(metadata, '"server_address":"', -1), '"', 1), '') LIKE 'https://%'
                THEN SUBSTRING_INDEX(SUBSTRING_INDEX(SUBSTRING_INDEX(metadata, '"server_address":"', -1), '"', 1), 'https://', -1)
                ELSE NULLIF(SUBSTRING_INDEX(SUBSTRING_INDEX(metadata, '"server_address":"', -1), '"', 1), '')
            END,
            NULLIF(remote_host, ''),
            ''
        ),
    '",',
    '"agreement_title": "",',
    '"content_version": ""',
    '}'
);