soyailabs / POSTGRESQL_SETUP_GUIDE.md
SOY NV AI
Fix Ollama communication error and update Railway PostgreSQL setup guide
ef22967

PostgreSQL ์„ค์ • ๊ฐ€์ด๋“œ

ํ˜„์žฌ SQLite๋ฅผ ์‚ฌ์šฉ ์ค‘์ด๋ฉฐ, ์ปจํ…Œ์ด๋„ˆ ์žฌ์‹œ์ž‘ ์‹œ ๋ฐ์ดํ„ฐ๊ฐ€ ์‚ญ์ œ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. PostgreSQL๋กœ ์ „ํ™˜ํ•˜๋ฉด ๋ฐ์ดํ„ฐ๊ฐ€ ์˜๊ตฌ์ ์œผ๋กœ ๋ณด์กด๋ฉ๋‹ˆ๋‹ค.

๋ฌด๋ฃŒ PostgreSQL ์„œ๋น„์Šค ์„ ํƒ

1. Supabase (๊ถŒ์žฅ)

  • URL: https://supabase.com/
  • ๋ฌด๋ฃŒ ํ‹ฐ์–ด: 500MB ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, ์ž๋™ ๋ฐฑ์—…
  • ์žฅ์ : ์‚ฌ์šฉํ•˜๊ธฐ ์‰ฌ์›€, ์ž๋™ ๋ฐฑ์—…, ๋Œ€์‹œ๋ณด๋“œ ์ œ๊ณต

2. Neon

  • URL: https://neon.tech/
  • ๋ฌด๋ฃŒ ํ‹ฐ์–ด: 3GB ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, ์„œ๋ฒ„๋ฆฌ์Šค
  • ์žฅ์ : ๋น ๋ฅธ ์„ฑ๋Šฅ, ์ž๋™ ์Šค์ผ€์ผ๋ง

3. Railway

  • URL: https://railway.app/
  • ๋ฌด๋ฃŒ ํ‹ฐ์–ด: $5 ํฌ๋ ˆ๋”ง/์›”
  • ์žฅ์ : ๊ฐ„๋‹จํ•œ ์„ค์ •, ๋‹ค์–‘ํ•œ ์„œ๋น„์Šค ํ†ตํ•ฉ

Supabase ์„ค์ • ๋ฐฉ๋ฒ• (์˜ˆ์‹œ)

1. Supabase ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ

  1. https://supabase.com/ ์ ‘์† ๋ฐ ๋กœ๊ทธ์ธ
  2. "New Project" ํด๋ฆญ
  3. ํ”„๋กœ์ ํŠธ ์ •๋ณด ์ž…๋ ฅ:
    • Name: ์›ํ•˜๋Š” ํ”„๋กœ์ ํŠธ ์ด๋ฆ„
    • Database Password: ๊ฐ•๋ ฅํ•œ ๋น„๋ฐ€๋ฒˆํ˜ธ ์ƒ์„ฑ (์ €์žฅํ•ด๋‘์„ธ์š”!)
    • Region: ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ์ง€์—ญ ์„ ํƒ
  4. "Create new project" ํด๋ฆญ (์•ฝ 2๋ถ„ ์†Œ์š”)

2. ์—ฐ๊ฒฐ ์ •๋ณด ํ™•์ธ

ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ ํ›„:

  1. Settings > Database ๋ฉ”๋‰ด๋กœ ์ด๋™
  2. Connection string ์„น์…˜์—์„œ URI ๋ณต์‚ฌ
    • ํ˜•์‹: postgresql://postgres:[YOUR-PASSWORD]@db.xxxxx.supabase.co:5432/postgres
    • [YOUR-PASSWORD]๋ฅผ ์‹ค์ œ ๋น„๋ฐ€๋ฒˆํ˜ธ๋กœ ๊ต์ฒด

3. Hugging Face Spaces์— ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์„ค์ •

  1. Hugging Face Spaces ํŽ˜์ด์ง€๋กœ ์ด๋™
  2. Settings ํƒญ ํด๋ฆญ
  3. Repository secrets ์„น์…˜์œผ๋กœ ์Šคํฌ๋กค
  4. New secret ํด๋ฆญ
  5. ๋‹ค์Œ ์ •๋ณด ์ž…๋ ฅ:
    • Key: DATABASE_URL
    • Value: Supabase์—์„œ ๋ณต์‚ฌํ•œ ์—ฐ๊ฒฐ ๋ฌธ์ž์—ด (๋น„๋ฐ€๋ฒˆํ˜ธ ํฌํ•จ)
      postgresql://postgres:your_password@db.xxxxx.supabase.co:5432/postgres
      
  6. Add secret ํด๋ฆญ

4. Spaces ์žฌ๋นŒ๋“œ

ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•˜๋ฉด Spaces๊ฐ€ ์ž๋™์œผ๋กœ ์žฌ๋นŒ๋“œ๋ฉ๋‹ˆ๋‹ค (์•ฝ 2-5๋ถ„ ์†Œ์š”).

5. ์—ฐ๊ฒฐ ํ™•์ธ

์žฌ๋นŒ๋“œ ์™„๋ฃŒ ํ›„:

  1. ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋‹ค์Œ URL ์ ‘์†:
    https://wiizm-soyailabs.hf.space/api/admin/database/status
    
  2. ์‘๋‹ต ํ™•์ธ:
    {
        "connected": true,
        "type": "PostgreSQL",  // โœ… PostgreSQL ํ™•์ธ
        "version": "PostgreSQL 15.x...",
        "config_count": 1,
        "user_count": 1
    }
    

Neon ์„ค์ • ๋ฐฉ๋ฒ• (์˜ˆ์‹œ)

