Sanity 데이터셋
Sanity 데이터셋
데이터셋(Dataset)은 Sanity 프로젝트 안에서 콘텐츠가 실제로 저장되는 그릇이에요. 프로젝트 하나가 여러 데이터셋을 가질 수 있고, 그래서 같은 프로젝트에서도 환경이나 용도에 따라 데이터를 나눠 관리할 수 있답니다. 이번 글에서는 데이터셋이 무엇인지, 접근 권한(ACL)을 포함해 어떻게 만들고 관리하는지, 그리고 여러 데이터셋을 나눠 쓰는 구조까지 차근차근 살펴볼게요.
데이터셋은 서로 다른 타입을 가질 수 있고 서로를 참조하는 JSON 문서들의 모음이에요. 쉽게 말해 모든 콘텐츠가 저장되는 "데이터베이스"가 데이터셋이라면, 문서의 타입들이 "테이블"이라고 볼 수 있어요. GROQ나 GraphQL을 쓰면 같은 데이터셋 안의 문서들은 언제든 쿼리하고 조인할 수 있지만, 데이터셋을 넘나드는 조인은 할 수 없답니다. 코드와 함께 천천히 따라오시면 금방 익숙해지실 거예요.
출처: 문서
본문
데이터셋의 개념
데이터셋은 서로 다른 타입을 가질 수 있고 서로를 참조하는 JSON 문서들의 모음입니다. 데이터셋을 모든 콘텐츠가 저장되는 "데이터베이스"라고 생각하면 되고, 문서의 타입들이 "테이블"을 구성한다고 볼 수 있습니다. GROQ나 GraphQL을 사용하면 같은 데이터셋 안의 문서들은 언제든지 쿼리하고 조인할 수 있지만, 데이터셋을 넘나드는 조인은 할 수 없습니다. 데이터셋의 대표적인 용도는 다음과 같습니다.
- 테스트, 스테이징, 프로덕션 같은 서로 다른 환경을 운영하기
- 모든 콘텐츠 타입에 걸친 현지화(localization)와 세분화
- 같은 사용자 접근 권한과 과금을 공유하되 용도가 다른 콘텐츠
https://<projectId>.api.sanity.io/v2021-06-07/data/query/<dataset>?query=*
어느 데이터셋을 사용할지는 클라이언트 라이브러리(클라이언트를 초기화할 때 설정)와 Sanity Studio(sanity.config.ts 또는 환경 변수로 설정)에서 지정할 수 있습니다.
API로 데이터셋 관리 (Dataset management)
데이터셋은 sanity 커맨드라인 도구를 사용해 만들고 관리할 수 있습니다. sanity dataset create <name>으로 만들고, sanity dataset list로 목록을 확인하세요. 데이터셋 관련 하위 명령어를 모두 보려면 sanity dataset을 실행하면 됩니다.
데이터셋은 프로젝트의 관리 콘솔(management console)의 "Datasets" 탭에서도 만들고 삭제할 수 있습니다.
데이터셋 이름은 1자에서 64자 사이여야 하며, 소문자(a-z), 숫자(0-9), 하이픈(-), 언더스코어(_)만 허용되고, 반드시 소문자나 숫자로 시작하고 끝나야 합니다.
비공개 데이터셋 (Private datasets)
이 기능은 유료 기능입니다. Growth 플랜에서 사용할 수 있어요.
비공개(Private) 데이터셋은 인증된 사용자만 접근할 수 있는 데이터를 만들 수 있게 해줍니다. 누구나 쿼리할 수 있는 공개 데이터셋과 달리, 비공개 데이터셋은 유효한 개인 또는 로봇 토큰이 있어야 데이터를 읽을 수 있습니다.
조직에 특화된 별도의 인증 계층 뒤에 비공개 데이터셋을 두고, 인증된 토큰으로 데이터를 제공하는 방식이 일반적입니다. 또한 App SDK와 함께 사용하면 Sanity 인증 사용자가 접근할 수 있는 내부 대시보드를 만들 수도 있어요.
[!WARNING] 데이터셋은 트라이얼 종료 시 공개로 되돌아갑니다. 트라이얼 계정 사용자의 경우 비공개 데이터셋은 트라이얼이 끝나면 공개로 되돌아갑니다. 예상치 못한 데이터 접근을 막으려면, 비공개 데이터셋을 지원하는 정식 플랜으로 업그레이드하세요.
비공개 데이터셋에 대한 인증되지 않은 요청
비공개 데이터셋에 대한 인증되지 않은 요청은 401이 아니라 요청한 형태의 빈 응답과 함께 HTTP 200을 반환합니다. 예를 들어 목록을 조회하는 쿼리는 빈 배열을 반환합니다.
비공개 데이터셋에 대한 쿼리가 결과를 반환하지 않으면, 데이터가 없다고 단정하기 전에 요청이 유효한 bearer 토큰을 보내고 있는지 먼저 확인하세요.
애드온 데이터셋 (Add-on datasets)
일부 기능은 자동으로 "애드온(add-on)" 데이터셋을 만들어 여러분의 데이터셋과 연결해줍니다. 이런 데이터셋은 무료이며 플랜의 데이터셋 한도에 포함되지 않습니다.
Comments "add-on" dataset for the production dataset
다른 데이터셋과 마찬가지로 관리할 수 있습니다. 댓글(comments)과 태스크(tasks) 구성에 대한 자세한 내용을 확인하세요. 두 기능 모두 무료 애드온 데이터셋을 만듭니다.
데이터셋 마이그레이션 (Dataset migration)
데이터셋에 콘텐츠를 내보내고(export) 가져올(import) 수 있으며, 문서에 대해 뮤테이션(mutations)과 패치(patches)를 수행할 수도 있습니다.
데이터셋 내보내기는 API 쿼터에 과금되며, Media Library에서 연결된 에셋을 포함해 데이터셋 안의 모든 에셋에 대한 바이너리를 포함합니다. CLI 명령어와 플래그, 아카이브에 포함되는 내용은 Exporting data에서 확인하세요.
고급 데이터셋 관리 (Advanced dataset management)
이 기능은 유료 기능입니다. 일부 Enterprise 플랜에서 사용할 수 있으며, 영업 문의로 자세히 알아볼 수 있습니다.
클라우드에서 직접 데이터셋 복사를 시작할 수 있고, 프로젝트의 코드를 바꾸지 않고도 데이터셋 사이를 전환(hot swap)할 수 있는 별칭(alias)을 만들 수 있습니다.