Database 30

[Cassandra] UDT DATA TYPE insert 주의 사항

이번글에서는 Cassandra에서insert 시 UDT DATA TYPE 사용할때 조금한 팁에 대해서 설명드리려고 해요. UDT Type은 User-Defined-type으로 Cassandra에서 제공하는 데이터 타입 말고 사용자가 직접 타입을 선언해서 사용할 수 있는 타입인데요. 아래 처럼 데이터를 insert 할 때, basics라는 변수에 UDT 형식으로 사용이 가능해요. cqlsh> INSERT INTO cycling.cyclist_stats (id, lastname, basics) VALUES ( e7ae5cf3-d358-4d99-b900-85902fda9bb0, 'FRAME', { birthday : '1993-06-18', nationality : 'New Zealand', weight : ..

Database/Cassandra 2022.10.30

[MariaDB] Floor Datatype

floor 데이터 타입은 X보다 크지 않은 가장 큰 정수 값을 반환하는 Number Function이다. 자주 사용하진 않지만, 아래 예를 통해 알아보자. 아래는 간단한 숫자 예시다. SELECT FLOOR ( 1 . 23 ); + ------------- + | FLOOR ( 1 . 23 ) | + ------------- + | 1 | + ------------- + SELECT FLOOR ( - 1 . 23 ); + -------------- + | FLOOR ( - 1 . 23 ) | + -------------- + | - 2 | + -------------- + 숫자를 입력하면 숫자보다 크지 않은 정수로 변환하여 데이터를 처리한다. 다른 예시로 나이대를 구할때, 사용할 수 있다. 아래와 같은 ..

Database/SQL 2021.03.25

[MariaDB] RANK(), DENSE_RANK(), ROW_NUMBER() 차이

SQL 구문에서 순위를 매길때, RANK(), DENSE_RANK(), ROW_NUMBER() 3가지 방법을 사용할 수 있다. 3가지 방법은 동률을 처리하는 방법에 따라 사용 목적이 다르다. RANK() : 동률을 같은 등수로 처리 DENSE_RANK() : 동률을 같은 등수로 처리하지만, 그 다음 등수를 동률의 수 만큼 제외하지 않고 바로 등수로 매김. ROW_NUMBER() : 동률을 반영하지 않는다. 즉, 동일한 등수는 존재하지 않고 모든 행은 다른 등수를 가진다. 예시 원본 테이블 데이터 RANK 구문 select name, goals, RANK() over (ORDER BY goals desc) as 'RANK', DENSE_RANK() over (ORDER BY goals desc) AS 'D..

Database/SQL 2021.03.17

[Cassandra] Compaction, Compression

개요 카산드라 테이블 생성시, 상세 옵션을 보면 compression과 compaction이 있다. create table test ( logtime text, log text, primary key (log, logtime) ) with clustering order by (logtime asc) and caching = {'keys': 'ALL', 'rows_per_partition': 'NONE'} and compaction = {'max_threshold': '32', 'min_threshold': '4', 'class': 'org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy'} and compression = {'class': 'or..

Database/Cassandra 2020.06.24

[Cassandra][datastax]Physical Analysis

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

Database/Cassandra 2020.06.17

[Cassandra] com.datastax.driver.core.exceptions.ServerError

스프링에서 카산드라 연결까지는 문제 없이 연결 되었지만, 아래와 같은 에러가 발생하였다. 어플리케이션 실행 시 카산드라 정상 연결 확인 ....... 2020-06-05 10:59:55.220 [restartedMain] INFO io.undertow.servlet : Initializing Spring embedded WebApplicationContext 2020-06-05 10:59:55.220 [restartedMain] INFO o.s.web.context.ContextLoader : Root WebApplicationContext: initialization completed in 1233 ms 2020-06-05 10:59:55.276 [restartedMain] INFO com.datast..

Database/Cassandra 2020.06.05

[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