마르코의 개발 일기

고정 헤더 영역

글 제목

메뉴 레이어

마르코의 개발 일기

메뉴 리스트

  • 홈
  • 태그
  • 방명록
  • 분류 전체보기 (88)
    • JAVA (5)
    • Spring (9)
    • SpringSecurity (20)
    • 알고리즘 (1)
    • Database (10)
    • AWS (5)
    • 공학지식 (1)
    • SpringBatch (6)
    • SpringCloud (10)
    • Proxy (2)
    • Linux (1)
    • Node (2)
    • 보안 (3)
    • 암호화 (5)
    • 소켓 (1)
    • 프로젝트 일기 (4)

검색 레이어

마르코의 개발 일기

검색 영역

컨텐츠 검색

Database

  • SQL I/O 의 기본

    2023.08.05 by 성찬우

  • [LOCAL] h2 데이터 파일 만들기

    2023.04.13 by 성찬우

  • Transaction session & manager

    2022.09.30 by 성찬우

  • 트랜잭션

    2022.09.24 by 성찬우

  • 데이터 베이스 커넥션 풀(Database Connection Pool)

    2022.09.24 by 성찬우

  • 데이터 접근 기술 - JDBC

    2022.09.21 by 성찬우

  • h2 [Error creating bean with name 'dataSourceScriptDatabaseInitializer']

    2022.09.16 by 성찬우

  • Hash Table Collision

    2022.08.10 by 성찬우

SQL I/O 의 기본

SQL은 보통 ‘구조적 - 집합적 - 선언적’ 인 질의 언어이다. SQL을 통해서 우리가 원하는 바를 구조적, 집합적으로 선언하며 이를 절차적으로 처리한다. 절차적 결국 결과 집합을 만들어 내는데 있어서 “프로시저” 라는 것이 필요하다. 이 프로시저를 만들어내는 *DBMS내부엔진이 바로 “SQL 옵티마이저”이다. (*DBMS = DataBase Management System 즉, 데이터를 만들고 저장하고 관리하는 기술. ) 이렇게 SQL 옵티마이저로 프로시저를 생성하고 컴파일해서 실행 가능한 상태로 만드는 과정을 “ SQL 최적화” 라고한다. SQL 최적화 총 3가지의 진행 과정을 가지고있다. [SQL 파싱 → SQL 최적화 → 로우 소스화] [SQL 파싱] 사용자로부터 SQL을 전달 받으면 SQL 파..

Database 2023. 8. 5. 18:09

[LOCAL] h2 데이터 파일 만들기

오랜만에 h2로 또 하려다 보니 어이없는 에러를 마주했다. 새로운 마음가짐으로 새롭게 시작하자는 마인드로 재 설치한 내가 문제지..ㅠㅠ Database "mem:test" not found, either pre-create it or allow remote database creation 뭐 이런 에러를 만나서 사람 피곤하게 ㅠㅠ... 우선 H2를 설치하고 로컬에서 실행하게 되면 이런 실행 프로그램을 마주할 수 있는데 우클릭으로 Create a new database를 누른다. 이렇게 연결할 수 있다. 쓸데 없는거에 너무 시간 끌렸네 휴 ㅠ

Database 2023. 4. 13. 00:12

Transaction session & manager

우선 트랜잭션을 사용하는데 있어서 중요한 개념이 있다. AutoCommit 기본값은 true 이다. 그렇기 때문에 우리가 sql문을 작성 할때에도 굳이 commit; 을 해주지 않아도 됬었다. 하지만 set autocommit false 로 설정하게 되면 commit 을 하기 전까지 해당 쿼리는 db에 반영되지 않는다. autocommit 즉 트랜잭션을 이해하는데 있어서 우리는 DB세션에 대해서 이해해야한다. DB Session 클라이언트는 DB 서버에 연결을 요청하고 커넥션을 맺고 DB서버는 내부에 세션을 생성하게 된다. 이후에 해당 커넥션을 통한 요청은 이 세션을 통해서 실행된다. 1 커넥션 1세션 커넥션 풀 Size가 10이라면 10개의 세션이 만들어진다라는 의미이다. 세션은 트랜잭션을 시작하고 ,..

Database 2022. 9. 30. 19:14

트랜잭션

