> ## Documentation Index
> Fetch the complete documentation index at: https://docs.ale.run/llms.txt
> Use this file to discover all available pages before exploring further.

# 데이터베이스

> `ale`에서 데이터베이스를 배포하고, 배포된 DB와 **다른 서비스와의 통신** 및 DB 관리 도구로 **TCP연결**하는 방법을 다룹니다.

<Info>
  `ale`은 Redis, PostgreSQL, MariaDB 등의 DB를 기본앱으로 제공하고 있습니다. 기본앱 이외의 DB를 사용하려는 경우 [플러그인 설치](/ko/plugins) 또는 [플러그인 개발](/ko/plugins)로 직접 추가할 수 있습니다.
</Info>

<Warning>
  배포한 데이터베이스를 중지하거나 재배포할 경우 데이터가 보존되지만, **데이터베이스 서비스 삭제 시 데이터도 영구적으로 제거됩니다.**
</Warning>

***

## 데이터베이스 배포하기

<Frame>
  <img className="block rounded-md" src="https://files.cloudtype.io/ale-docs/developers/images/07_01.png" />
</Frame>

> 대시보드의 <Icon icon="circle-plus" iconType="solid" size={15} color="2396F1" /> 또는 `⌘ + K` 로 생성되는 배포창에서, 배포할 **database**를 선택한 후 표시되는 설정 필드값을 입력하세요.

