라벨이 Cassandra인 게시물 표시

(Cassandra) 카산드라 설치

이미지
* 카산드라 설치 후 conf/cassandra.yaml에서 3가지 경로 설정. *conf/log4j-server.properties파일에서 로그가 쓰여지는 디렉토리 설정

(Cassandra) 카산드라 사용 사례

<대규모 배치> RDBMS는 단일머신에서 실행하기 쉽고, 더 친숙하다. 만일 자신의 프로젝트를 지원하는데 최소한 여러 노드가 필요하다고 생각한다면 카산드라가 적합할 것이다. 자신의 애플리케이션이 수십개의 노드가 필요하다고 예상한다면 카산드라가 더더욱 적합할 것이다. <대규모 쓰기, 통계, 분석> 애플리케이션을 읽기:쓰기 비율 관점에서 생각해보자. 카산드라는 쓰기 처리에 탁월한 처리량을 보여주도록 최적화 되어 있다. 초기 배포된 카산드라 제품은 주로 사용자 액티비티 업데이트, 소셜 네트워크 사용, 추천/리뷰 애플리케이션 통계를 저장하는데 쓰였다. 이런 작업은 업데이트가 단기간에 집중적으로 일어날 수 있는 탓에 예측 가능한 읽기 연산은 적지만, 쓰기는 엄청나게 많은 특징이 있으며, 매우 좋은 카산드라 사용 사례이다. 실제로 굉장히 많은 쓰레드가 대규모 쓰기를 하는 경우에도 높은 성능을 요하는, 애플리케이션의 부하처리 능력은 카산드라의 주요 특징중 하나이다. <지리적 분산> 지리적으로 분산되어 있는 데이터를 지원하는 능력이 뛰어나다. 다중 데이터 센터 간에 데이터를 복제하는 설정도 쉽게 할 수 있다. 전 세계적으로 배포되는 애플리케이션이 있다면 사용자와 근접한 데이터 센터에 데이터를 넣게 해서 성능 이점을 얻을 수 있으며,카산드라가 매우적합할 것이다. <진화하는 애플리케이션> 스키마 프리 데이터 모델을 사용하면 애플리케이션을 빠르게 배치하면서도 애플리케이션 변경 사항에 맞춰 데이터베이스를 관리하기가 쉬워진다.

(Cassandra) 카산드라?

1. 분산화와 집중화 카산드라는 분산형이므로 여러 머신에서 동작하지만, 사용자에게는 통합된 하나로 보인다. 카산드라는 단일노드로도 동작하지만 ,카산드라 운영의 장점을 깨달으려면 다중머신에서 운영해야 한다. 그래서 물리적으로 떨어져있는 데이터센터 간에도 단일 카산드라 클러스터를 운영할 수 있다. MySQL, 빅테이블과 같은 데이터 저장소를 확장하려면 일부 노드는 마스터로 설정해서 슬레이브로 설정한 다른노드를 조직화해야한다. 그러나 카산드라는 "비집중화"이므로 모든 노드가 같다. 그러므로 조직화 연산을 수행하는 마스터가 없다. 대신 카산드라는 P2P프로토콜이며 활성노드와 비활성 노드의 목록을 동기화하고 유지관리한다. 대다수 분산데이터 솔루션(RDBMS 클러스터 등)에서는 다중머신에 데이터를 복사하는 복제프로세스를 설정해야 한다. 즉, 데이터를 다중 머신에 복사해서 동시에 발생하는 요청을 처리하게 하고 성능을 개선한다. 일반적으로 복제프로세스는 마스터/슬레이브 관계를 통해서 이루어진다. 클러스터에서 한 서버는 마스터, 나머지는 슬레이브가 된다. 마스터는 데이터의 원본 역할을 하고, 슬레이브 노드와는 일방적인관계, 즉 사본을 동기화 하는 형태로만 동작한다. 만일 마스터노드에 장애가 발생하며 전체 데이터베이스가 위험에 처하게 된다.  그러므로 비집중화된 디자인은 카산드라 고가용성의 핵심이다. 참고로 MongoDB와 같은 NoSQL에도 마스터/슬레이브 구조가 있다. <비집중화의 두가지 장점> 1. 마스터/슬레이브보다 사용하기 간단하고 서비스 중단을 피하게 해준다. 2. 모든노드가 같으므로 마스터/슬레이브 저장방식보다 분산형 저장이 유지하거나 운영하기가 더쉽다. 2. 탄력적인 확장성 확장성(Scalability)는 약간의 성능저하를 동반하지만, 계속해서 더 많은 요청을 처리할 수 있는 시스템의 아키텍처 특징이다. 가장 쉬운 방법은 단순히 기존 머신에 더 많은 메모리와 하드웨어 용량을 추가해서 확장성을 얻는 수직확장...

(Cassandra) 카산드라란?

이미지
<카산드라 데이터 모델> 카산드라는 Key-Value형태의 NoSQL로서 칼럼패밀리 형태의 데이터모델을 활용한다. 참고로 몽고디비는 도큐먼트 데이터모델을 사용한다. ***칼럼패밀리(Column Family)** 칼럼 패밀리는 말 그대로 칼럼들의 집합이며, 정확하게 Column과 Row구성되어 있다. 그래서 기존 RDBMS의 테이블(Table)과 비슷한 것이라 생각 할 수 있지만 내부적으로는 차이점이 존재한다. 관계형 데이터베이스에서는 테이블을 설계할 때 미리 칼럼의 이름과 데이터 타입등을 정의한다. 어플리케이션에서는 해당 스키마에 맞춰 테이블에 있는 정보들을 가져와서 사용할 수 있다. 하지만 카산드라의 칼럼 패밀리는 클라이언트 애플리케이션에 의해 만들어진다. 즉, 칼럼패밀리는 메타데이터만 가지고 있다고 보면된다. 그렇기 때문에 각 행마다 서로 다른 칼럼을 가질 수 있다. 이러한 칼럼패밀리는 정적(static)칼럼 패밀리와 동적(dynamic)칼럼 패밀리로 나눌 수 있다. 정적 칼럼 패밀리는 관계형 데이터베이스와 같이 미리 정의되어있는것이다. 하지만 반드시 모든 칼럼을 다 사용하지 않아도 되는 점이 RDBMS와 차이점이기도 하다. 동적 칼럼 패밀리는 애플리케이션에서 칼럼을 생성하는 방식이다. 개별적인 칼럼의 메타데이터를 정의하지 않고 칼럼의 이름과 값에 대한 타입만 정의하는 것이다. 실제 칼럼의 이름과 값은 어플리케이션에서 저장할 때 넣는 방식이다. 모든 칼럼 패밀리에 각 행(Row)별로 유일한 값인 Row Key 가 있는데,이것은 관계형 데이터베이스의 Primary Key와 유사하다. 칼럼 패밀리는 이 Row Key를 기준으로 파티션되고, Row Key는 항상 기본적으로 인덱스되어 있다. <칼럼(Column)> 칼럼은 기본적으로 이름과 값으로 구성되어 있으며, 칼럼이름은 미리 정의되어 있을 수도 있고, 애플리케이션에 의해 동적으로 생성 할 수 도있다. 칼럼 값은 반드시 있어야 하...