그것은 바로


NoSQL에서


컬렉션, 문서, 필드 데이터 개념을 대체 왜 쓰는 것인지... 임.


( SQL은 DB가 뭔지, 테이블이 뭔지, 컬럼이 뭔지 ㅈㄴ 직관적임 따로 배워야 할 필요가 없을 정도 )




오늘 배운 내용을 간단히 정리해 보겠음


컬렉션: 서류 정리로 비유하면 '폴더'와 비슷한 위치

채팅방 DB를 만든다고 치면 rooms, users 등의 기본 분류와 잘 어울리겠음.


문서: 서류 정리로 비유하자면 말 그대로 '문서'와 비슷한 위치

신입사원 이력서를 받는다고 생각해 보셈. 사용자별로 각기 다른 문서에 저장되어 있겠지?

딱 그거임ㅇㅇ '이력서'라는 컬렉션 안에 '김철수'라는 문서가 들어가도록 하면 됨.


필드 데이터: '문서'라는 개념에 해당한다고 보기 힘든 자질구레한 데이타들

중첩될 수 있기 때문에 "시발 이렇게 중첩할거면 도대체 컬렉션이랑 문서랑 차이가 뭐임 걍 JSON 덩어리 주제에" 라고 할수 있는데

컬렉션은 '폴더'고 문서는 'id 등으로 명백히 구별되는 인스턴스'임



그러면 문서 안에 컬렉션이 들어가있는 개좆같은 상황은 무엇이냐


말했다시피 컬렉션은 폴더고 문서는 id 등으로 명백히 구별되는 인스턴스임.


그 인스턴스 안에 또다시 컬렉션이 나오는 건 사실 으찌보면 자연스러운 일 아닐까?


조금만 생각해봐도, 문서 다음에 바로 다시 문서가 나온다든지 하는 건 부자연스럽단 사실을 알 수 있음.


문서는 일종의 '인스턴스'이기 때문에, 반드시 상위 개념인 '폴더'를 요구하기 때문임.



그리고 이로 인해 대부분의 NoSQL 서비스에선 중대한 차이점이 생기는데


대충 JSON째로 불러오는 DB의 경우... 상위 노드를 조회하면 하위 노드까지 싸그리 다 딸려나오느라 최적화가 개좆되는 수가 있는데


컬렉션-문서-필드 데이타 모델을 사용하는 경우에는 보통 정확한 '문서'를 조회해야지 그 안의 데이타들을 같이 조회하게 만들어둠



윈도우에서 야동폴더 연다고 그 안의 다른 모든 야동들까지 한번에 다 불러오지는 않잖아??


그러니 어찌보면 생JSON과 컬렉션-문서-필드데이타 사이에는 으마으마한 차이가 있다고 할수 잇겟음



NoSQL에 익숙하신 현업 분들은 


이새끼 뭐 이렇게 당연한 애기를 좆같이도 길게 써놧어... 라고.. 할수도 잇갓는데


그냥 오늘 배운 내용을 시원스럽게 정리해둔 것일 뿐이니.. 너무 괘념치들 마샤요잉


이잉...~!!