프로젝트 : 데이터베이스(Database)

Wed, 10 Dec 2025 11:51:41 GMT

## 개요 Database 페이지는 프로젝트의 데이터베이스 테이블을 생성하고 관리하는 기능을 제공합니다. 테이블 스키마 설계, 인덱스 관리, 권한 설정, 데이터 조회, API 문서 확인 등 데이터베이스 관련 모든 작업을 수행할 수 있습니다. **경로**: `/org/{orgSlug}/project/{projectSlug}/database` ## 주요 기능 ### 1. 환경 선택 **표시 정보**: - 환경별 탭 (dev, staging, production 등) - 각 환경의 배포 상태 배지 (active, ready, creating, failed) - 클라우드 제공자 및 리전 정보 - 클러스터 정보 (staging/production 환경만 표시) **동작**: - 환경 선택 시 해당 환경의 테이블 목록 자동 갱신 - 첫 진입 시 active 상태의 환경 자동 선택 ### 2. 테이블 목록 **표시 정보**: - 테이블명 - 배포 상태 (deployed, deploying, updating, failed) - 행 수 (1K, 1M 등으로 포맷팅) - 마지막 수정일 **기능**: - 테이블 검색 (테이블명으로 필터링) - 새로고침 버튼 - 테이블 클릭 시 상세 페이지 이동 - 테이블별 액션 메뉴: - "테이블 보기": 상세 페이지 이동 - "테이블 삭제": 삭제 다이얼로그 (아직 구현 중) ### 3. 테이블 생성 **시스템 필드** (자동 생성, 수정 불가): - `_id`: 고유 식별자 (String, 필수) - `createdBy`: 생성자 (String, 필수) - `createdAt`: 생성 시각 (Date, 필수) - `updatedAt`: 수정 시각 (Date, 필수) **사용자 정의 필드**: - 필드명: 문자로 시작, 문자/숫자/언더스코어만 사용 - 타입: String, Number, Boolean, Date, Array, Object, Mixed - 필수 여부 체크박스 - 여러 필드 추가 가능 **기본 권한** (자동 설정): - admin: 생성, 읽기, 수정, 삭제 모두 허용 - user: 생성, 읽기, 수정 허용 (삭제 불가) - self: 읽기, 수정 허용 (생성, 삭제 불가) - guest: 읽기만 허용 ## 하위 페이지 ### [tableName] 페이지 테이블 상세 페이지는 다음 탭으로 구성됩니다: ### 1. 데이터 탭 **기능**: - 테이블 레코드 조회 - 페이지네이션 (10/20/50/100행 선택 가능) - 컬럼별 정렬 (오름차순/내림차순) - 셀 데이터 복사 (클릭하여 클립보드 복사) - 긴 텍스트 자동 축약 (100자 이상) - 툴팁으로 전체 내용 확인 - 날짜/객체/배열 자동 포맷팅 **빈 상태**: - "데이터 없음" - 테이블에 레코드가 없을 때 - "데이터 로드 실패" - 에러 발생 시 재시도 버튼 제공 ### 2. 스키마 탭 **필드 관리**: - 현재 스키마 버전 표시 (예: v1, v2) - 필드 목록 테이블: - 필드명 - 타입 (아이콘과 함께 표시) - 필수 여부 (✓ 또는 -) - 고유 여부 (✓ 또는 -) - 기본값 (설정된 경우만 표시) **필드 작업** (시스템 필드 제외): - "필드 추가": 새 필드 정의 - "필드 수정": 기존 필드 변경 - "필드 삭제": 필드 제거 (확인 필요) **고급 옵션**: - 불변 필드 설정 - 최소/최대 길이 (문자열) - 최소/최대값 (숫자) **버전 관리**: - "이력" 버튼: 스키마 버전 히스토리 확인 - 이전 버전으로 롤백 기능 - 버전별 생성 시각 및 생성자 표시 **시스템 필드**: _id, createdBy, createdAt, updatedAt는 수정/삭제 불가 ### 3. 인덱스 탭 **인덱스 관리**: - 현재 인덱스 버전 표시 - 인덱스 목록: - 인덱스명 - 포함 필드 (ASC/DESC 표시) - 고유 인덱스 여부 - 희소 인덱스 여부 **인덱스 생성**: - 인덱스명 입력 - 여러 필드 선택 가능 (복합 인덱스) - 필드별 정렬 방향 선택 - 고유 인덱스 옵션: 중복 값 방지 (예: 이메일, 주문번호) - 희소 인덱스 옵션: 필드가 있는 레코드만 인덱싱 **버전 관리**: - 인덱스 변경 이력 확인 - 이전 버전으로 롤백 **시스템 인덱스**: _id_ 인덱스 및 시스템 필드 인덱스는 삭제 불가 ### 4. 권한 탭 **역할별 권한 관리**: - 제공되는 역할: admin, self, user, guest - CRUD 권한 설정: - 생성 (create) - 읽기 (read) - 수정 (update) - 삭제 (delete) **기본 권한 설정**: - **admin**: 모든 권한 (create, read, update, delete) - **self**: 개발자 테스트용 역할 - **user**: 생성, 읽기, 수정 권한 - **guest**: 읽기 권한만 **작업 흐름**: 1. 체크박스로 권한 변경 2. 변경 사항 경고 메시지 표시 3. "저장" 버튼으로 적용 또는 "재설정" 버튼으로 취소 4. 저장 완료 토스트 메시지 ※ Beta 버전에서는 역할 추가/삭제 기능은 제공되지 않습니다. ### 5. API 탭 **API 문서**: - 기본 URL 표시 및 복사 기능 - 인증 정보: - Authorization: Bearer 토큰 - X-Project-Id: 프로젝트 ID - X-Environment: 환경명 **엔드포인트 정보**: - HTTP 메서드 (GET, POST, PUT, DELETE) - 경로 - 요약 설명 - 파라미터 목록 (이름, 위치, 타입, 필수 여부) - 요청 본문 스키마 - 응답 상태 코드 및 예제 **코드 예제**: - cURL 명령어 (복사 가능) - JavaScript fetch 코드 (복사 가능) - 실제 프로젝트 ID와 환경이 포함된 실행 가능 예제 ## 사용 방법 ### 테이블 생성하기 1. Database 페이지에서 환경 선택 2. "테이블 생성" 버튼 클릭 3. 테이블명 입력 (소문자, 숫자, 언더스코어만) 4. 시스템 필드 확인 (자동 생성됨) 5. 사용자 정의 필드 추가: - "필드 추가" 버튼 클릭 - 필드명, 타입 선택 - 필수 여부 체크 6. "테이블 생성" 버튼으로 완료 ### 스키마 관리하기 1. 테이블 클릭하여 상세 페이지 진입 2. "스키마" 탭 선택 3. 필드 추가/수정/삭제: - 시스템 필드는 수정 불가 - 사용자 정의 필드만 관리 가능 4. 변경 사항은 자동으로 새 버전 생성 5. "이력" 버튼으로 이전 버전 확인 및 롤백 가능 ### 인덱스 추가하기 1. 테이블 상세 페이지 > "인덱스" 탭 2. "인덱스 추가" 버튼 클릭 3. 인덱스명 입력 4. 필드 선택 및 정렬 방향 지정 - 여러 필드 추가 가능 (복합 인덱스) - ASC (오름차순) 또는 DESC (내림차순) 5. 옵션 설정: - 고유: 중복 값 방지 - 희소: 필드가 있는 레코드만 인덱싱 6. "인덱스 생성" 버튼으로 완료 ### 권한 설정하기 1. 테이블 상세 페이지 > "권한" 탭 2. 역할별로 체크박스 변경 - 생성, 읽기, 수정, 삭제 권한 3. 변경 경고 메시지 확인 4. "저장" 버튼으로 적용 5. "재설정"으로 변경 취소 가능 ### API 문서 확인하기 1. 테이블 상세 페이지 > "API" 탭 2. 기본 URL 및 인증 정보 확인 3. 사용할 엔드포인트 클릭하여 펼치기 4. 탭 이동: - 파라미터: 요청 파라미터 확인 - 요청 본문: POST/PUT 요청 스키마 - 응답: 상태 코드별 응답 예제 - 예제: cURL 및 JavaScript 코드 5. 복사 버튼으로 코드 복사하여 사용 ### 데이터 조회하기 1. 테이블 상세 페이지 > "데이터" 탭 2. 테이블 헤더 클릭하여 정렬 3. 페이지네이션으로 행 수 조절 (10/20/50/100) 4. 셀 클릭하여 데이터 복사 5. 셀에 마우스 오버하여 전체 내용 확인 6. "새로고침" 버튼으로 최신 데이터 로드 ## 기술 참고사항 ### 데이터 타입 지원하는 필드 타입: - **String**: 문자열 - **Number**: 숫자 (double) - **Boolean**: 참/거짓 - **Date**: 날짜 및 시각 - **Array**: 배열 - **Object**: 객체 - **Mixed**: 혼합 타입 ### 스키마 버전 관리 - 스키마 변경 시 자동으로 새 버전 생성 - 현재 버전은 `isActive: true` 필드로 식별 - 롤백 시 선택한 버전을 기반으로 새 버전 생성 - 버전 번호는 자동 증가 ### 인덱스 성능 최적화 - **단일 인덱스**: 하나의 필드로 자주 검색할 때 - **복합 인덱스**: 여러 필드를 함께 검색할 때 (예: 이름 + 날짜) - **고유 인덱스**: 중복 방지가 필요한 필드 (예: 이메일) - **희소 인덱스**: 선택적 필드의 저장 공간 절약 ### 권한 모델 - 역할 기반 접근 제어 (RBAC) - 테이블별로 독립적인 권한 설정 - CRUD 작업별 세분화된 권한 제어 - 변경 사항은 명시적 저장 필요 ### API 인증 모든 API 요청에 다음 헤더 필요: ``` Authorization: Bearer X-Project-Id: X-Environment: ```