
이전 글에서 자세히 다루지 못 했던 Redis Configuration을 뜯어보려고 한다. @Configuration public class RedisConfig { @Value("${spring.data.redis.host}") private String host; @Value("${spring.data.redis.port}") private int port; @Bean public RedisConnectionFactory redisConnectionFactory() { RedisStandaloneConfiguration redisConfiguration = new RedisStandaloneConfiguration(); redisConfiguration.setHostName(host); redisCo..

이전에 썼던 글에서 언젠가 Redis로 넘어갈 거라고 했었는데, 결국은 안정성 문제로 Redis를 쓰게 됐다. Redis가 고성능 인메모리 캐시라는 것 정도만 알고 있는데, 사용하기 전에 한번 짚고 들어가자. Redis 란? Redis는 데이터베이스, 캐시, 메시지 브로커 및 스트리밍 엔진으로 사용되는 오픈 소스(BSD 라이센스), 메모리 내 데이터 구조 저장소 입니다. Redis는 문자열, 해시, 목록, 세트, 범위 쿼리가 있는 정렬된 세트 , 비트맵 , 하이퍼로그로그 , 지리공간 인덱스 및 스트림과 같은 데이터 구조를 제공합니다. Redis에는 복제 , Lua 스크립팅 , LRU 제거 , 트랜잭션 및 다양한 수준의 디스크 지속성이 내장되어 있습니다. Redis Sentinel을 통한 고가용성과 Red..

회사에서 작은 프로젝트를 진행하는데 Elasticsearch 를 써볼 기회가 생겼다. 들어가기 전에 Elasticsearch 가 뭔지에 대해 간단히 정리해보자 Elasticsearch 란? Elasticsearch는 텍스트, 숫자, 위치 기반 정보, 정형 및 비정형 데이터 등 모든 유형의 데이터를 위한 무료 검색 및 분석 엔진으로 분산형과 개방형을 특징으로 합니다. Elasticsearch는 Apache Lucene을 기반으로 구축되었으며, Elasticsearch N.V.(현재 명칭 Elastic)가 2010년에 최초로 출시했습니다. 간단한 REST API, 분산형 특징, 속도, 확장성으로 유명한 Elasticsearch는 데이터 수집, 보강, 저장, 분석, 시각화를 위한 무료 개방형 도구 모음인 El..

JPA를 사용해 DB insert를 하던 중 뜬금없이 아래와 같은 에러가 났다. java.sql.SQLException: The MySQL server is running with the --read-only option so it cannot execute this statement 흠 DB가 어떤 이유에서인지 read-only 설정이 되어 있군. 인프라 개발자에게 연락해야지. 라고 끝났으면 좋았겠지만, 인프라는 DB 설정을 변경한게 없다고 한다. 웃긴건, 같은 프로젝트의 다른 서비스 내에서의 DB insert는 정상적으로 수행되고 있다는 점이다. 다른 서비스와 차이점을 뜯어보던 중 @Transactional 이 빠져 있는걸 확인했다. @Transactional 어노테이션을 붙이니까 정상 동작했다. 그..

데이터 분산? 데이터를 한 곳에 보관하면 정보 관리 측면에선 좋을 수 있지만, 여러 가지 문제가 발생할 수 있다. 데이터가 늘어나면 데이터 베이스의 용량 이슈도 생기고, 느려지는 CRUD는 자연스레 서비스 성능에 영향을 주게 된다. 때문에 전략적으로 데이터를 분산화해서 관리해야한다. 데이터베이스 분산 전략은 몇 가지 있다. 복제(Replication) : 전체 데이터베이스 또는 그 하위 집합을 여러 서버에 복사하여 각 서버가 읽기 요청을 독립적으로 처리할 수 있도록 분산. 한 서버의 데이터에 대한 모든 변경 사항은 다른 서버로 전파하여 처리한다. 페더레이션(Federation) : 사용자 기반의 서로 다른 부분을 제공하는 여러 개의 작은 데이터베이스로 구성된 데이터베이스 생성 파티셔닝(Partitioni..

최근 CI/CD와 인프라적인 부분에 집중하고 있어서, 개발과 DB에 관련된 내용을 볼 겨를이 없었다. 특히 DB 부분이 부족한 것 같아, 계속해서 작성하려고 한다. 물론 DB 관련 내용은 엄청나게 방대하지만 JPA를 가장 써보고 싶어서, 첫 목적지는 JPA와 querydsl이 될 것 같다. 이 내용들을 써가는 과정에서 인프라적인 부분도 있을 것이기 때문에, 그 부분도 보완해 나가면서 쓰면 좋을 것 같다.(DB는 oracle로 시작하겠지만 웬만하면 redis까지 써볼 것이고, dbcp에 관한 내용도 정리하면 좋을 것 같다) 우선, JPA를 바로 들어가기에 앞서 일단 현재 회사에서 쓰고 있는 SQL Mapper인 MyBatis부터 정리해보고자 한다. (jdbc부터 이야기하기엔 너무 재미가 없다..) ORM인..

DB에 설정을들여다보다가 뜬금없지만, 정규화(Normalization)에 대해 정리를 하고 넘어가는게 좋겠다 생각이 들었다. 정규화의 목적은 DB CRUD 중 이상현상(Abnomaly) 발생과 컬럼 간 종속성을 피하기 위함이다. 삭제 이상: 데이터를 삭제하면, 의도하지 않은 다른 정보까지 삭제되어버리는 현상 삽입 이상: 데이터를 삽입할때, 특정 컬럼에 해당하는 값이 없어 NULL을 입력해야 하는 현상 갱신 이상: 데이터를 갱신할때, 중복된 데이터 중 일부만 수정되어 데이터 불일치 현상 이러한 이상 현상들을 피하기 위해 정규화를 거친다. 정규화를 통해 데이터 중복을 피하고, 무결성을 유지하는게 목표이다. 코딩애플 유튜브를 보면서 정리했다. 1. 제 1 정규화 제 1 정규화는 테이블의 컬럼이 원자값(Atom..

DB를 조회할 때, 조회를 할때마다 테이블 전체를 조회하는 건 너무 비효율적이다. 수십, 수백 단위의 데이터에서는 별 문제가 안될 수 있지만, 수백, 수천만 이상의 데이터가 쌓여있을 때는 큰 문제가 된다. 이럴 때 INDEX를 사용한다. 1. INDEX 란? 데이터베이스에서 인덱스(INDEX)는 쓰기 속도가 느리고 저장 공간이 늘어나는 대신 검색 작업의 속도를 향상시키는 데이터 구조이다. 인덱스의 가장 큰 특징은 데이터들이 정렬이 되어있다는 점이다. 이 특징으로 인해 인덱스를 사용하면 DBMS(데이터베이스 관리 시스템)가 조건 검색을 할 때, 테이블에서 특정 데이터 행을 매우 빠르게 찾고 검색할 수 있다. WHERE 절 테이블의 레코드는 순서 없이 저장되기 때문에 특정 조건에 맞는 데이터를 찾아낼 때도 ..
- Total
- Today
- Yesterday
- ecs
- terraform
- ChatGPT
- elasticsearch
- CORS
- 후쿠오카
- 후기
- Kotlin
- lambda
- CloudFront
- 람다
- OpenAI
- Spring
- AOP
- JWT
- S3
- EKS
- AWS
- GIT
- 오블완
- 스프링부트
- AWS EC2
- 티스토리챌린지
- springboot
- cache
- Log
- docker
- java
- serverless
- object
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |