NoSQL 은 "SQL No!!!" 이런 뜻이 아니라 "Not only SQL" 의 줄임말이라고 합니다. SQL 을 안 쓰겠다는 것이 아니라 여러 유형의 데이터베이스를 사용하는 DBMS 를 뜻한다고 하네요. 1970년대 아직 인터넷도 없던 그 시절에 등장한 관계형 데이터베이스가 여전히 주류를 이루고 있지만, 꼭 SQL 이 아니더라도 데이터를 저장할 수 있는 다른 방법들이 있다는 것이죠.
MySQL 로 SQL 을 배워나갔다면 MongoDB 로 NoSQL 에 대해 배워나가는 중입니다. 다만 ORM 에서 녹여내지 못한 것들이 발목을 잡으면서 오늘 공부에도 좀 영향을 받은 것 같아 주말동안 미진한 부분들을 할 수 있는 만큼 따라잡아볼 생각입니다.
MongoDB는 JSON 과 BSON(Binary JSON) 을 활용해 Document 로 데이터를 저장합니다. JSON 의 형태가 읽기 쉽고 개발자 친화적인 형태이지만, 다른 한편으로는 텍스트 형식이기 때문에 파싱이 느리고 메모리 사용이 비효율적이라는 문제가 있다고 하는데요. BSON 을 활용해 JSON 의 장점을 가져가면서도 컴퓨터가 빠르게 읽을 수 있는 형태로 데이터를 저장하게 되었다고 이해할 수 있겠습니다.
MongoDB 를 공부하기 위해 무료로 계정을 오픈할 수 있고, 연습을 위해 필요한 샘플 데이터베이스들을 받아올 수 있습니다. 다만 데이터를 받아와 저장하고 구성하는데 조금 시간이 걸리는 편이더라구요. 여러 다양한 유형의 샘플 데이터를 제공하고 있으니 관심이 있으시다면 다음의 문서를 참고해 샘플 데이터를 활용해보시면 좋겠습니다.
MongoDB 를 배우다 보니 $ 가 자주 등장하는데요. 연산자를 사용할 때 $[연산자]
이런 식으로 표현하곤 합니다. JavaScript 에서 두 값이 같을 때 ===
를 사용한다면 MongoDB 에서는 $eq
를 활용하는 식이죠.
연산자에 대한 더 자세한 정보 및 연산자의 종류들은 다음의 공식 문서 링크를 통해 확인해보실 수 있습니다.
그 외에도 $ 의 또 다른 사용법이 있는데요. 바로 필드의 값을 참조하는 것입니다. $필드_이름
과 같은 형태로 사용하면 필드의 값을 변수처럼 비교할 수 있게 되죠. 기본적인 CRUD 를 익히는 데도 벅차 아직 공식 문서에서 어떻게 찾아볼 수 있는지는 확인하지 못했습니다. 이 부분은 추후에 확인하게 되면 업데이트를 할 생각입니다.
섹션 3 넘어오면서부터 난이도가 상승했다는 느낌을 받기는 했는데, 데이터베이스는 진짜...미진한 부분들을 돌아보는 주말을 보내야겠습니다.