의견.png

"카산드라"의 두 판 사이의 차이

위키원
이동: 둘러보기, 검색
잔글
4번째 줄: 4번째 줄:
 
'''카산드라'''(Cassandra)는 대용량 데이터 처리가 가능한 비관계형 분산 [[데이터베이스 관리 시스템]](DBMS)이다. [[빅데이터]] 처리를 위한 [[노에스큐엘]](NoSQL)의 일종이다. [[페이스북]](Facebook)이 개발했고 [[오픈소스]]로 공개했다. 정식 명칭은 '''아파치 카산드라'''(Apache Cassandra)이고, [[아파치재단]]에서 관리하고 있다.
 
'''카산드라'''(Cassandra)는 대용량 데이터 처리가 가능한 비관계형 분산 [[데이터베이스 관리 시스템]](DBMS)이다. [[빅데이터]] 처리를 위한 [[노에스큐엘]](NoSQL)의 일종이다. [[페이스북]](Facebook)이 개발했고 [[오픈소스]]로 공개했다. 정식 명칭은 '''아파치 카산드라'''(Apache Cassandra)이고, [[아파치재단]]에서 관리하고 있다.
  
 +
== 개요 ==
 +
아파치 카산드라(Apache Cassandra)는 자유-오픈 소스 분산형 [[노에스큐엘]](NoSQL) [[데이터베이스 관리 시스템]](DBMS)의 하나로, 단일 장애점 없이 고성능을 제공하면서 수많은 서버 간의 대용량의 데이터를 관리하기 위해 설계되었다. 카산드라는 여러 데이터센터에 걸쳐 클러스터를 지원하며 마스터리스(masterless) 비동기 레플리케이션을 통해 모든 클라이언트에 대한 낮은 레이턴시 운영을 허용한다. 카산드라는 또한 성능 면에서 높은 가치를 보인다. 2012년, NoSQL 시스템을 연구하는 토론토 대학교 연구원들은 "확장성 면에서 실험 가운데 분명한 승자가 있다. 카산드라는 모든 실험의 최대 노드 수에서 가장 높은 처리량을 성취한다."고 결론을 내렸으며 그럼에도 불구하고 "높은 쓰기 및 읽기 레이턴시의 대가가 있다"고 이야기하였다.<ref name='가'>아파치 카산드라 위키백과 - https://ko.wikipedia.org/wiki/%EC%95%84%ED%8C%8C%EC%B9%98_%EC%B9%B4%EC%82%B0%EB%93%9C%EB%9D%BC </ref>
 +
 +
== 등장배경 ==
 +
카산드라는 아마존의 다이나모DB(DynamoDB) 설계에 참여한 아비나쉬 락슈만(Avinash Lakshman)과 페이스북의 프라샨트 말릭(Prashant Malik)이 최초로 만들었다. 아마존 다이나모DB의 분산 디자인과 구글 빅테이블의 데이터 모델을 기반으로 설계되었다. 2008년 카산드라는 페이스북에서 떠나 아파치 인큐베이터 프로젝트로 출발했으며, 2010년에 이르러 탑 레벨 아파치 프로젝트로 인정받는다.<ref name='가'>아파치 카산드라 위키백과 - https://ko.wikipedia.org/wiki/%EC%95%84%ED%8C%8C%EC%B9%98_%EC%B9%B4%EC%82%B0%EB%93%9C%EB%9D%BC </ref>
 +
 +
== 특징 ==
 +
