Hibernate L2 Cache - Region 별 저장 및 통계 정보를 이용하기
DataBase 2022. 1. 25. 22:56

Hibernate L2 Cache는 기본적인 설정으로는 default 영역에 모든 데이터가 저장된다. 이렇게 저장되면 정확히 cache가 동작여부를 알 수 없다. 분산 캐시를 구성하면 더더욱 확인하기 어렵다. 이를 정확히 확인 하기 위해서는 cache를 entity별로 Region를 설정하고 각 Region 의 통계 정보를 이용하면 된다. Region 설정 @Cache(usage = CacheConcurrencyStrategy.READ_WRITE, region = "Foo") @Cache 이노테이션에 region 값을 넣으면 “Foo” region이 생성된다. 설정된 Region에 저장 @QueryHints(value ={@QueryHint(name = HINT_CACHEABLE, value = "tru..

[DynamoDB] AWS Lambda을 이용하여 DynamoDB Table간 실시간 동기화하기
DataBase 2022. 1. 8. 22:15

보통 제품의 여러 환경으로 나누어 배포된다. 검증된 데이터를 프로덕션 환경으로 옮기거나 다른 리젠의 DynamoDB 테이블로 옮기위 위해서는 오늘 소개하는 방법을 사용 할 수 있다. ◆ 실시간 동기화 흐름 DynamoDB Stream 은 DynamoDB에서 일어나는 일련의 행동들을 캡쳐하고 24시간동안 로그에 저장한다. 또한 이 기능은 DynamoDB을 RCU 비용만 발생한다. 또한 트리거 기능을 제공하여 삽입, 업데이트, 삭제 발생시 target 테이블을 업데이트 가능하다. 이를 이용하여 AWS Lambda을 사용하여 다른 테이블들을 업데이트 할 수 있다. ◆ Lambda 권한 추가 { "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor3",..

[DataBase] Order by에서 null 값 처리
DataBase 2022. 1. 6. 22:41

비즈니스 로직을 구현함에 있어 null 값의 조회되는 순서를 정하고 싶을때가 있다. 예를 들어 order by로 가져온 데이터에서 null 값이 아닌 데이터를 처리하고 null값을 최후의 선택지로 차선을 선택을 하는 경우이다. 이번 글에서는 각 DBMS에서 null값을 order by 구문으로 조회 시 삽입되는 위치에 대해 알아보자. DBMS 별 기본 설정 값 DBMS 마다 Null에 대한 sorting하는 방식을 기본으로 정해진 룰대로 진행한다. 아래 각각에 대한 설명이다. PostgreSQL, Oracle 여기서는 Null값을 모든 유효한 값뒤에 위치 하게 된다. SQLite, MySQL,MSSQL Null은 모든 값보다 작은 값으로 처리된다. 기본 Order과 다르게 처리 위에서 나열한 방식과 다르..

[Spring] DynamoDB Enhanced Client 사용 기 (feat. AWS SDK V2)
DataBase 2021. 12. 23. 21:57

저번 글에서는 Spring data를 사용하여 DynamoDB에 대한 CRUD를 구현 했다. Spring data프로젝트에서 DynamoDb에 대한 지원은 하지 않고 있고 안정적인 방식은 AWS에서 제공하는 SDK를 사용하는 것이다. V1의 DynamoDBMapper를 사용한 예제는 많으나 V2의 Enhance Client를 사용하여 구현한 가이드를 찾기 힘들어 정리하려고 한다. Maven 설저 com.amazonaws aws-java-sdk-bom 1.11.1000 pom import com.amazonaws aws-java-sdk-dynamodb AWS SDK에서 dependency를 관리해주는 aws-java-sdk-bom를 추가해 주고 밑 부분에 DynamoDB에 대한 의존성을 추가 해준다. Co..

[Python] DynamoDB 및 Mysql 접근법
DataBase 2021. 12. 21. 21:44

Python으로 좀 더 쉽고 간편하게 업무적인 요구 사항을 만족하는 스트립트를 만들 수 있다. 이번글의 Mysql 접속 방법과 AWS DynamoDB를 접근하는 방법에 대해 정리하겠다. 설치 pip3 install boto3 pip3 install pymysql 기본적으로 python3.7를 사용하여 구성 하였다. MySQL def selectData(IdFrom,IdTo): #Mysql 연결 conn = pymysql.connect(host='localhost', user='root', password='test', db='test', charset='utf8', port=3306) cur = conn.cursor() sql = "select * from book where book_id>%s AND ..

[DynamoDB] Partition Key 설계
DataBase 2021. 12. 21. 09:08

DynamoDB는 여타 다른 key-value DB와 다르게 설계되여 있다. 이글 에서 언급했다 싶이 Data는 partition key로 분리되여 저장되고 하나의 partition의 최대 크기는 10GB이다. Partition 키 설계 DynamoDB에는 두가지 방식의 Partition key를 가질 수 있다. 단일 partition key 방식 데이터를 patition key에 의존하는 방식으로 저장된다. 내부에 hash 함수가 있어 partition key로 저장된 item은 hash 함수의 결과에 의하여 지정된 위치에 저장된다. 이 방식을 채용하면 partition내의 데이터는 순서에 관계 없이 저장되고 읽기 동작이 느리다. 최대 장점은 쓰기 동작에 있어 최대한 많이 분산 할 수 있다는 점이다. ..

[Database] DynamoDB GSI 사용
DataBase 2021. 12. 19. 19:38

DynamoDB 제일 중요한 개념이 GSI(Global Secondary Index)인것 같다. 이 개념은 Partition Key(PK)로 여러 노드에 분산된 데이터를 더 빨리 scan하기 위해 도입된 개념이다. GSI는 파티션 내의 partition key와 sort key와는 분리된 개념이라고 생각하면 된다. 이 기능은 광역에서 데이터를 더 빨리 찾기위한 Index라고 이해하면 될것 같다. GSI를 이해하기 위한 간단한 예 상품 데이터를 관리하기 위해 상품의 ID을 partition key로 입고일자를 sort key로 하고 입고자 정보를 포함한 schema가 있다고 가정하면 입고자가 입고한 모든 상품을 검색할 때는 입고자를 기준으로 모든 상품을 찾을 시에는 GSI를 입고자로 설정하면 입고자를 기준..

[DynamoDB] Spring에서 DynamoDB 사용
DataBase 2021. 12. 16. 21:49

Spring boot에서 AWS DynamoDB를 사용하여 CRUD를 하는 법에 대하여 간단히 정리해 보았다. 기타 No-sql DB와 다르게 기능 구현을 쉽게 할 수 있었던것 같다. 본 글의 spring 튜토리얼를 참고하여 작성 되었다. 준비 Local에서 dynamoDB을 docker로 구동하는 방법을 공유 한다.(이렇게 구동시 Key값은 공백으로 연결한다.) version: '3.7' services: dynamodb: image: amazon/dynamodb-local container_name: my-dynamodb hostname: dynamodb restart: always volumes: - ./my-dynamodb-data:/home/dynamodblocal/data ports: - 80..