일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- Helm
- Database
- SW 마에스트로
- Strimzi
- Leaderboard
- Debezium
- hammerDB
- 0 replica
- logback
- slow query
- spring boot
- traceId
- blue-green
- yml
- docket
- SW Maestro
- 동등성
- minreplica
- Kubernetes
- zset
- 스프링부트
- Grafana
- eks
- Salting
- MSSQL
- Software maestro
- Kafka
- keda
- Benchmarks
- propogation
- Today
- Total
목록분류 전체보기 (64)
김태오
https://ystc1247.tistory.com/entry/ORM%EC%97%90%EC%84%9C-VARCHAR-%ED%83%80%EC%9E%85%EC%9D%98-%EC%BB%AC%EB%9F%BC%EC%9D%B4-%ED%8F%AC%ED%95%A8%EB%90%9C-%EC%9D%B8%EB%8D%B1%EC%8A%A4%EB%A5%BC-%ED%83%80%EC%A7%80-%EB%AA%BB%ED%95%98%EB%8A%94-%EB%AC%B8%EC%A0%9C-SQL-Server 의 해결책으로, 파라미터들을 기존의 nvarchar값으로 두되 index를 타는 파라미터들을 varchar/char로 쿼리할 수 있는 방안을 마련해야 한다. 그냥 모두 varchar로 쏘는 방법도 존재하는데, 이는 jdbc url에 setSe..
ORM에서 string 값을 쿼리에 사용할 때 쿼리를 NVARCHAR 타입으로 사용한다는 것이 관찰되었다. 하여 인덱스에 선언되어 있는 컬럼들 중 VARCHAR값이 있는데, 해당 인덱스를 사용하려 한다면 타입이 맞지 않아 인덱스를 타지 않는 문제가 발생하였다. 가령 가장 단순한 형태의 인덱스인 두 가지의 컬럼으로 이루어진 PK__CUST_INFO__7AA72534 (CARE_ORG_ID char(8), CUST_NO varchar(20)) 인덱스를 사용해보자. 통계에 오류가 발생하여 인덱스를 원활히 타지 않는다는 의심도 하여, option(recompile)을 통해 통계를 무시한 쿼리를 실행해본다.select * from cust_info where CARE_ORG_ID = '15887361' and ..
쿠버네티스에는 기본적인 스케일러로 HPA(Horizontal Pod Autoscaler)가 있다. Scale out, scale in 을 위해 존재하며 pod relica 개수를 조절해준다. 이를 조절하는 기준으로 yaml 혹은 api 등으로 명시한 resource metric(CPU, memory 등) 이 target utilization 과의 상하여부를 따져 한다. 간단한 yaml 을 살펴보자.apiVersion: autoscaling/v2kind: HorizontalPodAutoscalermetadata: name: example-hpaspec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: example-deploym..
Debezium은 대표적인 CDC(Change Data Capture) 툴이다. CDC를 쓰는 이유로는 데이터베이스의 변화를 빠르게 감지하여 이벤트를 발생시켜 작업을 함에 있다. 도입하게 된 유즈케이스를 간단히 설명하자면, 어플리케이션에서 POST api 인입 -> A 데이터베이스에 정보 저장 -> 외부 api 호출 -> 호출 성공시 B 데이터베이스에 정보 저장 -> 다른 service method들 실행의 과정에서, 외부 api 가 실패하더라도 A 데이터베이스가 업데이트되어 한 트랜잭션에 묶이지 않았기 때문이다. @Transcational 을 걸고 실패시 롤백 핸들링을 하면 되지 않나 싶겠지만, 외부 api 호출을 async로 던지고 있었기에 불가능했다.아무튼 외부 api 호출을 먼저하고, 호출이 성공..
느린 데이터베이스 쿼리를 콘솔에 로깅하려는 시도를 했다. HTTP intercepter과 비슷한 방식으로 데이터베이스에 쿼리가 처리되는 순간 hibernate 혹은 hikariCP 관련하여 설정파일 구현이 필요하지 않을까 싶었는데 생각보다 간단히 해결할 수 있다. 그냥 application.properties 에 spring.jpa.properties.hibernate.generate_statistics=truelogging.level.org.hibernate=INFOhibernate.session.events.log.LOG_QUERIES_SLOWER_THAN_MS=원하는 단위 시간 MS (0초과) 를 추가하면 된다. yaml 로 설정하는 경우도 마찬가지로 늘 그랬듯 . -> : 로 해주면 된다. 당연히..
데이터베이스에서 트리거는 흔히 데이터 완결성 유지, 검증 등의 비즈니스 필요에 의해 사용된다. 어떤 특정 테이블, 특정 행, 특정 컬럼에 대해 INSERT, DELETE 등 operation 이 일어날 때 같은 트랜잭션에 묶여 기존의 작업에 더해 다른 작업을 수행하는 것이다.그런데 여기에 통상 server application 단에서 하는 API 를 호출하는 작업을 묶을 수도 있다. 우선 서두에 강조할 부분은, 이는 절대 권장하지 않는 행위이다. 앞서 말했듯이 어플리케이션쪽에서 실행되는 데이터베이스 동작과 함께, 컨트롤러와 서비스 레이어에서 API를 호출하는 것이 당연한 절차인데, 굳이 민감하고 ACID성을 유지해야 할 데이터베이스 작업에서 API를 호출함으로 인해 예측하기 힘든 데이터베이스 부하를 일으..