테이블 설계

뒤끝에서는 스키마를 정의한 테이블과 정의하지 않은 테이블 두가지 방식으로 테이블을 생성할 수 있습니다.

  • 테이블의 스키마 유무에 따라 각각 지원하는 함수가 다르니 반드시 개발자 문서를 확인후 테이블 형태에 맞는 함수를 사용해주세요.
  • 스키마 정의 테이블은 SDK 4.4.0 이상 버전에서만 지원합니다.
  • DB 최적화 가이드를 참고하면 DB를 설계할 때 도움이 됩니다.
    • DB요금을 효율적으로 관리할 수 있습니다.
    • 데이터의 읽기/쓰기 시간이 줄어들 수 있습니다.

스키마 유무에 따른 차이점

구분스키마를 정의한 테이블스키마를 정의하지 않은 테이블
테이블 컬럼 확장뒤끝 콘솔에서만 가능클라이언트에서만 가능
클래스 삽입지원하지 않음클라이언트에서만 가능
기본값 설정지원지원하지 않음
쿼리문 선언지원지원하지 않음
트랜잭션지원지원
우편지원하지 않음 (추후 지원 예정)지원
연산자 (Update와 동시에 연산)지원하지 않음 (추후 지원 예정)지원

스키마 미정의 테이블

기존에 뒤끝에서 지원하던 형태의 테이블입니다.

  • 확장이 자유로운 noSql 형태의 테이블입니다.
    콘솔에서 테이블을 생성한 후에는 클라이언트에서 어떤 형태의 컬럼을 삽입/수정하든 모두 성공하게 됩니다.
  • 테이블을 이루는 컬럼들과 기본값을 클라이언트에서 설정해야 합니다.
    noSql 특성 상 삽입/수정을 할 때 컬럼이 생성되기 때문에 클라이언트에서 이를 수행해야 합니다.

스키마 정의 테이블

  • 사전에 정의한 컬럼만 삽입/수정이 가능합니다.
    콘솔에서 테이블을 생성할 때 테이블을 이루는 컬럼을 모두 선언한 후 사용이 가능한 테이블입니다.
    사전에 콘솔에서 정의하지 않은 컬럼의 삽입/수정을 시도할 경우 모두 실패하게 됩니다.
  • 콘솔에서 테이블을 이루는 컬럼들의 기본값 설정이 가능합니다.
    클라이언트에서는 테이블을 삽입 하기만 해도 모든 컬럼이 기본값으로 초기화 됩니다.
    기본값으로 초기화 하지 않고 각각의 값을 명시하여 삽입하는 것도 가능합니다.

Public 테이블과, Private 테이블의 차이

  • Public 테이블 : 모든 게이머의 정보를 반환(타인의 정보는 보안이슈로 수정이 불가능 하고 Read만 가능)
  • Private 테이블 : 테이블의 로그인된 해당 게이머의 정보만 반환

서버에 데이터를 저장할 때 인터넷이 연결이 안된 상태일 경우

statusCode로 성공/실패를 확인하고, 실패한 경우 이후에 다시 시도하는 복구 로직을 추가하는 것이 좋습니다.

  • 실패 alert을 띄운 후 인터넷 연결이 될 때까지 게임 진행이 불가능하도록 차단 (다시 시도해서 성공하기 전까지)
  • 데이터를 메모리에 올려두고, 그대로 진행 -> 다음 시도 때 한번에 처리

게임정보의 저장최대량

하나의 row( column들의 집합 ) 에서 400KB까지 저장이 가능합니다.
예를들어 column의 이름이 shirt-color이고 이 값이 R이면 12 Byte를 저장한 것입니다.

  • 하나의 row( column들의 집합 )이 400KB를 넘는 경우
    statusCode : 413
    errorCode : ServerErrorException
    message : request entity too large