카산드라(Cassandra)는 확장성(scalability)과 고가용성(high availability)에 최적화된 대표적인 분산형 데이터 저장소(Data storage)이다. 일관된 해싱(Consistent hashing)을 이용한 링(Ring) 구조와 가십 [[프로토콜]](Gossip protocol)을 구현하였으며, 때문에 각 노드 장비들의 추가, 제거 등이 자유롭고, 데이터센터까지 고려 할 수 있는 [[데이터]] 복제 정책을 사용하여 안정성 측면에서 많은 장점을 가지고 있다. Cassandra를 이용하면 쉐어링(Sharding)을 고려해야 할 필요도 없고 마스터 슬래이브(Master Slave) 와 같은 정책이 없이도 장애에 대응할 수 있으며, 필요에 따라 장비들을 늘리고 줄이는 데 큰 비용이 들지 않는다. 물론 그렇다고 해서 Cassandra가 완벽한 솔루션은 아니다. 당연한 이야기지만 모든 일에는 균형(trade off)이 있듯이 저러한 강력한 기능들이 구현됨으로써 반대로 수많은 단점들 역시 발생한다. Cassandra는 연결(Join)이나 거래(Transaction)를 지원하지 않고, 인덱스(Index) 등의 검색을 위한 기능도 매우 단출하다. 게다가 Cassandra의 구조상 [[관계 데이터베이스 관리 시스템]](RDBMS)와 같은 Paging을 구현하는 것이 힘들고 키스페이스(Keyspace)(RDBMS의 DB와 같은)나 테이블(Table) 등을 과도하게 생성할 경우 메모리 오버플로어(Memory Overflow)가 발생할 수 있음을 고려하여야 한다. 따라서 Cassandra가 기존의 RDBMS들의 완벽한 대체품이라고 할 수는 없으므로, 개발하게 될 제품의 기능과 특징에 따라 Cassandra를 사용할 것인지 RDBMS를 사용할 것인지를 신중히 결정하여야 한다.<ref> 엄세진, 〈[https://meetup.toast.com/posts/58 Apache Cassandra 톺아보기 1편]〉, 《토스트 밋업》, 2016-01-18</ref>
 +
 +
===데이터 구조===
 +
[[파일:카산드라 데이터 구조.png|썸네일|400픽셀|카산드라 데이터 구조]]
 +
[[파일:카산드라 링.png|썸네일|400픽셀|카산드라 링]]
 +
[[파일:카산드라 링에 저장되는 데이터.png|썸네일|400픽셀|카산드라 링에 저장되는 데이터]]
 +
[[파일:카산드라 데이터 테이블로 변경.png|썸네일|400픽셀|카산드라 데이터 테이블로 변경]]
 +
[[파일:CQL(Class Query Language)의 테이블 형태.png|썸네일|400픽셀|CQL(Class Query Language)의 테이블 형태]]
 +
 +
 +
===CQL key===
 +
 +
{{각주}}
 +
 +
== 참고자료 ==
 +
* 아파치 카산드라 위키백과 - https://ko.wikipedia.org/wiki/%EC%95%84%ED%8C%8C%EC%B9%98_%EC%B9%B4%EC%82%B0%EB%93%9C%EB%9D%BC
 +
* 엄세진, 〈[https://meetup.toast.com/posts/58 Apache Cassandra 톺아보기 1편]〉, 《토스트 밋업》, 2016-01-18
 
== 같이 보기 ==
 
== 같이 보기 ==
 
* [[데이터베이스 관리 시스템]](DBMS)
 
* [[데이터베이스 관리 시스템]](DBMS)

2020년 8월 6일 (목) 17:20 판

카산드라(Cassandra)
카산드라(Cassandra)

카산드라(Cassandra)는 대용량 데이터 처리가 가능한 비관계형 분산 데이터베이스 관리 시스템(DBMS)이다. 빅데이터 처리를 위한 노에스큐엘(NoSQL)의 일종이다. 페이스북(Facebook)이 개발했고 오픈소스로 공개했다. 정식 명칭은 아파치 카산드라(Apache Cassandra)이고, 아파치재단에서 관리하고 있다.

개요

아파치 카산드라(Apache Cassandra)는 자유-오픈 소스 분산형 노에스큐엘(NoSQL) 데이터베이스 관리 시스템(DBMS)의 하나로, 단일 장애점 없이 고성능을 제공하면서 수많은 서버 간의 대용량의 데이터를 관리하기 위해 설계되었다. 카산드라는 여러 데이터센터에 걸쳐 클러스터를 지원하며 마스터리스(masterless) 비동기 레플리케이션을 통해 모든 클라이언트에 대한 낮은 레이턴시 운영을 허용한다. 카산드라는 또한 성능 면에서 높은 가치를 보인다. 2012년, NoSQL 시스템을 연구하는 토론토 대학교 연구원들은 "확장성 면에서 실험 가운데 분명한 승자가 있다. 카산드라는 모든 실험의 최대 노드 수에서 가장 높은 처리량을 성취한다."고 결론을 내렸으며 그럼에도 불구하고 "높은 쓰기 및 읽기 레이턴시의 대가가 있다"고 이야기하였다.[1]

등장배경

카산드라는 아마존의 다이나모DB(DynamoDB) 설계에 참여한 아비나쉬 락슈만(Avinash Lakshman)과 페이스북의 프라샨트 말릭(Prashant Malik)이 최초로 만들었다. 아마존 다이나모DB의 분산 디자인과 구글 빅테이블의 데이터 모델을 기반으로 설계되었다. 2008년 카산드라는 페이스북에서 떠나 아파치 인큐베이터 프로젝트로 출발했으며, 2010년에 이르러 탑 레벨 아파치 프로젝트로 인정받는다.[1]

특징

카산드라(Cassandra)는 확장성(scalability)과 고가용성(high availability)에 최적화된 대표적인 분산형 데이터 저장소(Data storage)이다. 일관된 해싱(Consistent hashing)을 이용한 링(Ring) 구조와 가십 프로토콜(Gossip protocol)을 구현하였으며, 때문에 각 노드 장비들의 추가, 제거 등이 자유롭고, 데이터센터까지 고려 할 수 있는 데이터 복제 정책을 사용하여 안정성 측면에서 많은 장점을 가지고 있다. Cassandra를 이용하면 쉐어링(Sharding)을 고려해야 할 필요도 없고 마스터 슬래이브(Master Slave) 와 같은 정책이 없이도 장애에 대응할 수 있으며, 필요에 따라 장비들을 늘리고 줄이는 데 큰 비용이 들지 않는다. 물론 그렇다고 해서 Cassandra가 완벽한 솔루션은 아니다. 당연한 이야기지만 모든 일에는 균형(trade off)이 있듯이 저러한 강력한 기능들이 구현됨으로써 반대로 수많은 단점들 역시 발생한다. Cassandra는 연결(Join)이나 거래(Transaction)를 지원하지 않고, 인덱스(Index) 등의 검색을 위한 기능도 매우 단출하다. 게다가 Cassandra의 구조상 관계 데이터베이스 관리 시스템(RDBMS)와 같은 Paging을 구현하는 것이 힘들고 키스페이스(Keyspace)(RDBMS의 DB와 같은)나 테이블(Table) 등을 과도하게 생성할 경우 메모리 오버플로어(Memory Overflow)가 발생할 수 있음을 고려하여야 한다. 따라서 Cassandra가 기존의 RDBMS들의 완벽한 대체품이라고 할 수는 없으므로, 개발하게 될 제품의 기능과 특징에 따라 Cassandra를 사용할 것인지 RDBMS를 사용할 것인지를 신중히 결정하여야 한다.[2]

데이터 구조

카산드라 데이터 구조
카산드라 링
카산드라 링에 저장되는 데이터
카산드라 데이터 테이블로 변경
CQL(Class Query Language)의 테이블 형태


CQL key

각주

  1. 1.0 1.1 아파치 카산드라 위키백과 - https://ko.wikipedia.org/wiki/%EC%95%84%ED%8C%8C%EC%B9%98_%EC%B9%B4%EC%82%B0%EB%93%9C%EB%9D%BC
  2. 엄세진, 〈Apache Cassandra 톺아보기 1편〉, 《토스트 밋업》, 2016-01-18

참고자료

같이 보기


  의견.png 이 카산드라 문서는 데이터에 관한 토막글입니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 이 문서의 내용을 채워주세요.