저는 최근에 카산드라를 사용하기 시작했습니다. 저는 전통적인 관계형 데이타베이스 배경에서 왔습니다. 그래서 확실히 다릅니다. 내가 항상하는 일 중 하나는 각 행 (OID 등)에 대해 고유 한 ID를 생성하는 것입니다. 그래서 Cassandra에서 작성한 테이블에 대해서는 각 테이블에 UUID 열을 추가하고 UUID를 생성했습니다. 제 질문은 ... 이것이 정말로 "필요한 것"입니까? 나는 UUID를 파티션 키의 일부로 사용하지 않기 때문에 현재로서는 아무 것도 쓰지 않고 있지만, 깨지기는 힘든 습관이다. 몇 가지 조언이 좋을 것입니다!카산드라의 UUID가 실제로 "필요합니까?"
0
A
답변
2
정확히 필요하지 않습니다. 그러나 어떤 경우 UUID를 테이블에 도입하는 것이 유용 할 수 있습니다. 이 표는 로그인하여 사용자를 쿼리 할 수 있습니다
CREATE TABLE user (
id uuid,
name text,
login text,
day_of_birth date
) PRIMARY KEY (login);
: 예를 들어 은 같은 테이블이 상상한다. 이제 이름으로 사용자를 쿼리하려고한다고 가정 해보십시오. 물론 이런 종류의 쿼리를 몇 시간 만 실행하면 SECONDARY INDEX
을 만들 수 있습니다. 당신이 좋은 읽기 성능을 갖고 싶어 그러나, 당신은 같은 테이블 구조를 갖는하여 데이터를 비정규 수 있습니다
CREATE TABLE user (
id uuid,
name text,
login text,
day_of_birth date
) PRIMARY KEY (id);
CREATE TABLE user_by_name (
id uuid,
name text
) PRIMARY KEY (name);
CREATE TABLE user (
id uuid,
login text
) PRIMARY KEY (login);
하지만이 구조로, 당신은 데이터를 유지하기 위해 3 개 테이블에 삽입 및 업데이트해야합니다. 다른 두 개의 테이블을 만드는 대신 MATERIALIZED VIEW
을 사용하면 하나의 테이블 만 유지할 수 있습니다.
CREATE TABLE user (
id uuid,
name text,
login text,
day_of_birth date
) PRIMARY KEY (id);
CREATE MATERIALIZED VIEW user_by_name
AS
SELECT *
FROM user
WHERE id IS NOT NULL
AND name IS NOT NULL
PRIMARY KEY ((name), id);
CREATE MATERIALIZED VIEW user_by_login
AS
SELECT *
FROM user
WHERE id IS NOT NULL
AND login IS NOT NULL
PRIMARY KEY ((login), id);
관련 문제
- 1. iPhone 용으로 프로그래밍하려면 UUID가 필요합니까?
- 2. 카산드라의 Phantom DSL은 실제로 어떻게 연결됩니까?
- 3. 실제로 Singleton이 필요합니까?
- 4. JAAS가 실제로 인증에 필요합니까?
- 5. 관계 테이블이 실제로 필요합니까?
- 6. 이미지 크기가 실제로 필요합니까?
- 7. 포털 : 실제로 포털이 필요합니까?
- 8. 이러한 DIV가 실제로 필요합니까?
- 9. 실제로 양식에 조치가 필요합니까?
- 10. 실제로 emberjs를 시작하려면 무엇이 필요합니까?
- 11. C# - 실제로 디버그 빌드가 필요합니까?
- 12. CGI의 대안이 있습니까 (실제로 필요합니까)?
- 13. MySQL 쿼리에는 실제로 클래스가 필요합니까?
- 14. Ninject.MVC3에서 App_Start 콘텐츠가 실제로 필요합니까?
- 15. 플로팅 요소에 실제로 너비가 필요합니까?
- 16. 빌드 자동화에 실제로 cmake가 필요합니까?
- 17. openssl.conf에 실제로 OpenSSL에 경로가 필요합니까?
- 18. 모든 테이블에 실제로 PK가 필요합니까?
- 19. 속성에 강한 입력이 실제로 필요합니까?
- 20. RMI 속성 ignoreStubClasses가 실제로 필요합니까?
- 21. ELF .notes 섹션이 실제로 필요합니까?
- 22. Java를 컴파일하려면 Java가 실제로 필요합니까?
- 23. 파이썬 구조화 - 실제로 클래스가 필요합니까?
- 24. 카산드라의 보안
- 25. jsplumb의 uuid가 작동하지 않습니다
- 26. Django와 uuid가 데이터베이스에서 생성
- 27. 경고 : UUID가 일치하지 않습니다.
- 28. uuid가 있으면 Google에 친숙한가요?
- 29. Django 모델의 기본값으로 UUID가
- 30. UUID가 "URL 안전"입니까?
오, 멋지다! 나는 카산드라가 Materialized Views를 가지고 있다는 것을 몰랐다. 그게 실제로 내가 새로운 테이블을 만들어야한다고 생각한 시나리오에서 나를 엄청나게 도와 줄거야. 감사! – cloudwalker
구체화 된보기가 cassandra> = 3.0에서만 지원된다는 사실을 잊어 버렸습니다. –