DB가 마무리됐다. 더이상 DB 수업은 없다. 시간은 촉박한데 배워야될 것은 많아서 몇일씩 해야되는 내용을 하루만에 후루룩 끝내버린 느낌이다. 어떤건지 알려줬으니 이제 알아서 해라. 엔지니어의 야수성을 일깨우는 수업이다. 현업에 가면 절대 떠먹여주지 않는다. 필요하면 알아서 사냥해서 구해야 된다.
말로만 듣던 NoSQL을 실제로 조작해보니 느슨한 데이터 관리가 어떤건지 확실하게 알게됐다. 명령어에서 솔루션의 철학이 느껴졌다. 예를들어, 값을 수정할 때 해당하는 필드가 없으면 에러를 내는게 아니라 그 필드에 값을 넣어버린다. '잘못 넣은 값도 사용자의 의지이며 우린 바로 수행할 수 있다.' 라고 주장한다. 오오.. 좋은.. 건가? 스키마 변경도 다운타임이 필요없다.
그 외에 쿼리 조작이나 데이터 저장 등 모든 부분에서 객체와 배열을 사용한다. 심플하긴한데.. 내 생각으로는 지나치게 심플함을 추구하다보니 조작 가독성이 떨어진다고 느꼈다. 아직 관계형 쿼리 매운맛을 못봐서 그런가? NoSQL은 괄호가 엄격하게 적용되니까 정신없었다.
사용자 친화 JSON과 시스템 친화 BSON으로 구분은 인상적이었다. 효율적인 부분은 확실히 챙겨간다.
클라우드에 최적화 수평 확장과 빠른 개발을 위한 느슨한 데이터 구성까지 빠름을 추구하는 현대의 개발을 위한 좋은 속성들이다. 비록 오늘 수업은 하루밖에 안했지만 추가로 공부하고 싶어졌다. 마음에 들었어.
아래 링크에서 좋은 정보들이 많았다.
SQL vs NoSQL 비교하기
poiemaweb / MongoDB의 기본 개념
NoSQL(MongoDB)은 SQL과 용어가 많이 달라서 햇갈렸다. 이건 꼭 정리해야된다.
RDB(MySQL) | MongoDB |
---|---|
Database | Database |
Table | Collection |
Tuple / Row | Document or BSON document |
Column | Field |
Table Join | Embedded Documents & Linking |
Primary Key | Primary 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" }) |