본문 바로가기

NoSQL/Cassandra

Apache Cassandra 란?

Apache Cassandra 란?

Cassandra는 간단하게 설명하면 분산형 오픈소스 NoSQL Database입니다. 

Cassandra는 여러 데이터 센터와 클라우드에서 대량의 구조화 된 데이터, 반 구조화 된 데이터 및 비정형 데이터를 관리하는 데 적합합니다.

Cassandra는 최대 가용성 및 빠른 응답 시간을 위해 설계된 다이나믹한 데이터 모델과 함께 SPOF가 없는 많은 상용 서버에서 지속적인 가용성, 선형 확장 성 및 운영 단순성을 제공합니다.

2016년 11월 27일 기분으로 최신버전은 3.9 version 입니다.


Cassandra는 어떻게 동작하는가?

Cassandra is a partitioned row store database

Cassandra의 아키텍쳐는 여러 Datacenter에 있는 여러 node에 인증된 유저들에 한해서만 연결을 허용하고 CQL 언어를 써서 데이터에 접근합니다.

CQL은 SQL과 유사하게 사용합니다. 가장 일반적인 방법으로 cassandra는 cqlsh이라는 CQL Shell을 사용합니다.

CQL을 사용하면서 keyspace, table을 생성하고 insert 및 query를 테이블에 실행하고 더 많은 것을 할 수 있습니다.

CQL는 Cassandra 2.2버전 이후에 사용이 가능합니다. 그래픽툴을 사용하고 싶다면 DataStax에서 제공하는 DataStax DevCenter를 이용하면 됩니다.

Automatic data distribution

Cassandra는 ring 또는 database cluster 안에서 참여한 모든 노드들 사이에 자동으로 데이터 분산을 하게끔 제공합니다.

기본적으로 노드들 사이에서 분산이 되기 때문에 관리자나 개발자가 데이터분산을 위해서 따로 프래그래밍을 할 필요가 없습니다.

Built-in and customizable replication

Cassandra는 또한 사용자 마음대로 Ring 구조 안에 있는 node들에 대해서 replication을 지정할 수 있게끔 되어 있습니다.

이 말은 하나 또는 여러개의 복제본을 사용자의 마음대로 여러 데이터 센터에 둘 수도 있고 데이터 센터별로 copy의 개수를 다르게 할 수도 있는 것 입니다.

예를들어 A이라는 Data Center에는 1개의 복제본을, B라는 Data Center에는 2개의 복제본을 둘 수 있다는 것이죠.

Cassandra suplies linear scalability

Cassandra는 선형적인 분산을 제공합니다. 이것은 online 상태에서 새로운 node를 추가함으로써 용량이 쉽게 추가 될 수 있다는 것입니다.

예를 들어, 2개의 노드가 100,000 TPS(Transaction per Seconds)를 운용할 수 있다면 4개의 노드는 200,000 TPS, 8개는 400,000 TPS가 가능할 것입니다.

이는 아주 단편적인 예시이며, replica의 개수에 따라 해당 TPS가 나오지 않을 수 있습니다.

Cassandra는 RDB(관계형 데이터베이스)와 어떻게 다른가?

Cassandra는 P2P(peer to peer) 통신을 가지는 분산형 데이터베이스로 설계되었습니다.

가장 좋은 예로, 쿼리는 테이블당 하나여야 합니다. 이것이 가능하게끔 만들기 위해 데이터는 비정규화되어집니다.

이러한 이유로, Table들의 사이에 Join이라는 개념이 존재하지 않습니다. client-side에서 join이 가능할수는 있습니다.

그렇다면 NoSQL은 무엇인가?

NoSQL은 가장 일반적으로 "Not Only SQL"이라고 불립니다. 관계형, SQL, Database와는 다른 스토리지의 방법을 사용한다는 것입니다.

NoSQL Database들의 많은 다른 타입들이 있습니다. 그래서 직접적으로 비교를 하는 것이 유용하지 않습니다.

NoSQL Engine들은 그래서 서비스의 특성에 맞게끔 사용해야합니다.

오늘날 Database 관리자들은 여러 가지들 언어나 데이터베이스에 대해서 친숙해야하며 RDBMS뿐만 아니라 NoSQL Databases 들에 대해서도 잘 알아야 합니다.


참조

http://docs.datastax.com/en/cassandra/3.x/cassandra/cassandraAbout.html

'NoSQL > Cassandra' 카테고리의 다른 글

Cassandra version 3.7 install on AWS Ubuntu 16.04  (0) 2016.12.04
Requirements for Cassandra on AWS  (0) 2016.11.27
Key Components for Configuring Cassandra  (0) 2016.11.27