트랜잭션이란? 트랜잭션은 단순히 거래를 의미한다. 데이터베이스에서 트랜잭션은 업무 처리의 최소 단위를 안전하게 처리하도록 보장하는 것이다. 위의 예시와 같이 입금을 예시로 들었을 때 A가 B에게 1000원을 입금한다 가정 했을 때, A의 잔고는 줄었지만 B의 잔고는 늘지 않았을 경우 문제가 발생하여 롤백하게 된다. 반대로 정상적으로 출금과 입금이 진행되었을 때는 커밋이라한다. 트랜잭션의 조건 (A-C-I-D) 원자성 [ Atomicity ] 트랜잭션으로 실행한 작업은 모두 성공(commit)하거나 모두 실패(rollback)해야한다. All or Nothing 일관성 [ Consistency ] 트랜잭션이 완료된 결과값이 일관적인 DB 상태를 유지하는 것을 의미한다. 즉, 작업 처리 결과가 항상 일관성 ..

Database 2022. 9. 24. 22:54

데이터 베이스 커넥션 풀(Database Connection Pool)

데이터베이스를 우리가 JDBC를 통해 연결 할시에 매번 연결이 필요하다. 하지만 이렇게 연결을 계속하게 되면 비효율적이기 때문에 캐싱같이 빠르게 데이터를 전달하는 것처럼 일정한 수(보통 10개)의 커넥션을 미리 만들어 놓고 필요한 시점에 애플리케이션에 제공하는 서비스 및 관리 체계 를 의미한다. 사이즈 계산법 : PoolSize = Tn × ( Cm - 1 ) + ( Tn / 2 ) thread count : 16 simultaneous connection count : 2 pool size : 16 * ( 2 – 1 ) + (16 / 2) = 24 커넥션 풀 생성 애플리케이션을 시작할 때 커넥션 풀을 필요한 만큼 미리 확보해 풀에 보관하는 형식이다. 이제 우리는 커넥션 풀을 통해서 이미 생성되어있는 커..

Database 2022. 9. 24. 07:15

데이터 접근 기술 - JDBC

데이터 접근 기술에는 다양하게 존재한다. JDBC JdbcTemplate MyBatis JPA Spring Data JPA Querydsl 각각의 기술의 특징이 다르기 떄문에 한번 정리를 해볼 예정이다. MySQL Architecture 및 JDBC 탄생 배경 클라이언트가 애플리케이션 서버를 통해서 데이터를 저장, 조회, 변경, 삭제 등의 요청을 보내면 서버는 다음과 같이 DB(MySQL)를 사용한다. 커넥션 연결 보통 TCP/IP를 사용하여 연결 SQL 전달 서버에서는 연결된 DB가 이해 가능한 SQL문을 전달 결과 응답 전달 받은 SQL문을 수행하고 결과값을 응답한다. 서버는 이를 활용하여 응답을 내려준다. 해당 그림들은 MySQL을 예시로 들었지만 각각의 DB종류 마다 연결-전달-응답의 방법이 모두..

Database 2022. 9. 21. 16:50

h2 [Error creating bean with name 'dataSourceScriptDatabaseInitializer']

resources 에 sql 파일을 추가해서 h2콘솔에서 직접 데이터를 확인해보려 했는데 갑자기 Error 가 발생했다. org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSourceScriptDatabaseInitializer' defined in class path resource [org/springframework/boot/autoconfigure/sql/init/DataSourceInitializationConfiguration.class]: Invocation of init method failed; nested exception is org.springframework.jdbc...

Database 2022. 9. 16. 16:49

Hash Table Collision

충돌에 대해서 다시한번 정리하자면 특정 알고리즘을 가지고있는 해시함수를 통해 index값을 정하는데 있어서 서로 다른 값 들이 같은 해시함수를 통해 같은 값이 나오는 것이다. 오늘은 이 충돌을 회피 하기 위한 방법에 대해 알아볼 예정이다. Chaining 그림을 확인하자면 " [여기 확인] " 을 보면 된다. 85라는 값을 Insert 했는데 Collision 이 일어낫고 Add to Chain 했다. 그림을 보고 유추 할 수 있지만 하나의 Index 값에 여러개의 값을 Chain형태로 저장을 하는 것이다. 즉, 한 Index 공간에 저장할 수 있는 값을 제한하는 것이 아닌 LinkedList 로 만들어 계속해서 Key 값을 추가 할 수 있다. 하지만 연결된 Index한 공간을 통해서 키를 저장하기 때문..

Database 2022. 8. 10. 02:33

추가 정보

인기글

최신글

페이징

이전
1 2
다음
TISTORY
마르코의 개발 일기 © Magazine Lab
페이스북 트위터 인스타그램 유투브 메일

티스토리툴바