유저 데이터를 json 변환해서 디비에 저장하고 있었는데
이게 단순 유저 설정값 뿐만 아니라 이런저런 개인화 로직에 쓰이는 다양한 자료들도 저장하고 있고
밸류값으로 타임스탬프, 집합, 내가 만든 클래스도 있는데
json으로 변환해서 넣었다뺐다 하려니 좀 피곤하더라고
그래서 json 버리고
파이썬 딕셔너리를 pickle로 바이너리 변환한 후
이 blob을 디비에 저장해서
다양한 자료형을 가진 user state를 스냅샷 찍듯이 딱딱 넣었다뺐다 하면서 json의 한계를 극복하려고 하는데
근데 이걸 남들이 쓰는 경우를 본적이 없어
내가 놓친 무슨 문제가 있을까?
남들이 안 쓰는건 다 이유가 있다고 생각하는데
내가 너무 혼자만의 생각으로 빠져있는건 아닌가 싶어서
portability라던가, 디비에서 눈으로 값을 확인할 수 없다거나 하는 단점들은 인식하고 있어
그 모든 질문들 이전에 그런식이면 굳이 관계형디비를 쓸 이유가 있어?
다른 모든 도메인 데이터들은 기본적으로 관계형이고 필요한 자료들만 저렇게 저장하고 있지
파이썬 오브젝트를 json으로 저장하든 바이너리로 저장하든 무슨 차이가 있는거임? 정확히 json의 어떤 한계를 극복한다는건지 이해가안뎀. 어짜피 직렬화/역직렬화 하는 과정은 똑같은거 아닌가?
json 밸류에서 지원하지 않는 타임스탬프, 집합, 내가만든 클래스 등 다양한 자료형을 편하게 쓰고 싶어서
아 파이썬은 그런데이터타입들은 기본적으로 직렬화를 안해주는구나
그냥 뭐든 상식선에서 생각을 해라. json의 한계를 극복하기 위해 -> json말고 용도에 맞는 다른걸 쓰면 되니까. (극단적으로 xml류 포멧) 남들이 안쓰는 이유->쓰는지 안쓰는지 사실상 알 수 없음. 다만 안쓰는 걸 알 수 있는 곳은 공식적인 것 까진 아니라도 호환성을 충족시키기 위해 최소스펙이 호환되는 다른걸 쓰겠지.
https://blog.naver.com/imays/221461537682
ㅇㅅㅇ
피클은 하위호환 제대로 보장 안하지 않나
json 등은 결국 직렬화 포맷이니까 DB에 저장할땐 다 풀어서 column으로 저장하는게 좋을듯
만약 json 구조를 가져가야 한다면 rdb 를 버리고 json 을 지원하는 mongoDB 을 고려해보셈
user state 마이그레이션 해야되면 지옥인거지머
글고 blob은 DB에 쓰는거 아님. row 크기도 예측할 수 없어서 성능에 안좋고, 진짜 만약 blob 박고싶으면 pickle같은 특정언어에 특화 + backward compatibility 유지하기 어려운 직렬화 포맷보다는 protobuf 같은 범용적인ㄱ거 쓰는게남
바이너리는 s3같은 오브젝트 스토리지 써라
그렇게도 종종 쓰이니까 걱정 x
pickle이란건 모르겠지만, RDB를 기반으로 너처럼 쓰기도 함. 단점은 너도 알지 않나? uset state라는 거대한 데이터가 하나의 컬럼에 있어서 쿼리의 재료로 쓸 수 없다. uset state를 저장하는 테이블 혹은 컬럼은 오로지 데이터 저장용으로만 쓰일뿐(사실상 파일을 DB로 쓰는거랑 같음).
걍 대부분 지원하는 JSON 기능을 쓰지