넵 감사합니다!
혹시 뒤끝함수호출 이라는것이 DB 읽기, 쓰기, 닉네임으로 유저 정보 조회, 유저 랜덤 조회, 자신 유저 정보 조회 등등등… 모든 함수를 포함하여 말하는 것일까요??
프로젝트명: MiniRPG
해당 프로젝트 user_data 테이블의 data컬럼 참고해주세요.
프로젝트의 현재 저장방식이, 모든 데이터를 json 하나로 변경하여 통째로 저장하고 있습니다. (이하 ‘유저 데이터’)
초기에는 보안을 포기하고, 로컬 저장방식을 적극 사용하여 문제가 없었지만, 점점 자리가 잡혀가면서 자잘하게 서버에 저장하는일이 많아졌습니다.
그러다보니 저장할때 랙걸림, 데이터 읽고쓸때 무거움(많으면 100kb) 등이 문제가 되어, 정규화를 시키려고 하는 상황입니다. (마이그레이션 이라는 용어가 적절한지 모르겠습니다)
현재 너무 모든 데이터가 엉망으로 들어가있어서 순서대로 진행하려고 합니다.
첫번째로는, 닉테임 통일입니다. 닉네임을 명확히 해야 이후 뒤끝함수 호출시 편한점이 있어보였습니다. 현재 ‘유저 데이터’ 안에 닉네임이 저장되는 형식이고, 게임 시작시 특정 상황으로 인해 뒤끝닉네임과 유저 데이터의 닉네임이 다른 상황이 생겼습니다. 유저 데이터의 닉네임을 이용하여 적용해야 하기때문에(뒤끝 닉네임이 아니고) 우선 모든 유저데이터를 읽고 닉네임을 뽑아낸다음 뒤끝닉네임과 비교하여 다른유저들을 찾고, 수동으로 변경해주려고 했습니다. (수십명 정도로 예상합니다)
그 이후로는 중요하고, 자주 사용되는 항목에 대하여 정규화를 하려 합니다.
아이템테이블, 캐릭터테이블 등을 만들어 정규화 해보려고 하는데, 아직 서버 및 구조에 익숙치 않아 구상이 깔끔하진 않은 상태입니다. 아이템 획득, 제거시마다 row를 추가하거나 제거하는 방향도 생각해보았지만, 게임데이터를 discrete하게 저장을 하기 때문에, 유저당 list형태의 row 하나를 가지고, 사용해야할까 하고 있습니다. (아직 제가 list, map, 등의 타입을 사용해보지 않아서 테스트가 필요할 듯 합니다)
질문드린 타이밍은 첫번째항목 닉네임 통일 구현중, 질문드린 에러가 발생한 상황입니다. user_data테이블의 모든 유저데이터를 읽는것이 호출이 많이 불렸나 봅니다.
(위 내용들이 유저가 로그인하고 저장할때 직접 유저기기에서 호출되도록 할 수도 있지만, 좀 더 깔끔하게 처리하고 싶었습니다.)