Cassandra 19

[Cassandra] Cassandra Unit Test - Junit5

카산드라 단위테스트 junit5를 활용하여 카산드라 단위테스트를 진행하려고 했지만, cassandra db는 따로 연결해 주어야하는 듯 싶다. 혹시나 다른 방법이 있다면 피드백 부탁드려요! 카산드라를 단위 테스트에 사용하기 위해 cassandra unit 라이브러리를 추가해주었다. org.cassandraunit cassandra-unit-spring 2.2.2.1 그리고 test 파일에 @BeforeClass 주입된 클래스에 아래의 간단한 내용을 추가해준다. .... @BeforeClass public static void startServer() throws InterruptedException, TTransportException, ConfigurationException, IOException {..

[Cassandra][datastax]Physical Analysis

물리 데이터 모델링 순서 1. 분석 및 확인 - 문제 찾기 2. 물리적 최적화 - 문제 고정 3. 데이터 타입 추가 - 모델링 마무리 4. CQL CREATE TABLE - 테이블 생성 왜 분석이 필요한가 전형적으로 논리 설계는 모범 사례인 동시에 효율적인 성능을 낸다. 쿼리당 파티션 중첩 데이터 중복 데이터 현실에서는 전반적은 논리 모델의 효율성은 여전히 뜬구름 잡는 이야기같다. 데이터베이스 엔진은 한계가 있다. 클러스터 리소스가 제한적이다. : 노드, 디스크 공간, 메모리 등등.. 카산드라가 직접적으로 지원하지 않는 델링 무엇을 분석하는가 문제 찾기 파티션 사이즈 데이터 중복 데이터 일관성 어플리케션 관점에서 조인 참조 무결성 제약조건 트랜잭션 데이터 전처리 모델 최적화 문제 고정하기 키 최적화 테이..

Database/Cassandra 2020.06.17

[Cassandra] Compression Configuration

Compression 카산드라는 기본적으로 테이블당 어떻게 압축할지 옵션을 제공한다. 압축은 chunk_length_in_kb을 사용하면 SSTable을 압축하면서 디스크의 사이즈를 감소 시킨다. 카산드라 SSTable은 불변(immutable)하는 속성을 가지기때문에 SSTable이 쓰여질때 압축을 위한 CPU 비용이 필요하다. 후속으로 업데이트 되는 데이터는 다른 SSTable에 쓰여진다. 그래서 카산드라는 데이터를 업데이트 할 때, 다시 압축을 풀 필요거나, 오버라이트 하거나 다시 압축할 필요가 없다. 오직 읽을때 카산드라는 디스크에서 압축 청크(덩이리)를 찾고 압축 해제한 다음나머지 읽기 경로(디스크, 멤브럴의 데이터의 병합, 읽기 복구)를 진행합니다. 압축 알고리즘은 3개의 영역에서 주고 받는다..

Database/Cassandra 2020.06.03

[cassandra] blob type

Cassandra blob type Blob 데이터 형식은 0 [xX] (hex) +로 정의 된 16 진수 상수 여기서 16 진수는 [0-9a-fA-F]와 같은 16 진수 문자. 예를 들어 0xcafe Blob의 최대 이론적 크기는 2GB 실제 제한은 1MB 미만 Blob 유형은 작은 이미지 또는 짧은 문자열을 저장하는 데 적합 blob 변환 함수 typeAsBlob (값) : CQL에서 지원하는 모든 기본 비 블롭 데이터 유형에 대해 해당 데이터 유형의 인수를 가져와이를 블롭으로 리턴 blobAsType (값) : 64 비트 blob 인수를 사용하여 가능한 경우 지정된 데이터 유형의 값으로 변환 사용예 : textAsBlob 테이블 생성 CREATE TABLE IF NOT EXISTS test_by_s..

Database/Cassandra 2020.06.02

[Cassandra][datastax]Logical_Mapping Patterns

매핑 패턴 일반적인 매핑 사용 사례에 대한 반 정식(Semi-formal) 정의 논리 모델 설계에 대한 그래픽 참고 자료로 제공 쿼리기반 매핑 패턴 방법론 쿼리 요구사항에 맞는것을 사용하기 위한 9가지 패턴 Entity mapping patterns (2가지) 1:1 relationship mapping patterns (2가지) 1:n relationship mapping patterns (2가지) m:n relationship mapping patterns (2가지) Hierarchical mapping patterns (1가지) Entity mapping patterns Query attributes == key attributes Query attributes != key attributes 관계..

Database/Cassandra 2020.05.27

[Cassandra][datastax]Logical Mapping Rules

쿼리 기반 방법론 매핑 룰은 논리 데이터 모델이 정확하게 설계되었다는 것을 보증한다. 각 쿼리는 그에 맞는 테이블을 가진다. 테이블은 쿼리가 적절하게 실행되도록 디자인 된다. 테이블은 정확한 순서로 데이터를 반환한다. Mapping Rule 매핑 룰 1. 엔티티와 관계 매핑 룰 2. 등식 검색 속성 매핑 룰 3. 부등식 검색 속성 매핑 룰 4. 순서 속성 매핑 룰 5. 키 속성 매핑 룰 1. 엔티티와 관계 엔티티와 관계는 테이블에 매칭되는 유형이다. 엔티티와 관계는 파티션 혹은 열에 매칭된다. 파티션은 하나 또는 하나 이상의 엔티티와 관계에 대한 데이터를 가진다. 속성은 행에 의해 나타내진다. 주의 : 룰을 위반한 것은 불완전한 데이터 모델을 가지는 것을 의미한다 관계 유형 예제 각각의 관계는 테이블 안..

Database/Cassandra 2020.05.27

[Cassandra][datastax]Logical_Principles

카산드라 데이터 모델링 원칙 Know your data Know your queries Nest data Duplicate data 1. Know your data 성공적인 디자인을 위한 키는 데이터를 이해하는 것이다. 개념적 데이터 모델에 의해 나타난 데이터 무엇을 데이터에 저장할지 정의하라 속성을 보존하라 그러면 데이터는 정확하게 정돈된다. 키의 제약사항은 스키마 디자인에 영향을 준다. 엔티티와 관계키는 테이블 주요키에 영향을 준다. 주요키는 유니크하게 row/entity/relationship을 구별한다. 키와 가능하다면 부가적인 컬럼으로 구성한다. 2. Know Your Query 쿼리는 직관적으로 스키마 디자인에 영향을 준다. application workflow modle에 의해 정의된 쿼리 ..

Database/Cassandra 2020.05.27

[Cassandra][datastax]Logical_Chebotko Diagrams

Logical Model Chebotko Digram 카산드라 테이블과 액세스 패턴의 비쥬얼 다이어그램 카산드라 데이터 베이스 스키마 디자인을 그래픽으로 표현 논리적, 물리적 데이터 모델의 문서화 Table Diagrams 테이블명, 컬럼명, 파티션키 클러스터링 키를 설정한 내용으로 구성 Application Workflow 어플리케이션에 따른 쿼리 실행 흐름도 Query List 쿼리에 해당하는 액세스 패턴 UDT Diagrams User Defined Type 다이어그램 (사용자가 정의한 타입의 다이어그램) Table representaion 논리레벨은 컬럼 이름과 속성을 보여준다. 물리레벨에서도 컬럼의 데이터 타입으로 보여준다. Access patterns 방향선과 쿼리 라벨은 어떻게 테이블을 구성..

Database/Cassandra 2020.05.27

[Cassandra][datastax] Hierarchy

데이터 설계시 필수 개념인 상속성(Hierarchy)에 대해서 알아보자. Entity Type Hierarchy ISA(is-a) Hierarchies라는 뜻은 만약 A ISA B라고 한다면, 모든 A entity는 B entity로서 간주됨을 의미한다. 상위클래스(Superclass)-하위클래스(Subclass)의 관계로 말할 수 있다. ex ) Employees ISA Constract_Employees, Video ISA Full Video Superclass(A)의 속성들을 subclass(B)에게 적용시키기(물려주기)위해 사용한다. Relationship에서 entity를 identity하기 위해 사용한다. Transitivity Transitivity의 원어적 의미는 전이종속성이다. 동일한 테..

Database/Cassandra 2020.05.25

[Cassandra][datastax] Relationship Keys

Relationship Keys는 엔티티간의 관계를 나타내주는 의미를 한다. One-to-One key 엔티티의 키를 1:1로 매칭으로 사용할 수 있다. One-to-Many key 엔티티의 키를 1:n으로 매칭으로 사용할 수 있다. Many-to-Many Key 엔티티의 키를 m:n으로 매칭으로 사용할 수 있다. Attribute Key Participation Attribute를 유니하게 구별해줄 키 값이다. 예를 들어 사용자의 Attribute에서는 id가 될 수 있다. 참고 사이트 https://academy.datastax.com/paths

Database/Cassandra 2020.05.25