게임 정보 관리
뒤끝을 활용하면 손쉽게 유저의 데이터를 관리할 수 있습니다.
뒤끝에서는 스키마를 정의한 테이블과 정의하지 않은 테이블, 두 가지 방식으로 테이블을 생성할 수 있으며
뒤끝 SDK를 활용해 뒤끝 서버와 통신하며 실제 게임 정보를 저장, 수정, 조회, 삭제할 수 있습니다.
관련 콘솔 가이드 : 뒤끝베이스 - 게임 정보 관리 - 테이블
관련 SDK 개발자 문서 : 게임 정보 관리 - 테이블 리스트 조회하기
스키마 유무에 따른 차이점
구분 | 스키마를 정의한 테이블 | 스키마를 정의하지 않은 테이블 |
---|---|---|
테이블 컬럼 확장 | 뒤끝 콘솔에서만 가능 | 클라이언트 & 뒤끝 콘솔에서 가능 |
클래스 삽입 | 지원하지 않음 | 클라이언트에서만 가능 |
기본값 설정 | 지원 | 지원하지 않음 |
쿼리문으로 검색 | 지원 | 지원 |
트랜잭션 | 지원 | 지원 |
연산자(Update와 동시에 연산) | 지원 | 지원 |
스키마 정의 테이블
- 사전에 정의한 컬럼만 삽입/수정이 가능합니다.
콘솔에서 테이블을 생성할 때 테이블을 이루는 컬럼을 모두 선언한 후 사용이 가능한 테이블입니다.
사전에 콘솔에서 정의하지 않은 컬럼들의 삽입/수정을 시도할 경우 모두 실패하게 됩니다. - 콘솔에서 테이블을 이루는 컬럼들의 기본값 설정이 가능합니다.
클라이언트에서는 테이블을 삽입하기만 해도 모든 컬럼이 기본값으로 초기화됩니다.
기본값으로 초기화하지 않고 각각의 값을 명시하여 삽입하는 것도 가능합니다.
스키마 미정의 테이블
기존에 뒤끝에서 지원하던 형태의 테이블입니다.
- 확장이 자유로운 noSql 형태의 테이블입니다.
콘솔에서 테이블을 생성한 후에는 클라이언트에서 어떤 형태의 컬럼을 삽입/수정하든 모두 성공하게 됩니다. - 테이블을 이루는 컬럼들과 기본값을 클라이언트에서 설정해야 합니다.
noSql 특성상 삽입/수정을 할 때 컬럼이 생성되기 때문에 클라이언트에서 이를 수행해야 합니다.
Public 테이블과, Private 테이블의 차이
테이블 | Read | Write |
---|---|---|
public 테이블 | 모든 게이머의 정보를 반환 | 자신의 테이블만 수정 가능(SDK 5.4.0 이상에서는 타인의 테이블도 수정 가능) |
private 테이블 | 자신의 테이블 정보만 반환 | 자신의 테이블만 수정 가능 |
SDK 5.4.0 미만에서는 타인의 퍼블릭 테이블을 수정할 수 없습니다.
트랜잭션 기능
트랜잭션이란 여러 개의 읽기 혹은 쓰기 작업을 한 번에 모두 수행하거나 아무것도 수행하지 않는 작업으로 그룹화하는 동기식 작업입니다.
작업은 원자 단위로 완료되므로 작업이 모두 성공하거나 모두 실패하게 됩니다.
즉 트랜잭션으로 묶인 작업들이 모두 성공할 시 성공으로 리턴하고, 작업들 중 일부가 실패할 시 모든 작업의 처리를 초기화하고 실패로 리턴합니다.
뒤끝에서는 읽기 혹은 쓰기를 최대 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;