Sharding의 기능

mongoDB 2016. 9. 3. 21:03
반응형
SMALL

이번시간에는 데이터베이스의 Sharding에 대해 포스팅해보려고 한다. Sharding에 대한 개념 자체는 크게 어려운 건 아니지만 알아두면 굉장히 유용한 개념이다.



데이터베이스에서의 Sharding이라 하면 관계형데이터베이스를 여러개로 분할해서 데이터를 저장하는 기능을 뜻한다. 현시대에는 사람들의 사용이 증가하면서 엄청난양의 데이터를 저장해야하기 때문에 자연스럽게 Sharding의 기능이 많이 필요하게 되었다. sharding의 방법은 수평적 sharding과 수직적 sharding이 있다.




Figure 1 Vertical Sharding




Figure 2 Horizontal Sharding


<사진출저: 조대협의 블로그>


Sharding의 기능이 여러모로 좋긴하다. 데이터베이스를 한군데에 몰리게 되면 요즘같이 사용자도 많은 시대에 서버과부하가 걸릴 확률도 매우 높고 만약 그 DB가 다운되어서 정지된다면 모든게 다 중단될 것이다. 하지만 이렇게 Sharding방법으로 여러개의 데이터를 나누어서 저장하는 방식은 굉장히 혁신적이었다. 하지만 이것도 모두 장점만이 있는건 아니다. 단점도 존재하게 되는데 직접 Application에서 구현할 경우 Key에 따라서 DB Instance를 선택적으로 고를 수 있는 구조를 가져야 하며, 특히 다른 Shard간의 데이터 Join등은 불가능하기 때문에, 구현을 할때에는 잘 고려해서 설계해야한다. 그리고 Sharding기능을 쓰게되면 Application의 복잡도가 올라가기 때문에 여러가지 요소들을 잘 고려해서 설계를 해야한다. 또한 하나의 트랜잭션에는 두개의 Sharding이 한번에 접근 할 수가 없기때문에 이 또한 잘 반영해서 설계해야한다.




반응형
LIST

'mongoDB' 카테고리의 다른 글

mongodb Replica Set 실습  (0) 2016.09.08
왜 Arbiter인가?  (0) 2016.09.03
mongodb Replica Set Election  (0) 2016.09.03
mongodb Replica Set 알아보기  (0) 2016.09.03
mongodb Replica Set의 필요성  (0) 2016.09.02
블로그 이미지

만년필석사

,