scylladb 4

카산드라(cassandra), 데이터를 읽고 쓰는 과정

카산드라는 데이터를 여러 노드에 분산하여 저장합니다. 즉, 노드마다 할당된 데이터가 다릅니다. 클라이언트는 카산드라에 접근하기 위해 특정 노드에 접속합니다. 아래 그림의 ①번에 해당합니다. 이처럼 클라이언트가 접속한 노드를 코디네이터라 합니다. 데이터 읽기 코디네이터는 클라이언트가 요청한 데이터가 클러스터의 어느 노드에 있는지 확인 후 해당 노드에 데이터를 요청합니다. 아래 그림의 ②번에 해당합니다. 해당 노드는 요청받은 데이터를 코디네이터로 전달합니다. 아래 그림의 ③번에 해당합니다. 끝으로 코디네이터는 전달받은 데이터를 클라이언트로 전달합니다. 아래 그림의 ④번에 해당합니다. 데이터 쓰기 코디네이터는 클라이언트가 저장하려는 데이터가 클러스터의 어느 노드에 저장되어야 하는지 확인 후 해당 노드에 데이터..

NoSQL/Cassandra DB 2020.09.08

카산드라(cassandra), 클라이언트에서 노드(Node) 접근 - 코디네이터(Coordinator)

아래의 그림에서 표현된 노드가 연결된 구조를 링(Ring)이라 합니다. 카산드라는 링을 구성하는 여러 노드가 모두 동등합니다. 즉, 마스터(Master) 역할을 하는 노드가 존재하지 않습니다. 그러나 상식적으로 클라이언트는 카산드라의 노드에 접근할 때 특정 노드를 지정할 수밖에 없습니다. 아래의 그림에서는 7번 노드를 예로 들었습니다. 이처럼 클라이언트가 접근한 노드는 특별한 역할을 합니다. 이를 코디네이터(Coordinator)라 합니다. 클라이언트에서 카산드라에 접근하려면 접속할 노드를 지정해야 합니다. 해당 노드는 코디네이터 역할을 하며 다음과 같은 일을 합니다. - 클라이언트가 요청한 데이터를 해당 노드에서 읽어서 클라이언트로 전달 - 클라이언트가 입력한 데이터를 해당 위치의 노드에 저장

NoSQL/Cassandra DB 2020.08.31

카산드라(cassandra), 기본 구조

카산드라를 구성하는 가장 단순한 구조는 하나의 서버에 하나의 노드(Node)를 설치하는 것입니다. 이 경우 모든 데이터는 하나의 노드에 저장됩니다. 그러나 해당 노드에 장애가 발생하면 카산드라의 서비스는 중단됩니다. 그러므로 카산드라는 Availability와 Partition tolerance를 충족하기 위해 여러 개의 노드를 연결하는 구조로 구성합니다. 노드 간의 연결을 링(Ring)이라 하며 아래와 같이 표현할 수 있습니다. 카산드라의 노드를 위의 그림처럼 논리적으로 표현할 수 있지만 실제로는 아래의 그림에 더 가깝습니다. 위의 링 구조를 물리적으로 구성한 구조를 클러스터(Cluster)라 합니다. 클러스터를 단순하게 표현하면 하위의 노드가 랙(Rack)으로 묶여 데이터 센터에 포함됩니다. 그리고 ..

NoSQL/Cassandra DB 2020.08.25

카산드라(cassandra), 데이터 센터(Data Center)와 랙(Rack)

카산드라는 CAP 원칙에서 A(Availability)와 P(Partition tolerance)*를 지향합니다. Availability와 Partition tolerance를 충족하기 위해 카산드라는 일반적으로 여러 개의 물리적 노드(Node)로 구성합니다. 그런데 물리적으로 분리된 여러 개의 노드로 구성하더라도 노드가 설치된 건물에 정전이 발생할 수 있습니다. 이 경우에는 Availability와 Partition tolerance를 충족하기 어렵습니다. 그래서 노드를 다른 건물이나 시설에 분리하여 구성합니다. * CAP 원칙 참조 카산드라 구성 시 랙(Rack)은 노드의 논리적인 그룹이라고 정의하며 데이터 센터(Data Center)는 랙의 논리적인 그룹이라 정의합니다. 이를 쉽게 그림으로 표현하면..

NoSQL/Cassandra DB 2020.08.24