오랜만에 스터디를 시작했다. 주제를 RDBMS 튜닝으로 정했지만 데이터를 구하기가 만만치 않아서 유행이 지나긴 했지만 NoSQL에서 가장 유명한 몽고 디비와 인메모리 디비인 레디스를 주제로 잡았다.
레디스는 개발에 직접 적용해본 친구가 있어서 교제없이 진행하기로 하고 몽고디비는 MongoDBinAction 책을 선정해서 진행하기로 하였다.
3장까지는 개별적으로 공부하기로 정하고 진행하였다.
블로그는 개별적으로 진행하며 팀에서 작성하는 위키는 아래와 같다.
https://github.com/KWSStudy/Mongodb/wiki
위의 위키를 참조하면 몽고디비란 무엇인지 대략적으로 알 수 있다. 이 블로그에는 실습 위주의 포스팅을 하겠다.
2016-11-21일 기준으로 작성하기 때문에 이글을 보는 날짜가 기간이 많이 지났다면 다른 블로그를 참고하길...
MongoDBinAction은 기본적으로 MongoDB와 루비드라이버 자바스크립트 쉘로 예제를 작성하는데 나는 자바 계열이기 때문에 자바로도 구현 해 볼 예정이다.
MongoDB는 자바스크립트를 알고 있는 개발자라면 매우 친숙하게 다가온다.
MongoDB는 도큐먼트라는 개념이 있는데 자바스크립트의 오브젝트라고 보면 된다. {} 이안에는 키 벨류 형태의 오브젝트들이 들어가는데
벨류는 문자열이 될 수도 오브젝트가 될 수도 배열이 될 수도 있다. 이 도큐먼트가 RDBMS의 하나의 ROW라고 보면 된다.
하지만 RDBMS와 비교하면 오히려 복잡할 수 있으니 NoSQL이라는 새로운 형태라고 받아들이는 것이 편할 수 있다.
MongoDB는 스키마가 없다. 그렇기 때문에 도큐먼트를 일정하게 넣지 않아도 오류가 발생하지 않는다. 이것을 보고 처음에는 충격을 받았다.
도큐먼트가 무슨타입인지 어떤 관계를 가지고 있는지를 알 수가 없다. 하지만 생각을 바꿔보자.. 스키마가 없고 쿼리가 없는 데이터베이스.. 어떠한 경우에 사용하면 좋을까?
MongoDBinAction책에는 스키마가 없다는 것은 몇가지 장점이 있다고 적혀있다.
가장 좋은 장점으로 데이터베이스가 아닌 애플리케이션이 데이터 구조를 정한다는 것이다. DDD와 반대인 어플리케이션이 주도 개발이 가능하다. 그렇기 때문에 데이터 구조가 빈번히 변경되는 개발 초기 단계에서 개발 속도를 단축시켜준다. 그렇기 때문에 애자일 개발방법론과도 아주 궁합이 좋은 데이터 베이스이다. 하지만 요즘 인메모리 RDBMS들을 많이 사용하면서 매력을 잃어가고 있다.
이외에도 책에는 몽고 디비와 관련된 핵심 기능들도 책을 시작하는데 이 부분은 너무나 정리가 잘 된 블로그들이 많기 때문에 생략하고 다음 포스팅부터 실습에 들어가겠다. 우선 몽고디비 설치와 자바 연동을 하는 개발환경 구축부터 시작할 예정이다.
'Programming > 과거포스팅' 카테고리의 다른 글
Jhipster intelij 설정하기 - jhipster 설치 (0) | 2016.12.08 |
---|---|
MongoDB 설치하기 (0) | 2016.11.22 |
인터페이스의 역할 (0) | 2016.04.26 |
프록시 패턴(Proxy Patterns) - 객체 접근을 제어하기 (0) | 2016.03.28 |
스테이트(State) 패턴 - 상태의 객체화 (0) | 2016.03.28 |