Table Range Partitioning
·
📦 Database/SQL
📘 Table Range Partitioning 이번에 로그 테이블과 통계 처리 테이블의 효율적인 관리를 위해 테이블 파티셔닝을 사용하게 되어 작성합니다. 통계 테이블은 Redis에서 통계 처리 로직을 거친 데이터들이 들어오게 되는데, 데이터의 양이 많고 Insert가 많이 일어나는 테이블, 특정 주기를 기준(Range)으로 파티션 테이블의 삭제 등, 로그, 통계 데이터의 관리 방법으로 테이블 파티셔닝(Range Partitioning 방식)을 선택하게 되었습니다. 📕 파티션 테이블이란? DB 테이블의 데이터가 너무 많아서 어떤 데이터를 조회하려고 할때 시간이 너무 많이 소요될때, 여러 방법중 파티셔닝을 하는 방법을 사용할 수 있습니다. 파티션 테이블은 논리적으로 1개의 테이블이지만 물리적으로 여러개의 ..
Redis Publish/Subscribe Pattern (Spring Data Redis)
·
📦 Database/NoSQL
구현 요구사항 딥러닝 엔진에서 MQTT 데이터 전송 클러스터링/데이터 미러링된 RabbitMQ 클러스터 5대 노드에서 각 라우팅 키에 맞게 Exchange -> Routing Key -> Quorum Queue에 메시지들이 쌓이고 Slave Queue에 메시지가 미러링 됩니다. Redis 설치 Backend(Spring Data Redis)에서 미러링 된 Slave Queue에서 데이터를 가져와서 Redis Pub/Sub 채널을 열어줍니다. Spring Redis(Backend)에서 소켓을 열어줍니다. 소켓의 URL은 WebSocketConfig 클래스에 나온것처럼 ws://localhost:18080/ws입니다. 프론트엔드(React/TypeScript 환경)에서 백엔드의 소켓에 접속해 데이터를 받아옵..
Redis Configuration
·
📦 Database/NoSQL
Redis Configuration Red Hat Enterprise 9.2.0 버전에서 진행하며, Redis의 각종 옵션들을 공식 문서를 보며 대충 번역해서 자주 사용할 것 같은 옵션들만 정리합니다. Redis Configuration 공식 문서 서버 세팅 📕 Shell Script 작성 #!/bin/bash # 패키지 설치 dnf -y update && dnf -y upgrade && dnf -y install firewalld redis yum-utils net-tools wget curl # 방화벽 포트 & 서비스 설정 systemctl start firewalld && systemctl enable firewalld && firewall-cmd --permanent --add-port=6379/..
간단한 조건 검색 (필터링, 상세검색) 기능 만들기 (Kotlin, QueryDSL)
·
📦 Database/QueryDSL
검색 기능 만들기 QueryDSL의 Boolean Builder와 OrderSpecifier를 활용한 검색기능을 만들어 보았습니다. 요구사항 필터링: 와인 종류, 알코올 도수 범위, 와인의 가격 범위, 와인의 스타일, 와인의 등급, 지역 정렬: 와인 이름, 알코올 도수, 산도, 바디감, 단맛, 타닌, 와인의 점수, 와인의 가격 검색: 와인 이름 class CustomWineRepositoryImpl( @Autowired private val queryFactory: JPAQueryFactory ) : QuerydslRepositorySupport(Wine::class.java), CustomWineRepository { override fun findSingleWineByCondition(filter: ..
Python SQL Script 작성
·
📦 Database/SQL
Python SQL Script 작성 Mysql 1227 Error 의 연장선으로 파일들의 GTID를 일일이 삭제하기 귀찮아서 스크립트를 작성했습니다. AWS RDS의 Super Privileged를 얻는데 실패했다면 Python 코드를 이용한 SQL Script를 작성합니다. 스크립트에서 Product Dump의 SQL 파일들을 수정하여 Data Import를 할 수 있습니다. SQL 주석 변환 스크립트를 작성하기 전, 실제 데이터의 Encoding 형식을 확인하는 스크립트를 먼저 실행하고, 아래 스크립트에서 해당 인코딩 방식을 사용하여 디코딩 합니다. 아래 스크립트는 폴더 내부의 .sql을 돌면서 .sql 파일의 인코딩 방식을 리스트에 담고 모아서 출력하는 스크립트 입니다. 터미널에서 pip3 ins..