티스토리 뷰

개발자료

[DB] 카산드라 NoSQL DBMS

임다솜 임다솜 2016.11.23 14:36


회사에서 프로젝트를 시작하여 DB를 설계하고 있었습니다. 저는 SQL DBMS만 다뤄보았습니다. 그래서 MySQL을 사용할 작정으로 테이블을 설계하였습니다. 그런데 아무리 생각해보아도 이건 단순 Row 형태로 다뤄졌을 때 효율적이지 못하다고 판단되었습니다. 그래서 혹시나 해서 생각난 것이 NoSQL 이었습니다. 검색을 해보니 유명한 것이 몇개 있더라구요.

그 중에 안정성이 있고 요즘 HOT하다고 하는 카산드라에 대해 알아보았습니다. 한번도 다뤄본 적이 없어 프로젝트에 투입하여 개발을 진행할 수 있는지 조사를 좀 더 해보아야 하겠지만, 접근하기 쉬운 분야라면 사용하고 싶은 마음이 큽니다^^




카산드라

카산드라는 페이스북에 의해 개발되었고 아파치 오픈소스로 공개된 NoSQL DBMS입니다.

JVM기반이며 분산처리를 하기 때문에 대용량 데이터에도 고가용성과 확장성을 지니고 있는 DBMS라고 합니다.

NoSQL 중 많이 나오는 MongoDB 같은 경우는 아직 불안정한 면이 많아 큰 규모의 서비스에서는 사용하는 경우가 드물지만, 카산드라는 페이스북, 트위터에서도 사용하는 DBMS라고 합니다.




특징

느린 Read, 빠른 Write

대용량으로 확장하기 좋은 DBMS

용이한 칼럼 변경 (Schema-less)




데이터모델

카산드라는 기존 RDBMS처럼 Row 중심이 아닌 Key-Value 중심으로 데이터를 관리하게 됩니다. 자세하게는 Column Family라는 형태의 데이터 모델을 사용하고 있습니다.




Column Family

Column Family가 어떤 데이터 모델인지 간단하게 알고 가는 것이 좋겠습니다.

많이 사용하는 RDBMS는 대부분 테이블 생성시 Column을 정의하게 되고 Column에 해당하는 열은 같은 의미를 가지는 데이터가 됩니다. 그러나 카산드라는 열이 같은 의미를 가지지 않습니다. 왜냐하면 각 Row마다 Column이 다르게 구성될 수 있기 때문입니다. 이것은 카산드라가 Static Column Family와 Dynamic Column Family라는 방식을 통해 다양하게 Column을 구성하게 할 수 있도록 하기 때문입니다.(이미지4)

또한 Schema-less이기 때문에 추가하고 싶은 Column이 있으면 그냥 추가하면 된다고 합니다.



이미지1. Cassandra 데이터 저장 형태



이미지출처 : https://usergrid.apache.org/docs/data-storage/data-store-dbms.html



이미지2. 기존 RDBMS 데이터 저장 형태



이미지출처 : https://usergrid.apache.org/docs/data-storage/data-store-dbms.html



이미지3. Column Family의 모습





이미지4. 카산드라에서 사용하는 Static Column Family와 Dynamic Column Familiy



이미지출처 : https://www.packtpub.com/books/content/quick-start-%E2%80%93-creating-your-first-java-application




결론

아직 NoSQL의 성능과 안정성에 대해 잘 모르고 불확실한 부분이 많아서 사용하기 어려울 듯 싶습니다. 빨리 DB설계를 마쳐야 해서 빠르게 고민을 해보아야겠네요. NoSQL 대부분이 빅데이터 처리에 용이한 특징들이 많아서 간단한 앱서비스에 사용하는 것이 과연 적합한지가 고민이네요. 하지만 시도해볼만한 가치는 충분히 있는 것 같습니다.









댓글
댓글쓰기 폼
공지사항
Total
41,169
Today
69
Yesterday
59
링크
TAG
more
«   2018/07   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        
글 보관함