Cassandra 간단한 데이터베이스 예제를 사용한 데이터 모델

이기는하지만 Cassandra 쿼리 언어는 다음과 유사합니다. SQL 언어에 따라 데이터 모델링 방법이 완전히 다릅니다.

In Cassandra, 잘못된 데이터 모델은 특히 사용자가 RDBMS 개념을 구현하려고 할 때 성능을 저하시킬 수 있습니다. Cassandra. 아래에 자세히 설명된 몇 가지 규칙을 염두에 두는 것이 가장 좋습니다.

Cassandra 데이터 모델 규칙

In Cassandra, 쓰기 비용은 비싸지 않습니다. Cassandra 조인, 그룹화 기준, OR 절, 집계 등을 지원하지 않습니다. 따라서 데이터를 완전히 검색할 수 있는 방식으로 저장해야 합니다. 따라서 데이터를 모델링하는 동안 이러한 규칙을 염두에 두어야 합니다. Cassandra.

쓰기 횟수 최대화

In Cassandra, 쓰기는 매우 저렴합니다. Cassandra 높은 쓰기 성능에 최적화되어 있습니다. 따라서 더 나은 읽기 성능과 데이터 가용성을 위해 쓰기를 최대화하십시오. 데이터 쓰기와 데이터 읽기 사이에는 상충 관계가 있습니다. 따라서 데이터 쓰기 횟수를 최대화하여 데이터 읽기 성능을 최적화하십시오.

데이터 중복 극대화

데이터 비정규화와 데이터 복제는 사실상 Cassandra. 디스크 공간은 메모리, CPU 처리 및 IO 작업보다 더 비싸지 않습니다. Cassandra 분산 데이터베이스이므로 데이터 복제를 통해 즉각적인 데이터 가용성이 보장되고 단일 장애 지점이 발생하지 않습니다.

Cassandra 데이터 모델링 목표

데이터를 모델링하는 동안 다음 목표를 가져야 합니다. Cassandra:

데이터를 주변에 고르게 분산시킵니다. Cluster

각 노드에 동일한 양의 데이터가 필요합니다. Cassandra Cluster. 데이터는 기본 키의 첫 번째 부분인 파티션 키를 기반으로 다른 노드에 분산됩니다. 따라서 클러스터 주변에 데이터를 균등하게 분산하기 위해 기본 키로 정수를 선택해 보세요.

데이터를 쿼리하는 동안 읽는 파티션 수 최소화

파티션은 동일한 파티션 키를 가진 레코드 그룹입니다. 읽기 쿼리가 실행되면 서로 다른 파티션의 서로 다른 노드에서 데이터를 수집합니다.

파티션이 많으면 쿼리 데이터를 수집하기 위해 이러한 모든 파티션을 방문해야 합니다.

파티션을 생성해서는 안 된다는 의미는 아닙니다. 데이터가 매우 큰 경우 단일 파티션에 엄청난 양의 데이터를 보관할 수 없습니다. 단일 파티션의 속도가 느려집니다.

따라서 균형 잡힌 수의 파티션을 선택하십시오.

좋은 기본 키 입력 Cassandra

예를 들어 어떤 기본 키가 좋은지 찾아보겠습니다.

다음은 MusicPlaylist 테이블입니다.

Create table MusicPlaylist
    (
        SongId int,
        SongName text,
        Year int,
        Singer text,
        Primary key(SongId, SongName)
    );

위의 예에서 MusicPlaylist 테이블은

  • Songid는 파티션 키입니다.
  • SongName은 클러스터링 열입니다
  • 데이터는 SongName을 기준으로 클러스터링됩니다. SongId를 사용하여 하나의 파티션만 생성됩니다. MusicPlaylist 테이블에는 다른 파티션이 없습니다.

잘못된 기본 키로 인해 이 데이터 모델에서는 데이터 검색 속도가 느려집니다.

여기에 또 다른 테이블 MusicPlaylist가 있습니다.

Create table MusicPlaylist
    (
        SongId int,
        SongName text,
        Year int,
        Singer text,
        Primary key((SongId, Year), SongName)
    );

위의 예에서 MusicPlaylist 테이블은

  • Songid와 Year는 파티션 키입니다.
  • SongName은 클러스터링 열입니다.
  • 데이터는 SongName을 기준으로 클러스터링됩니다. 이 테이블에서 매년 새로운 파티션이 생성됩니다. 그 해의 모든 노래는 같은 노드에 있습니다. 이 기본 키는 데이터에 매우 유용합니다.