1. Neon ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ

  1. https://neon.tech/ ์ ‘์† ๋ฐ ๋กœ๊ทธ์ธ
  2. "Create a project" ํด๋ฆญ
  3. ํ”„๋กœ์ ํŠธ ์ •๋ณด ์ž…๋ ฅ:
    • Name: ์›ํ•˜๋Š” ํ”„๋กœ์ ํŠธ ์ด๋ฆ„
    • Region: ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ์ง€์—ญ ์„ ํƒ
  4. "Create project" ํด๋ฆญ

2. ์—ฐ๊ฒฐ ์ •๋ณด ํ™•์ธ

ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ ํ›„:

  1. ํ”„๋กœ์ ํŠธ ๋Œ€์‹œ๋ณด๋“œ์—์„œ Connection string ๋ณต์‚ฌ
    • ํ˜•์‹: postgresql://user:password@ep-xxxxx.region.aws.neon.tech/neondb
    • ๋˜๋Š” Connection Details์—์„œ ๊ฐœ๋ณ„ ์ •๋ณด ํ™•์ธ

3. Hugging Face Spaces์— ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์„ค์ •

  1. Hugging Face Spaces > Settings > Repository secrets
  2. New secret ํด๋ฆญ
  3. ๋‹ค์Œ ์ •๋ณด ์ž…๋ ฅ:
    • Key: DATABASE_URL
    • Value: Neon ์—ฐ๊ฒฐ ๋ฌธ์ž์—ด
  4. Add secret ํด๋ฆญ

4. Spaces ์žฌ๋นŒ๋“œ ๋ฐ ํ™•์ธ

์œ„์™€ ๋™์ผํ•˜๊ฒŒ ์žฌ๋นŒ๋“œ ํ›„ /api/admin/database/status๋กœ ํ™•์ธ

๋ฐ์ดํ„ฐ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ (์„ ํƒ์‚ฌํ•ญ)

PostgreSQL๋กœ ์ „ํ™˜ํ•˜๋ฉด ๊ธฐ์กด SQLite ๋ฐ์ดํ„ฐ๋Š” ์ž๋™์œผ๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ•„์š”์‹œ:

  1. ๊ธฐ์กด ๋ฐ์ดํ„ฐ ๋ฐฑ์—… (SQLite):

    # ๋กœ์ปฌ์—์„œ ์‹คํ–‰
    sqlite3 instance/finance_analysis.db .dump > backup.sql
    
  2. PostgreSQL๋กœ ๋ณต์› (๋ณต์žกํ•จ, ์ˆ˜๋™ ์ž‘์—… ํ•„์š”)

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

๋ฌธ์ œ ํ•ด๊ฒฐ

PostgreSQL ์—ฐ๊ฒฐ ์‹คํŒจ

  1. ์—ฐ๊ฒฐ ๋ฌธ์ž์—ด ํ™•์ธ:

    • ๋น„๋ฐ€๋ฒˆํ˜ธ์— ํŠน์ˆ˜๋ฌธ์ž๊ฐ€ ์žˆ์œผ๋ฉด URL ์ธ์ฝ”๋”ฉ ํ•„์š”
    • ์˜ˆ: @ โ†’ %40, # โ†’ %23
  2. ๋ฐฉํ™”๋ฒฝ ํ™•์ธ:

    • Supabase/Neon์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ชจ๋“  IP ํ—ˆ์šฉ
    • ํŠน์ • IP๋งŒ ํ—ˆ์šฉํ•˜๋„๋ก ์„ค์ •ํ–ˆ๋‹ค๋ฉด Hugging Face IP ์ถ”๊ฐ€
  3. ๋กœ๊ทธ ํ™•์ธ:

    • Hugging Face Spaces > Logs ํƒญ
    • [๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค] PostgreSQL ์—ฐ๊ฒฐ ์‹คํŒจ: ... ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€ ํ™•์ธ

์—ฌ์ „ํžˆ SQLite ์‚ฌ์šฉ ์ค‘

  1. ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ํ™•์ธ:

    • Settings > Repository secrets์—์„œ DATABASE_URL ์กด์žฌ ํ™•์ธ
    • ๊ฐ’์ด ์˜ฌ๋ฐ”๋ฅธ์ง€ ํ™•์ธ (๋น„๋ฐ€๋ฒˆํ˜ธ ํฌํ•จ)
  2. ์žฌ๋นŒ๋“œ ํ™•์ธ:

    • ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ๋ณ€๊ฒฝ ํ›„ Spaces๊ฐ€ ์žฌ๋นŒ๋“œ๋˜์—ˆ๋Š”์ง€ ํ™•์ธ
    • Settings > Build logs ํ™•์ธ
  3. ์ฝ”๋“œ ํ™•์ธ:

    • app/core/config.py์—์„œ DATABASE_URL ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ฝ๋Š”์ง€ ํ™•์ธ
    • (์ด๋ฏธ ๊ตฌํ˜„๋˜์–ด ์žˆ์Œ)

ํ™•์ธ ์ฒดํฌ๋ฆฌ์ŠคํŠธ

PostgreSQL ์ „ํ™˜ ํ›„ ๋‹ค์Œ์„ ํ™•์ธํ•˜์„ธ์š”:

  • /api/admin/database/status์—์„œ type: "PostgreSQL" ํ™•์ธ
  • connected: true ํ™•์ธ
  • Gemini API ํ‚ค ์ €์žฅ ํ›„ config_count ์ฆ๊ฐ€ ํ™•์ธ
  • ์ปจํ…Œ์ด๋„ˆ ์žฌ์‹œ์ž‘ ํ›„์—๋„ ๋ฐ์ดํ„ฐ ์œ ์ง€ ํ™•์ธ

์ถ”๊ฐ€ ์ •๋ณด