시스템에 서버별로 고유 한 테이블이 있습니다.복제하지 않는 Cassandra 테이블을 사용할 수 있습니까?
즉 http://server1.example.com/some_stuff.html 및 http://server2.example.com/some_stuff.html은 특정 서버에 고유 한 데이터를 저장하고 표시해야합니다. 서버 중 하나가 죽으면 해당 테이블과 해당 데이터가 함께 사용됩니다.
시스템에 서버별로 고유 한 테이블이 있습니다.복제하지 않는 Cassandra 테이블을 사용할 수 있습니까?
즉 http://server1.example.com/some_stuff.html 및 http://server2.example.com/some_stuff.html은 특정 서버에 고유 한 데이터를 저장하고 표시해야합니다. 서버 중 하나가 죽으면 해당 테이블과 해당 데이터가 함께 사용됩니다.
CQL이 테이블 수준 복제 요인을 지원하지 않는다고 생각합니다 (사용 가능한 create table options 참조). 다음에는 복제가 없습니다 그 키 공간에서 생성 된 모든 테이블
CREATE KEYSPACE <ksname>
WITH replication = {'class':'<strategy>' [,'<option>':<val>]};
Example:
To create a keyspace with SimpleStrategy and "replication_factor" option
with a value of "1" you would use this statement:
CREATE KEYSPACE <ksname>
WITH replication = {'class':'SimpleStrategy', 'replication_factor':1};
: 하나 개의 대안은 = 복제 팩터 키 - 공간을 만드는 일입니다.
각 노드마다 테이블을 갖고 싶다면 Cassandra가 직접 지원하지 않는다고 생각합니다. 한 가지 해결 방법은 각 클러스터가 하나의 노드 만 갖는 각 노드에 대해 추가 Cassandra 클러스터를 시작하는 것입니다.
난 당신이 그렇게 할 이유를 잘 모르겠지만, 여기에 내 걸릴 수 있습니다 : 당신의 카산드라 클러스터의 노드간에 데이터가 행 키에 의해 결정되는 실제의
배포.
복제 계수를 1로 설정한다고해서 하나의 열 패밀리/테이블의 모든 데이터가 1 노드에 저장되는 것은 아닙니다. 데이터는 여전히 행 키에 따라 분할/분산됩니다.
정확하게 데이터가 저장되는 곳 is determined by the row key along with the partitioner as documented here. 이것은 DDBS의 고유 한 부분이며이를 강제하는 쉬운 방법은 없습니다. 내가 생각할 수있는
유일한 방법은 하나 개의 노드에 하나 개의 테이블에 하나 개의 서버 phisically에 대한 모든 데이터를 가지고있다 :
임 기대 노드에 매핑 할 수 있도록 토큰 선택을 속여 케이스. ''replication_factor ': 1'로 다른 키 공간을 생성하는 것은 깔끔한 해결 방법입니다. – Jacob
@ Jacob : 실제로 저는 카산드라를 처음 접했습니다. 그러나 내가 아는 한'create table' 연산자는'replication factor'와 같은 옵션을 가지고 있지 않습니다. – keelar
이것은 데이터를 고유하게 만 만들지 만 데이터는 "해당 특정 서버"에 매핑되지 않습니다. 파티셔에 따라 배포됩니다. – omnibear