no image
[Redis] Sorted Sets, Streams
Sorted Set 일명 ZSets는 Redis 같은 데이터 베이스 시스템에서 사용하는 데이터 구조로, 각 요소가 유일한 문자열과 연관된 점수를 가지며 이 점수에 따라 자동으로 정렬되는 집합입니다. ZSets은 실시간 순위 표시나, 범위 검색, 점수 업데이트 와 같이 정렬된 데이터에 대한 빠른 접근이 필요한 애플리케이션에서 유용하게 사용됩니다.ZADD$ ZADD points 10 TeamA 10 TeamB 50 TeamCSorted Set에 하나 이상의 멤버와 그에 해당하는 점수를 추가합니다. 여기서 points라는 이름의 Sorted Set에 TeamA, TeamB에 각 점수 10, TeamC에 점수 50을 할당하고 있습니다. 만약 이미 존재하는 멤버의 점수를 업데이트할 때는 이 명령어를 다시 사용해서..
2024.05.03
DB
no image
[Redis]Sets,Hashes
Sets집합(SET)은 수학에서 유래된 개념으로, 중복을 허용하지 않고 순서에 상관없이 요소를 저장하는 데이터 구조입니다. 프로그래밍에서 집합은 자료형 중 하나로, 각각의 요소가 유일해야 하며 일반적으로 해시 테이블을 이용하여 구현됩니다. 이로 인해 집합 내의 요소들은 정렬되지 않습니다.주요 특징중복 없음집합에 같은 요소가 두 번 추가될 수 없습니다.순서 없음요소들은 특정 순서로 저장되거나 반환되지 않습니다.효율적인 연산레디스 집합 연산은 일반적으로 매우 빠르며, 요소의 추가, 삭제, 조회가 O(1) 시간 복잡도로 이루어질 수 있습니다.기본 연산SADD추가(SADD) 하나 이상의 요소를 집합에 추가합니다.$ SADD user:1:fruits apple banana orange orangeuser:1:fr..
2024.05.02
DB
no image
[Redis] String, List
StringRedis의 Strings는 여러 가지 타입의 데이터를 저장할 수 있는 가장 기본적인 구조이며 Strings는 문자열, 숫자, 직렬화된 객체등 다양한 형태의 데이터를 저장할 수 있습니다.$ SET lecture jooRedis에서 "lecture"라는 키에 "joo"라는 값을 설정합니다. 이것은 단일 키-값 쌍을 설정하는 일반적인 명령어입니다. $ MSET price 100 language koRedis에서 여러 개의 키-값 쌍을 한 번에 설정합니다. "price" 키에 100을, "language" 키에 "ko"를 설정합니다. $ MGET lecture price languageRedis에서 여러 개의 키에 대응하는 값을 가져옵니다. 여기서는 "lecture", "price", "lang..
2024.05.01
DB
no image
REDIS
Redis(Remote Dicionary Server)Redis는 "Remote Dictionary Server"의 약자로, 주로 애플리케이션 캐시나 빠른 응답 속도를 가진 데이터베이스로 사용되는 오픈 소스 인메모리 NoSQL 키/값 저장소입니다. Redis는 디스크나 SSD가 아닌 메모리에 데이터를 저장하여 탁월한 속도, 안정성 및 성능을 제공합니다. 이를 통해 데이터를 메모리에 저장하여 읽기 및 쓰기 성능을 극대화하고, 데이터를 사용자에게 더 가깝게 배치하여 대기 시간을 최소화할 수 있습니다. Redis는 다양한 데이터 구조를 지원하며, Lua 스크립팅과 여러 수준의 온디스크 지속성 및 고가용성을 제공하여 유연하고 확장 가능한 데이터 관리 솔루션을 제공합니다.Redis 특징In-Memory 데이터 저..
2024.04.30
DB
no image
벌크 연산
벌크 연산일괄 처리를 위해 대량의 데이터를 처리하는 작업입니다. 데이터베이스에서 UPDATE 또는 DELETE 쿼리를 사용하여 한 번에 여러 행을 변경하는 것이 일반적인 입니다. JPA에서 벌크 연산은 대량의 데이터를 변경하기 위한 메커니즘을 제공합니다. 일반적으로 영속성 컨텍스트를 통해 개별 엔티티의 변경을 추적하고, 트랜잭션을 커밋할 때 변경 사항을 데이터베이스에 반영합니다. 그러나 벌크 연산은 단일 엔티티의 변경을 추적하고, 트랜잭션을 커밋할 때 변경사항을 데이터베이스에 반영합니다. 그러나 벌크 연산은 단일 엔티티의 변경이 아닌 여러 엔티티에 대한 변경을 수행할 때 사용합니다. 이러한 변경은 일반적으로 JPA의 더티 채킹 메커니즘이나 트랜잭션 커밋 시점에만 적용되는 것이 아니라, 데이터 베이스에 대..
2024.04.29
no image
Queue?
Queue? Queue는 줄을 서다라는 뜻으로 큐에 먼저 들어간 데이터가 먼저 나오는 자료 구조입니다. 스택과 마찬가지로 예를 들어보면 맛집에서 줄을 선 순서대로 입장하는 것과 똑같습니다. 이런 큐의 특징을 선입선출 또는 FIFO라고 하며 큐에서 삽입하는 연산을 Enqueue, 꺼내는 연산을 Dequeue라고 합니다. 큐의 특징 Enqueue 큐에 데이터를 추가하는 작업이며 새로운 데이터는 항상 큐의 끝에 추가됩니다. // 큐에 데이터를 추가하는 메서드 public void enqueue(E item) { // 만약 큐의 용량이 가득 찬 경우 예외 처리를 할 수도 있습니다. if (isFull()) { System.out.println("Queue is full. Cannot enqueue."); ret..
2024.04.12
no image
OSIV
OSIV 소프트웨어 개발에서 주로 웹 애플리케이션에서 사용되는 패턴 중 하나입니다. 이 패턴은 영속성 컨텍스트를 뷰까지 확장하여 데이터베이스 트랜잭션의 영향 범위를 확장시키는 기능을 제공합니다. 주로 JPA나 Hibernate와 같은 영속성 프레임워크에서 사용됩니다. 일반적으로, 웹 애플리케이션에서는 클라이언트의 요청을 처리하는 동안 여러 개의 데이터베이스 조회가 발생할 수 있습니다. 이 경우, 각각의 데이터베이스 조회는 별도의 트랜잭션을 필요로 합니다. 그러나 웹 애플리케이션에서는 주로 한 번의 요청을 대해 한 번의 트랜잭션을 사용하게 됩니다. 이는 뷰를 렌더링 하기 위해 여러 데이터베이스 조회가 필요할 때 문제가 될 수 있습니다. 예를 들어 뷰에서 지연 로딩을 통해 연관된 엔티티를 로드하려고 할 때 ..
2024.04.10
no image
One Two Many fetch Join
One Two Many fetch Join 페이징 페치 조인을 사용해 보았습니다. 이런 HHH90003004: firstResult/maxResults specified with collection fetch; applying in memory 오류가 발생했습니다. 이 오류는 컬렉션 페치 조인에 적용된 상태에서 페이징을 적용할 때 발생하며, 이는 Hibernate가 컬렉션을 메모리에 로드한 후에 페이징을 적용해야 한다는 것을 의미합니다. 이러한 상황에서는 데이터가 적은 경우에는 큰 문제가 되지 않지만, 데이터가 많으면 성능 이슈가 발생할 수 있고, 때로는 메모리 초과 예외가 발생할 수도 있습니다. 이러한 이유로 Hibernate는 경고 메시지를 통해 알려줍니다 해결 방법 쿼리 수정 컬렉션 페치 조인 대신..
2024.04.05
no image
@Not Empty
@Not Empty Java 애플리케이션에서 주로 사용되는 유효성 검사입니다. Spring Boot나 Jakarta와 같은 프레임 워크에서 사용되며, 주어진 필드가 비어있지 않고 , 빈 문자열이 아님을 확인하는 데 사용됩니다. 이를 통해 @NotNull이나 @Not Black와 함께 사용하여 포괄적인 유효성 검사를 제공할 수 있습니다. 검사 대상 클래스 필드에 적용하여 해당 필드가 유효한 값으로 채워져야 함을 나타냅니다. 메서드의 매개변수에 적용하여 해당 매개변수가 null이 아니고 , 빈 문자열이 아닌지를 검사하빈다. 동작 방식 @NotEmpty 유효성 검사 시 값을 검사하기 전에 null 체크를 수행합니다. 값이 null일 때 검증 실패로 간주 되며 빈 문자열("")도 유효하지 않은 값으로 간주하여 ..
2024.04.01