"성능 문제"로 인해 수퍼 컬럼이 바람직하지 않은 최신 릴리스를 읽었지만, 여기서는 설명하지 않습니다.카산드라의 수퍼 컬럼이 더 이상 선호되지 않는 이유는 무엇입니까?
그런 다음 수퍼 컬럼을 사용하여 훌륭한 색인 패턴을 제공하는 this one과 같은 기사를 읽었습니다.
이것은 인데 현재은 카산드라에서 색인 생성을 수행하는 가장 좋은 방법입니다.
- 수퍼 컬럼의 성능 문제는 무엇입니까?
- 현재 색인 생성을위한 최선의 방법은입니까?
"성능 문제"로 인해 수퍼 컬럼이 바람직하지 않은 최신 릴리스를 읽었지만, 여기서는 설명하지 않습니다.카산드라의 수퍼 컬럼이 더 이상 선호되지 않는 이유는 무엇입니까?
그런 다음 수퍼 컬럼을 사용하여 훌륭한 색인 패턴을 제공하는 this one과 같은 기사를 읽었습니다.
이것은 인데 현재은 카산드라에서 색인 생성을 수행하는 가장 좋은 방법입니다.
슈퍼 열에는 여러 가지 문제가 있습니다. 특히, 카스 산드라는 쿼리 할 때 슈퍼 열의 모든 하위 열을 비 직렬화해야합니다. 부분 집합). 결과적으로, 성능이 떨어지기 전에 저장 될 수있는 수퍼 컬럼 당 서브 컬럼의 수에는 실질적 한계가 있습니다.
이론적으로 Cassandra에서는 부분 열을 적절하게 색인하여 고정시킬 수 있지만 복합 열은 더 나은 솔루션이며 복잡성을 추가하지 않아도 작동한다는 결론이 도출되었습니다.
복합 열을 사용하는 가장 쉬운 방법은 CQL 3이 제공하는 추상화를 이용하는 것입니다. 다음 스키마를 고려 여기
CREATE TABLE messages(
username text,
sent_at timestamp,
message text,
sender text,
PRIMARY KEY(username, sent_at)
);
이름은 행 키이지만, 우리는 행 키와 sent_at 컬럼의 그룹을 생성하는 PRIMARY KEY 정의를 사용했습니다. 이는 해당 속성을 색인화하는 효과가 있으므로 중요합니다.
alice: (2012-08-01 11:42:37,message): Hi yourself, (2012-08-01 11:42:37,sender): bob
bob: (2012-08-01 11:42:15,message): Hi, (2012-08-01 11:42:15,sender): alice, (2012-08-01 11:43:00,message): What are you doing later?, (2012-08-01 11:43:00,sender): alice (2012-08-01 11:47:14,message): Bob?, (2012-08-01 11:47:14,sender): alice
그러나 CQL 3를 사용하여, 우리는 "행"는 sent_at 술어를 사용하여 조회 할 수 있고, 표를 다시 얻을 : 카산드라 위의 삽입 데이터 같은 것을 저장할 장면 뒤에
INSERT INTO messages (username, sent_at, message, sender) VALUES ('bob', '2012-08-01 11:42:15', 'Hi', 'alice');
INSERT INTO messages (username, sent_at, message, sender) VALUES ('alice', '2012-08-01 11:42:37', 'Hi yourself', 'bob');
INSERT INTO messages (username, sent_at, message, sender) VALUES ('bob', '2012-08-01 11:43:00', 'What are you doing later?', 'alice');
INSERT INTO messages (username, sent_at, message, sender) VALUES ('bob', '2012-08-01 11:47:14', 'Bob?', 'alice');
결과 집합입니다.
SELECT * FROM messages WHERE username = 'bob' AND sent_at > '2012-08-01';
username | sent_at | message | sender
----------+--------------------------+---------------------------+--------
bob | 2012-08-01 11:43:00+0000 | What are you doing later? | alice
bob | 2012-08-01 11:47:14+0000 | Bob? | alice
훌륭한 질문입니다. 이 이베이 (ebay) 기술 블로그에는 최적화 된 아키텍처에 대한 멋진 기술과 낮은 기술이 모두 포함되어 있습니다. http://www.ebaytechblog.com/2012/07/16/cassandra-data-modeling-best-practices-part-1/ 그러나 실제 물건을 사용하고 있다면 각 변경 로그와 로드맵을 더 잘 읽고 문제가있는 곳과 문제가 무엇인지, 어떻게 해결되는지 더 잘 느끼십시오. 너무 많은 독서이고 그것이 어딘가에 체계화 될 수 있으면 좋을 것이다, 그러나 나는 또한 인터넷에 다량을 찾아 낼 수 없다. –