본문 바로가기

WEB개발/DB

(5)
Redis Redis레디스(Redis, Remote Dictionary Server)는 고성능의 인메모리 데이터 저장소로, 데이터베이스, 캐시, 메시지 브로커 등으로 활용됩니다. 비관계형(NoSQL) 데이터베이스로 분류되며, 키-값(Key-Value) 구조로 데이터를 저장합니다. 레디스는 속도가 빠르고 다양한 데이터 구조를 지원하는 것이 주요 특징입니다. 주요 특징인메모리 데이터 저장 : 데이터를 메모리에 저장하여 매우 빠른 읽기 및 쓰기 성능을 제공합니다. 필요하면 데이터를 디스크에 영속화(persistence)하여 데이터 손실을 방지할 수 있습니다.다양한 데이터 구조 지원단순한 키-값 형태 외에도 다음과 같은 구조를 제공합니다:문자열(String)리스트(List)집합(Set)정렬된 집합(Sorted Set, Z..
[DB] Lock, Oracle Lock DataBase는 데이터를 영속적으로 저장하고 있는 시스템입니다. 이런 시스템은 같은 자원(데이터)에 대해서 동시에 접근하는 경우가 생길 수 밖에 없습니다. 이럴 경우 데이터가 오염 될 수 있는데 그렇게 되지 않도록 데이터의 일관성과 무결성을 유지해야할 필요가 있습니다. Lock Lock이란 트랜잭션 처리의 순차성을 보장하기 위한 방법입니다. 트랜잭션이란 DB의 나누어지지 않는 최소한의 처리 단위입니다. 그리고 중요한 것은 DBMS마다 Lock을 구현하는 방식과 세부적인 방법이 다릅니다. 따라서 DBMS를 효과적으로 이용하기 위해서는 해당 DB의 Lock에 대한 이해가 요구됩니다. Lock의 종류 Lock의 종류로는 공유(Shared) Lock과 베타(Exclusive) Lock이 있습니다. 공유락은 다..
[DB] 트랜잭션 격리 수준(isolation level), Transaction(Spring Transactional, Propagation) 1. Transaction(트랜잭션)에 대한 이해 트랜잭션(Transaction)의 필요성 만약 데이터베이스의 데이터를 수정하는 도중에 예외가 발생된다면 어떻게 해야 할까? DB의 데이터들은 수정이 되기 전의 상태로 다시 되돌아가져야 하고, 다시 수정 작업이 진행되어야 할 것이다. 여러 작업을 진행하다가 문제가 생겼을 경우 이전 상태로 롤백하기 위해 사용되는 것이 트랜잭션(Transaction) 이다. 트랜잭션은 더 이상 쪼갤 수 없는 최소 작업 단위를 의미한다. 그래서 트랜잭션은 commit으로 성공하거나 rollback으로 실패 이후 취소되어야 한다. 하지만 모든 트랜잭션이 동일한 것은 아니고 속성에 따라 동작 방식을 다르게 해 줄 수 있다. 예를 들어 1개의 새로운 데이터를 추가하는 와중에 에러가 ..
[DB] 테이블 논리단위, DDL TABLE (CREATE, ALTER, DROP) 1. 논리전 단위 (Logical Unit) 논리전 단위는 데이터베이스 내에서 사용자가 데이터를 다루는 기본적인 논리적인 단위입니다. 일반적으로 테이블이나 인덱스 등이 논리전 단위로 간주됩니다. 이러한 논리적 단위는 물리적인 저장 매체와는 별개로, 데이터를 논리적으로 구성하고 관리하는 단위입니다.예를 들어, 하나의 테이블은 논리적 데이터 단위입니다. 테이블 안에는 행(row)과 열(column)로 구성된 데이터가 논리적으로 저장됩니다.  2. 데이터 블록 (Data Block) 데이터 블록은 데이터베이스에서 가장 작은 물리적 저장 단위입니다. DBMS에서 데이터를 실제로 디스크에 저장할 때 데이터를 블록 단위로 저장합니다. 데이터 블록은 디스크에서 읽거나 쓸 때의 최소 단위입니다.예를 들어, Oracle..
[DB] INDEX : 추가적인 쓰기 작업과 저장 공간을 활용하여 데이터베이스 테이블의 검색 속도를 향상시키기 위한 자료구조 DBMS는 index를 항상 최신의 정렬된 상태로 유지해야 원하는 값을 빠르게 탐색할 수 있다. 그렇기 때문에 인덱스가 적용된 컬럼에 INSERT, UPDATE, DELETE가 수행된다면 각각 다음과 같은 연산을 추가적으로 해주어야 하며 그에 따른 오버헤드가 발생한다.CREATE INDEX index_nameON table_name (column1, column2, ...);DROP INDEX index_name;INSERT: 새로운 데이터에 대한 인덱스를 추가함DELETE: 삭제하는 데이터의 인덱스를 사용하지 않는다는 작업을 진행함UPDATE: 기존의 인덱스를 사용하지 않음 처리하고, 갱신된 데이터..