본문 바로가기

개발기술/데이터베이스

(9)
MySQL InnoDB 잠금 MySQL InnoDB 잠금데이터베이스의 격리수준 뿐만 아니라 동작의 종류에 따라서 잠금이 사용되기도 되지 않기도한다.   DQL(Data Query Language)일반적인 Select문으로 MVCC를 사용하여 잠금없는 읽기로 동시처리한다. 해당 쿼리문은 잠금이 필요없는 동작이므로 Lock 획득을 위한 대기가 필요없이 동작한다. 스냅샷을 구성하여 읽으므로 repeatable read에서는 일관적인 데이터 읽기가 가능하다 DML(Data Manipulation Language)Insert, Update, Delete 그리고 Select for Share/Update (locking read라고 불림) 와 같은 동작은 MVCC 메커니즘이 아니라 잠금(Lock)이 관여한다.  상황에 따라 잠금 획득을 기다..
SQL과 NoSQL 1. SQL과 NoSQL 구조관계형 데이터베이스 (RDBMS):RDBMS는 데이터를 테이블 형태로 저장하며, 정해진 스키마(schema)에 따라 제약을 준수함테이블 내에서 정합성을 유지하기 위해 데이터 구조(예: 데이터 타입, 열의 개수)를 반드시 충족해야 함.테이블 간에 정합성을 유지하기 위해서 외래키(Foreign Key)를 사용해서 관계(Relation)를 충족해야함 RDBMS는 데이터 중복을 줄이고 정합성을 유지하기 위해 데이터를 여러 테이블로 분리합니다(정규화).테이블 간에 강력한 **참조 무결성(Referential Integrity)**을 보장해야 하므로, 특정 테이블에 대한 연산이 다른 테이블에 영향을 줄 수 있습니다.**ACID(Atomicity, Consistency, Isolation..
Redis 사용법 (Redis환경설정, Spring Redis) 캐쉬전략 고려요소전체 DB 데이터의 10%~20% 정도만 Redis에 캐싱→ 자주 조회되는 데이터만 캐싱하고, 나머지는 DB에서 조회하는 것이 일반적 DB 대비 Redis 저장 비율을 결정하는 요소요소설명캐시 저장 비율 영향데이터 액세스 패턴자주 조회되는 데이터인지?빈번한 조회 데이터일수록 캐싱 비율 높여야 함데이터 크기캐싱할 데이터가 크다면?큰 데이터는 캐싱 비율을 낮춰야 함 (RAM 절약)데이터 변경 빈도자주 변경되는 데이터인가?변경이 많으면 캐싱 비율 낮춰야 함TTL(Time To Live)캐시 만료 시간을 짧게 설정?짧을수록 캐싱된 데이터 양이 줄어듦DB 부하DB가 병목인가?DB 부하가 크면 Redis 캐싱 비율을 높여야 함  Redis 캐슁전략✅ LRU는 "오래 사용되지 않은 데이터"를 삭제 →..
데이터 베이스 최적화 전략 데이터베이스 전략 설정시 고려사항매일 1천건? 1만건? 수십만건?데이터 규모 측정: 예상되는 데이터의 총량과 일별, 월별 증가량을 예측합니다. 이를 기반으로 데이터베이스 서버의 저장 용량, 메모리, CPU 성능 등을 계획해야 합니다.확장 전략: 데이터베이스가 수평적 또는 수직적으로 확장 가능하도록 설계합니다. 수평 확장은 여러 서버에 데이터를 분산시키는 방법으로, NoSQL 데이터베이스에서 일반적입니다. 수직 확장은 서버의 자원(디스크, CPU, 메모리)을 증가시키는 것입니다.1. 데이터 규모 측정 및 예측용량 계획: 데이터베이스의 초기 크기와 예상되는 성장률을 바탕으로, 적절한 저장소 용량을 확보해야 합니다. 데이터베이스 성능은 디스크 용량과 밀접한 관련이 있습니다. 디스크 I/O는 데이터베이스 성능의..
데이터베이스 기술개념 - [북스터디] 데이터 베이스를 지탱하는 기술 1.데이터 베이스가 없으면 무엇이 곤란한가? 2. 인덱스로 고속 액세스 실현하기인덱스의 개념인덱스 : 리스트의 인덱스는 각 요소가 저장된 순서를 나타내는 숫자라면, 데이터베이스의 인덱스는 찾고자하는 레코드의 위치를 빠르게 탐색하기 위한 별도의 자료구조(B tree, Hash Table)이다. 데이터베이스는 Update문을 실행시킬때, record와 함께 index도 업데이트 하여 1가지 이상의 업데이트 행위를 함. 인덱스의 기본 원리 : 인덱스의 기본적인 원리는 대규모 데이터 집합에서 특정 데이터를 빠르게 찾기 위해 정렬된 상태를 유지하는 것입니다. 인덱스는 데이터베이스의 전체 데이터를 스캔하는 대신, 인덱스가 가리키는 특정 경로를 통해 데이터를 찾아 접근 시간을 단축합니다. B-트리 인덱스BST의 이진..
데이터베이스 트랜잭션 개념과 구현 (MYSQL InnoDB) 키워드 : 언두로그, MVCC, 레코드락, 갭락, 넥스트락, 격리수준, 잠금없는일관된읽기목적 : 애매한 용어들을 명확하게 정의하고자한다. 데이터 베이스의 주요 특징 (ACID)데이터베이스 트랜잭션이 데이터의 신뢰성과 일관성을 보장하기 위한 4가지 특징Atomicity (원자성):  All or nothing 트랜잭션으로 묶인 작업은 모두 실행되거나 혹은 모두 실행되지 않아야한다.Consistency (일관성): 트랜잭션 작업의 결과는 항상 일관적이어야한다. 모든 트랜잭션이 종료될 시에는 데이터는 DB의 제약조건을 지키고 있는 상태가 되어야한다.Isolation (격리성): 프로그램 내에는 여러가지 트랜잭션이 존재하지만 트랜잭션은 다른 트랜잭션과 독립적으로 동작해야한다. 서로 영향을 주지 않도록 고립되어..
데이터 모델링, 무결성, 정규화, ERD작성 데이터 모델링  비즈니스를  추상화, 단순화, 명확화 표기하기 위해서 분석하고 데이터화 시키는 것, 정보시스템을 구축하는 과정에서 계획.분석.설계 단계에서 업무를 분석하고 설계할 때 또한, 이후 구축.운영 단계에서 변경과 관리할 때 사용됨.  데이터 모델링표기기법1. 피터첸 : 엔터티를 사각형, 엔터티간 관계를 마름모, 엔터티의 속성을 타원형 으로 표현.2. I/E Crow's Foot (까마귀발) : 데이터 모델링 개념도메인 - 도메인은 비즈니스 문제 영역 전체를 포괄하는 개념으로, 이를 모델링하는 과정에서 객체가 아닌 형태로 표현되는 요소(비즈니스 로직 등)도 있을 수 있습니다.엔터티 - 엔터티는 도메인 모델을 구성하는 특정한 요소로서, 도메인 내에서 고유한 식별자를 가지는 개별 객체를 의미합니다. ..
SQL 사용법 SQL문SQL : DBMS와 대화하기위한 특수목적의 언어로 데이터 그 자체 혹은 데이터를 관리하는 계정, 인스턴스를 관리한다SQL은 1. 데이터정의어 (초기화) 2. 데이터 조작어 (활용) 3. 데이터 제어(권한부여)어로 이루어져있다. SQL문을 포함한 표기법 정리java entity(파스칼 표기법)를 생성해서 db(스네이크 표기법)에 맵핑시킬때도 자동적으로 스네이크 표기법으로 변환되서 맵핑된다.ZEROBASE_MEMBER : 대문자 언더바, 스네이크 표기법 (DB)zerobase_member : 언더바, 스네이크 표기법(C언어, 파이썬)zerobaseMember : 카멜 표기법 (Java )ZerobaseMember : 파스칼 표기법 (Java 클래스, C#)zerobase-member : 케밥 표기법..