이 데이터 모델을 사용하면 데이터 검색이 빨라집니다.

데이터 모델링 Cassandra

쿼리를 모델링하는 동안 다음 사항을 명심해야 합니다.

지원하려는 쿼리 결정

우선, 원하는 쿼리가 무엇인지 결정하세요.

예를 들어, 필요한가요?

  • 조인
  • 그룹화 기준
  • 어떤 열 등을 필터링합니다.

쿼리에 따라 테이블 만들기

쿼리에 따라 테이블을 만듭니다. 귀하의 쿼리를 만족시킬 테이블을 생성하십시오. 최소한의 파티션을 읽어야 하는 방식으로 테이블을 생성해 보십시오.

일대일 관계 처리 Cassandra

일대일 관계는 두 테이블이 일대일 대응을 갖는다는 것을 의미합니다. 예를 들어, 학생은 한 과목만 등록할 수 있는데, 특정 학생이 어떤 과목에 등록했는지 검색하고 싶습니다.

따라서 이 경우 테이블 스키마는 과목명, 학생의 학년 번호, 학생 이름 등 특정 과목에 해당하는 학생의 모든 세부 정보를 포함해야 합니다.

일대일 관계 Cassandra
일대일 관계 Cassandra

Create table Student_Course
    (
        Student rollno int primary key,
        Student_name text,
        Course_name text,
    );

일대다 관계 처리 Cassandra

일대다 관계는 두 테이블 간에 일대다 대응이 있음을 의미합니다.

예를 들어, 한 과목을 많은 학생들이 공부할 수 있습니다. 특정 과목을 수강하고 있는 모든 학생을 검색하고 싶습니다.

따라서 과목명을 조회하면 특정 과목을 수강할 학생의 이름이 많이 나올 것입니다.

일대다 관계 Cassandra
일대다 관계 Cassandra

Create table Student_Course
    (
        Student_rollno int,
        Student_name text,
        Course_name text,
    );

다음 쿼리를 통해 특정 과목의 모든 학생을 검색할 수 있습니다.

Select * from Student_Course where Course_name='Course Name';

다대다 관계 처리 Cassandra

다대다 관계는 두 테이블 사이에 다대다 대응이 있음을 의미합니다.

예를 들어, 한 과목을 여러 학생이 공부할 수도 있고, 한 학생이 여러 과목을 공부할 수도 있습니다.

다대다 관계 Cassandra
다대다 관계 Cassandra

특정 과목을 수강하고 있는 모든 학생을 검색하고 싶습니다. 또한, 특정 학생이 수강하고 있는 과목 전체를 검색하고 싶습니다.

따라서 이 경우에는 두 개의 테이블을 갖게 됩니다. 즉, 문제를 두 개의 사례로 나눕니다.

먼저, 특정 학생의 강좌를 찾을 수 있는 테이블을 생성하겠습니다.

Create table Student_Course
    (
        Student_rollno int primary key,
        Student_name text,
        Course_name text,
    );

다음 쿼리를 사용하면 특정 학생이 수강한 모든 과목을 찾을 수 있습니다.

Select * from Student_Course where student_rollno=rollno;

둘째, 특정 과목을 수강하는 학생 수를 확인할 수 있는 테이블을 생성하겠습니다.

Create table Course_Student
    (
        Course_name text primary key,
        Student_name text,
        student_rollno int
    );

다음 쿼리를 통해 특정 과목의 학생을 찾을 수 있습니다.

Select * from Course_Student where Course_name=CourseName;

RDBMS와 RDBMS의 차이점 Cassandra 데이터 모델링

RDBMS Cassandra
정규화된 형식으로 데이터를 저장합니다. 데이터를 비정규화된 형식으로 저장합니다.
레거시 DBMS; 구조화된 데이터 넓은 행 저장소, 동적; 구조화된 데이터와 구조화되지 않은 데이터

요약

  • 데이터 모델링 Cassandra 다른 것과는 다르다 RDBMS 데이터베이스.
  • Cassandra 데이터 모델링에는 몇 가지 규칙이 있습니다. 좋은 데이터 모델링을 위해서는 이러한 규칙을 따라야 합니다. 이러한 규칙 외에도 세 가지 다른 데이터 모델링 사례와 이를 처리하는 방법을 살펴보았습니다.
  • 일대일 관계는 두 테이블이 일대일 대응을 갖는다는 것을 의미합니다.
  • 일대다 관계는 두 테이블 간에 일대다 대응이 있음을 의미합니다.
  • 다대다 관계는 두 테이블 사이에 다대다 대응이 있음을 의미합니다.