게임 정보 관리
뒤끝을 활용하면 손쉽게 유저의 데이터를 관리할 수 있습니다.
뒤끝에서는 스키마를 정의한 테이블과 정의하지 않은 테이블, 두 가지 방식으로 테이블을 생성할 수 있으며
뒤끝 SDK를 활용해 뒤끝 서버와 통신하며 실제 게임 정보를 저장, 수정, 조회, 삭제할 수 있습니다.
관련 콘솔 가이드 : 뒤끝베이스 - 게임 정보 관리 - 테이블
관련 SDK 개발자 문서 : 게임 정보 관리 - 테이블 리스트 조회하기
스키마 유무에 따른 차이점
| 구분 | 스키마를 정의한 테이블 | 스키마를 정의하지 않은 테이블 |
|---|---|---|
| 테이블 컬럼 확장 | 뒤끝 콘솔에서만 가능 | 클라이언트 & 뒤끝 콘솔에서 가능 |
| 압축데이터 컬럼 | 지원 | 미지원 |
| 클래스 삽입 | 지원하지 않음 | 클라이언트에서만 가능 |
| 기본값 설정 | 지원 | 지원하지 않음 |
| 쿼리문으로 검색 | 지원 | 지원 |
| 트랜잭션 | 지원 | 지원 |
| 연산자(Update와 동시에 연산) | 지원 | 지원 |
스키마 정의 테이블
- 사전에 정의한 컬럼만 삽입/수정이 가능합니다.
콘솔에서 테이블을 생성할 때 테이블을 이루는 컬럼을 모두 선언한 후 사용이 가능한 테이블입니다.
사전에 콘솔에서 정의하지 않은 컬럼들의 삽입/수정을 시도할 경우 모두 실패하게 됩니다. - 콘솔에서 테이블을 이루는 컬럼들의 기본값 설정이 가능합니다.
클라이언트에서는 테이블을 삽입하기만 해도 모든 컬럼이 기본값으로 초기화됩니다.
기본값으로 초기화하지 않고 각각의 값을 명시하여 삽입하는 것도 가능합니다. - 압축데이터 컬럼을 사용할 수 있습니다.
스키마 미정의 테이블
- 확장이 자유로운 noSql 형태의 테이블입니다.
콘솔에서 테이블을 생성한 후에는 클라이언트에서 어떤 형태의 컬럼을 삽입/수정하든 모두 성공하게 됩니다. - 테이블을 이루는 컬럼들과 기본값을 클라이언트에서 설정해야 합니다.
noSql 특성상 삽입/수정을 할 때 컬럼이 생성되기 때문에 클라이언트에서 이를 수행해야 합니다. - 압축데이터 컬럼은 사용이 불가합니다.
Public 테이블과, Private 테이블의 차이
| 테이블 | Read | Write |
|---|---|---|
| public 테이블 | 모든 게이머의 정보를 반환 | 모든 게이머의 테이블을 수정 가능 (SDK 5.4.0 미만은 자신의 테이블만 가능) |
| private 테이블 | 자신의 테이블 정보만 반환 | 자신의 테이블만 수정 가능 |
트랜잭션 기능
트랜잭션이란 여러 개의 읽기 혹은 쓰기 작업을 한 번에 모두 수행하거나 아무것도 수행하지 않는 작업으로 그룹화하는 동기식 작업입니다.
작업은 원자 단위로 완료되므로 작업이 모두 성공하거나 모두 실패하게 됩니다.
즉 트랜잭션으로 묶인 작업들이 모두 성공할 시 성공으로 리턴하고, 작업들 중 일부가 실패할 시 모든 작업의 처리를 초기화하고 실패로 리턴합니다.
뒤끝에서는 읽기 혹은 쓰기를 최대 10개로 묶어 트랜잭션 처리를 할 수 있습니다.
게임 정보의 저장 최대량
하나의 row(column들의 집합)에서 400KB까지 저장이 가능합니다.
예를 들어 column의 이름이 shirt-color이고 이 값이 R 이면 12 Byte를 저장한 것입니다.
- 하나의 row(column들의 집합)이 400KB를 넘는 경우
statusCode : 413
errorCode : ServerErrorException
message : request entity too large
최대로 한 번에 저장 가능한 컬럼의 갯수는 약 290개 입니다.
- 삽입하려는 컬럼의 갯수가 총 290개를 넘을 경우
statusCode : 400
errorCode : ValidationException
message : Invalid UpdateExpression: Expression size has exceeded the maximum allowed size;