동일한 데이터에 대해 쓰기량/읽기량이 현저하게 다른데요

고객님의 문의에 답변하는 직원은 고객 여러분의 가족 중 한 사람일 수 있습니다.
고객의 언어폭력(비하, 조롱, 욕설, 협박, 성희롱 등)으로부터 직원을 보호하기 위해
관련 법에 따라 수사기관에 필요한 조치를 요구할 수 있으며, 형법에 의해 처벌 대상이 될 수 있습니다.

커뮤니티 이용 정책에 위배되는 게시물을 작성할 경우, 별도 안내 없이 게시물 삭제 또는 커뮤니티 이용이 제한될 수 있습니다.

문의 응대 : 평일 오전 10시 ~ 오후 6시
문의를 남기실 경우 다음 항목을 작성해 주세요.
정보가 부족하거나 응대시간 외 문의하는 경우 확인 및 답변이 지연될 수 있습니다.

  • 뒤끝 SDK 버전 : 5.15.2
  • 프로젝트명 : SSA
  • 스테이터스 코드 :
  • 에러 코드 :
  • 에러 메시지 :

안녕하세요 뒤끝을 가지고 인벤토리를 구현하려고 하고 있습니다
비스키마 테이블을 하나 만들고 거기에

public class Equip
{
    public long equipID;
    
    public long equipBaseID;
    public int baseLevel = 1;

    public long uniqueID = -1;

    public string equipName;
    public string equipDesc;

    public EquipPart equipSlot;

    public long ownerID = -1;

    public ItemModOptionKey baseOptKey = ItemModOptionKey.NotSet;
    public float baseOptValue = 0.0f;

    public List<ItemModOptionKey> prefixMods;
    public List<float> prefixModValues;
    
    public List<ItemModOptionKey> suffixMods;    
    public List<float> suffixModValues;

    public ItemRank itemRank = ItemRank.Normal;
}

List을
Param tparam = new Param();
var equipList = PlayerDataManager.GetFullEquipInventory();//대충 60개정도
tparam.Add(“inventoryInfo”, equipList);
이런식으로 넣어서 InsertData를 했는데 WriteCapacity가 28이라고 쓰인걸 확인했습니다
그리고 그 데이터를 그대로 다시 GetMyData로 받아왔는데 이번엔 ReadCapacity가 2밖에 되지 않는걸 보았습니다
해당 단위가 처리량이 맞나요? 읽기/쓰기 처리량이 원래 저렇게 현저하게 차이가 나나요?
아니면 Insert할때 압축이 제대로 이뤄지지 않은건가요?
Write를 훨씬 더 많이 하게될거같은데 처리량을 가능한 줄이고 싶습니다
어떻게 해야될까요?

안녕하세요 개발자님,
우선 현재 콘솔 조회 미동의로 인해 저장된 데이터 정보나 일부 상세 정보를 확인할 수 없어 답변에 제한이 있는 점 양해 부탁드립니다. 보다 자세한 확인이 필요하신 경우 콘솔 조회 동의 후 재문의 부탁드립니다.

현재 저장 방식에서, 각 데이터의 항목 정보가 컬럼에 모두 포함되어 저장되면서 단일 row 데이터의 크기가 불필요하게 커지는 것으로 보입니다.
특히, inventory 구현과 같은 경우 많은 데이터가 저장되면서, 반복적으로 나타나는 equipID, equipBaseID와 같은 값들이 데이터 크기와 처리량을 불필요하게 증가시키는 원인이 됩니다.

이를 해결하기 위해, 아래 예시와 같이 데이터를 간소화하여 저장하는 방식을 추천드립니다.
이 방법은 저장 데이터 크기를 줄여 처리량을 감소시킬 수 있습니다.

  • 저장 방식

    {
        "inventory1": {
            "atk": 10,
            "def": 0,
            "equip": false,
            "itemname": "단검"
        },
        "inventory2": {
            "atk": 0,
            "def": 5,
            "equip": true,
            "itemname": "누더기옷"
        },
        "inventory3": {
            "atk": 0,
            "def": 10,
            "equip": false,
            "itemname": "작은방패"
        }
    }
    
  • 간소화된 저장 방식

    {
        "inventory1" : "10|0|false|단검",
        "inventory2" : "0|5|true|누더기옷",
        "inventory3" : "0|10|false|작은방패"
    }
    

위와 같은 방법으로 중복 데이터를 제거하고, key-value 구조를 간소화하여 row 크기를 줄일 수 있고,
이를 통해 DB 처리량을 감소시킬 수 있습니다.
또한 데이터가 구조적으로 단순화되어, 특정 속성에 대한 처리가 더 쉬워질 수 있습니다.

단, 간소화된 방식은 데이터를 저장하거나 읽을 때 추가적인 파싱 작업이 필요할 수 있으므로, 처리 로직에 이를 반영해야 합니다.
또한, 데이터 구조가 복잡해지거나 속성이 추가되는 경우를 대비하여 확장성을 고려하는 것도 중요하니 이점 참고하여 주시면 감사하겠습니다.

답변 감사합니다
콘솔 조회 동의 설정 하였습니다 'SSA’프로젝트의 'TEST_TABLE_NOTCOMP’테이블입니다
제가 질문을 조금 이상하게 했나보네요
Insert를 할때의 writecapacity는 28이었는데
Insert한 내용을 그대로 다시 Get했을때의 readCapacity는 2밖에 안돼서
왜 이러한 차이가 나는지 궁금해서 질문하였습니다
원래 동일한 데이터라도 Write와 Read가 이러한 차이가 나는지 궁금해서요

콘솔 조회 동의 감사합니다.
상세 정보 확인하여 안내드릴 수 있도록 하겠습니다.
확인까지 다소 시일이 소요될 수 있는 점 양해 부탁드립니다.