<AccordionGroup>
  <Accordion title="기본 설정값">
    <Frame>
      <img className="block rounded-md" src="https://files.cloudtype.io/ale-docs/developers/images/07_02.png" />
    </Frame>

    > 버전, Root Password 등의 설정값을 정할 수 있습니다.

    <Info>
      서비스 별로 표시되는 **기본 설정값** 항목이 다릅니다. 사용하려는 목적에 맞게 알맞은 값을 입력해주세요.
    </Info>
  </Accordion>

  <Accordion title="더 많은 옵션">
    <Frame>
      <img className="block rounded-md" src="https://files.cloudtype.io/ale-docs/developers/images/07_03.png" />
    </Frame>

    > 데이터베이스 이름, Timezone 설정 등, 추가적인 설정값을 입력할 수 있습니다.

    <Info>
      서비스 별로 표시되는 **더 많은 옵션**의 항목이 다릅니다. 사용하려는 목적에 맞게 알맞은 값을 입력해주세요.
    </Info>
  </Accordion>

  <Accordion title="성능(리소스) 설정과 배포">
    <Frame>
      <img className="block rounded-md" src="https://files.cloudtype.io/ale-docs/developers/images/07_04.png" />
    </Frame>

    * **리소스 유형** : [온디맨드와 스팟 리소스](/ko/developers/resource#on-demand-spot) 중 선택

    * **CPU** : 서비스가 사용할 vCPU 리소스의 최대값을 설정하며, '최소 vCPU' 선택 시 0.1 vCPU 사용

    * **메모리** : 서비스가 사용할 메모리 리소스의 최대값을 설정

    * **디스크** : 데이터베이스가 차지할 수 있는 디스크의 용량 설정

    * **배포** : `배포하기` 클릭
  </Accordion>
</AccordionGroup>

<Info>
  리소스 제한으로 배포할 수 없는 경우 [스페이스 및 리소스 관리 페이지](/ko/operations/spaces#%EB%A6%AC%EC%86%8C%EC%8A%A4-%EB%B6%80%EC%97%AC%ED%95%98%EA%B8%B0)를 참고해 스페이스에 리소스를 추가하세요.
</Info>

<Tip>
  Root Password 미설정 시, 자동생성된 Password를 [배포환경 설정탭의 시크릿 항목](/ko/developers/database#root-password-%EC%A1%B0%ED%9A%8C)에서 조회할 수 있습니다.
</Tip>

## 다른 서비스와의 통신

<Frame>
  <img className="block rounded-md" src="https://files.cloudtype.io/ale-docs/developers/images/07_06.png" />
</Frame>

> 다른 서비스와 통신하기 위한 **접속정보(호스트 네임 : 포트번호)는 서비스 상세페이지의 리소스 탭에서 조회**할 수 있습니다.

### 같은 배포환경 내 서비스

<Frame>
  <img className="block rounded-md" src="https://files.cloudtype.io/ale-docs/developers/images/07_05.png" />
</Frame>

> 같은 화면에 있는 서비스 사이에는 내부 연결 주소인 **서비스 이름과 포트번호로 통신**할 수 있습니다.

<Info>
  같은 화면에 있는 서비스는 같은 배포환경에 속합니다. 배포환경 별로 격리된 네트워크가 구성되기 때문에 방화벽 규칙 적용이 필요없고, 통신 지연 현상이 최소화됩니다.
</Info>

<Tip>
  `ale`의 작업단위인 스페이스, 프로젝트, **배포환경**, 서비스에 관한 내용은 [배포환경 페이지](/ko/developers/environment)를 참고하세요.
</Tip>

### 다른 배포환경 또는 외부 서비스

<Frame>
  <img className="block rounded-md" src="https://files.cloudtype.io/ale-docs/developers/images/07_07.png" />
</Frame>

> 서비스 상세페이지 **리소스탭의 인그레스 주소(호스트네임 : 포트번호)로** 다른 배포환경 또는 외부의 서비스와 통신할 수 있습니다. 이 경우 TCP 외부 접속을 허용하도록 설정해야합니다.

<AccordionGroup>
  <Accordion title="TCP 외부 접속 허용" defaultOpen={true}>
    <Frame>
      <img className="block rounded-md" src="https://files.cloudtype.io/ale-docs/developers/images/03_11.png" />
    </Frame>

    > 연결하려는 데이터베이스가 속한 배포환경의 설정탭에서 TCP 외부접속을 허용할 수 있습니다.

    <Tip>
      TCP 접속 허용 설정은 배포환경 단위로 가능하며, 설정한 배포환경에 속한 서비스 전체에 적용됩니다. 서비스 단위의 개별 설정은 불가합니다.
    </Tip>
  </Accordion>
</AccordionGroup>

### DB 관리 툴

> [인그레스 주소](/ko/developers/database#2-2)를 사용해 로컬 컴퓨터의 관리툴로 데이터베이스에 TCP 접속할 수 있습니다.

<AccordionGroup>
  <Accordion title="MariaDB - MySQL Workbench">
    <Frame>
      <img className="block rounded-md" src="https://files.cloudtype.io/ale-docs/developers/images/07_08.png" />
    </Frame>

    > 접속정보를 입력한 후, 이어지는 화면에서 배포시 설정한 Root Password를 입력하세요.

    <Info>
      [MySQL Workbench Download](https://dev.mysql.com/downloads/workbench/)
    </Info>
  </Accordion>

  <Accordion title="PostgreSQL - pgAdmin">
    <Frame>
      <img className="block rounded-md" src="https://files.cloudtype.io/ale-docs/developers/images/07_10.png" />
    </Frame>

    > Connection 탭에서 접속정보와 배포할 때 설정한 Username(기본값 **root**), Root Password를 입력하세요.

    <Info>
      [pgAdmin Download](https://www.pgadmin.org/download/)
    </Info>
  </Accordion>

  <Accordion title="MongoDB - MongoDB Compass">
    <Frame>
      <img className="block rounded-md" src="https://files.cloudtype.io/ale-docs/developers/images/07_11.png" />
    </Frame>

    > `New Connection` 버튼 클릭 후, **Advanced Connection Options** 하단부의 General 탭에서 **포트번호까지 포함한 호스트네임**을 Host 필드에 입력하세요.

    <Frame>
      <img className="block rounded-md" src="https://files.cloudtype.io/ale-docs/developers/images/07_12.png" />
    </Frame>

    > Authentication 탭에서 배포할 때 설정한 Username(기본값 **admin**), Root Password를 입력하세요.

    <Info>
      [MongoDB Compass Download](https://www.mongodb.com/try/download/compass)
    </Info>
  </Accordion>

  <Accordion title="Redis - Redis Insight">
    <Frame>
      <img className="block rounded-md" src="https://files.cloudtype.io/ale-docs/developers/images/07_13.png" />
    </Frame>

    > `Add Redis Database` 버튼 클릭 후, 접속정보를 입력해주세요.

    <Info>
      [Redis Insignt Download](https://redis.io/insight/)
    </Info>
  </Accordion>
</AccordionGroup>

<Tip>
  DB관리 툴과 데이터베이스를 연결하려면 [TCP 외부접속을 허용하도록 설정해야합니다.](/ko/developers/database#tcp)
</Tip>

## 데이터베이스 관리

### 리소스 변경

<Frame>
  <img className="block rounded-md" src="https://files.cloudtype.io/ale-docs/developers/images/07_14.png" />
</Frame>

> 서비스 상세페이지 설정화면의 배포 설정 항목에서 디스크, CPU 등의 리소스를 변경하고 `배포하기` 버튼으로 재배포하면 변경된 리소스가 적용됩니다.

<Info>
  재배포 시 기존의 데이터는 유지됩니다.
</Info>

### Root Password 조회

<Frame>
  <img className="block rounded-md" src="https://files.cloudtype.io/ale-docs/developers/images/07_16.png" />
</Frame>

> 배포환경 설정탭의 **시크릿**항목에서 배포과정에서 설정한 Root Password 값을 조회할 수 있습니다.

### 데이터베이스 삭제

<Frame>
  <img className="block rounded-md" src="https://files.cloudtype.io/ale-docs/developers/images/07_15.png" />
</Frame>

> 서비스 상세페이지 설정탭 하단부의 `서비스 삭제하기` 버튼으로 데이터베이스를 삭제할 수 있습니다.

<Warning>
  데이터베이스 삭제 시 해당 서비스를 통해 디스크에 저장된 데이터가 영구적으로 제거됩니다.
</Warning>
