TIL 56일차 NoSQL

shleecloud·2021년 10월 19일
0

Codestates

목록 보기
57/95
post-custom-banner

들어가며

DB가 마무리됐다. 더이상 DB 수업은 없다. 시간은 촉박한데 배워야될 것은 많아서 몇일씩 해야되는 내용을 하루만에 후루룩 끝내버린 느낌이다. 어떤건지 알려줬으니 이제 알아서 해라. 엔지니어의 야수성을 일깨우는 수업이다. 현업에 가면 절대 떠먹여주지 않는다. 필요하면 알아서 사냥해서 구해야 된다.

NoSQL 첫 느낌

말로만 듣던 NoSQL을 실제로 조작해보니 느슨한 데이터 관리가 어떤건지 확실하게 알게됐다. 명령어에서 솔루션의 철학이 느껴졌다. 예를들어, 값을 수정할 때 해당하는 필드가 없으면 에러를 내는게 아니라 그 필드에 값을 넣어버린다. '잘못 넣은 값도 사용자의 의지이며 우린 바로 수행할 수 있다.' 라고 주장한다. 오오.. 좋은.. 건가? 스키마 변경도 다운타임이 필요없다.

그 외에 쿼리 조작이나 데이터 저장 등 모든 부분에서 객체와 배열을 사용한다. 심플하긴한데.. 내 생각으로는 지나치게 심플함을 추구하다보니 조작 가독성이 떨어진다고 느꼈다. 아직 관계형 쿼리 매운맛을 못봐서 그런가? NoSQL은 괄호가 엄격하게 적용되니까 정신없었다.

사용자 친화 JSON과 시스템 친화 BSON으로 구분은 인상적이었다. 효율적인 부분은 확실히 챙겨간다.
클라우드에 최적화 수평 확장과 빠른 개발을 위한 느슨한 데이터 구성까지 빠름을 추구하는 현대의 개발을 위한 좋은 속성들이다. 비록 오늘 수업은 하루밖에 안했지만 추가로 공부하고 싶어졌다. 마음에 들었어.

아래 링크에서 좋은 정보들이 많았다.
SQL vs NoSQL 비교하기
poiemaweb / MongoDB의 기본 개념

MongoDB 용어

NoSQL(MongoDB)은 SQL과 용어가 많이 달라서 햇갈렸다. 이건 꼭 정리해야된다.

RDB(MySQL)MongoDB
DatabaseDatabase
TableCollection
Tuple / RowDocument or BSON document
ColumnField
Table JoinEmbedded Documents & Linking
Primary KeyPrimary Key (_id)

쿼리문의 차이도 있다. 난 SQL이 더 쉬워보인다. 🤣

RDB(MySQL)MongoDB
Insert
insert into users ("name", "city") values("lee", "seoul")db.users.insert({ name: "lee", city: "seoul" })
Select
select * from users where name="lee"db.users.find({ name: "lee" })
Update
update users set city="busan" where name="lee"db.users.update({ name: "lee" }, { $set: { city: "busan" }})
Delete
delete from users where name="lee"db.users.remove({ name: "lee" })

NoSQL

  • NoSQL의 장점 및 특징에 대해서 이해 할 수 있다.
  • MongoDB의 도큐먼트(Document)와 컬렉션(Collection)에 대해 이해할 수 있다.
    • JSON과 BSON의 차이점을 이해하고, 도큐먼트를 가져오거나 내보낼 수 있다.
  • MongoDB의 Atlas에 대해 이해할 수 있다
    • 클러스터(Cluster)와 레플리카 세트(Replica set)에 대해 이해할 수 있다.
    • Atlas를 GUI(Graphical User Interface)와 shell 쿼리문으로 사용할 수 있다.
  • MongoDB에서 CRUD를 할 수 있다.
    • Insert(C), Find(R), Update(U), Delete(D)에 대한 쿼리문을 작성 할 수 있다.
    • 연산자와 프로젝션(Projection)을 사용 할 수 있다.
    • 배열과 서브 도큐먼트를 쿼리할 수 있다.
  • Aggregation Framework를 사용하여 aggregate 명령어로 쿼리할 수 있다.
    • $match, $project, $group 연산자를 사용할 수 있다.
profile
블로그 옮겼습니다. https://shlee.cloud
post-custom-banner

0개의 댓글