일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 오블완
- docker
- 스프링부트
- 재갱신
- springsecurityoauth2client
- 도커
- 국제화
- 스프링시큐리티
- 프로그래머스
- githubactions
- oauth2
- 리프레시토큰
- 토이프로젝트
- 소셜로그인
- 스프링
- springsecurity
- springdataredis
- java
- 백준
- 파이썬
- Spring
- 트랜잭션
- yaml-resource-bundle
- 티스토리챌린지
- 데이터베이스
- CI/CD
- 메시지
- 액세스토큰
- AWS
- JIRA
- Today
- Total
목록분류 전체보기 (94)
땃쥐네
이 글은 현재 절판된 관계형 데이터베이스 실전 입문 의 1.1 ~ 1.2 부분을 개인적으로 학습하고, 정리한 내용입니다. SQL과 관계형 모델 SQL - 관계형 데이터베이스(RDB)에 질의를 하기 위한 언어 - 관계형 모델이 기반이다. 능력 있는 DB 엔지니어가 되기 위해서는 관계형 모델에 대한 이해는 필수 - 오랜 경험이 누적되면 관계형 모델을 모르더라도 적절히 구문을 사용하면서 SQL을 쓸 수 있긴하다. - 하지만, 진정으로 능력 있는 DB 엔지니어를 목표로 한다면 관계형 모델을 제대로 이해해야한다. RDB는 관계형 모델을 바르게 구현할수록 더운 진가를 발휘한다 - SQL은 관계형 모델을 기반으로 한 언어지만 관계형 모델을 충실하게 재현하지는 않았다. - SQL은 유연성이 매우 높게 설계되었기에 관계..
마이크로 서비스 아키텍쳐(MSA, MicroService Architecture)에 흥미가 생겨서 Spring Cloud를 학습하기 시작했습니다. DevOps의 철학 이해 및 실천에 있어서 MSA 학습은 좋은 경험이라는 생각이 들었습니다. 물론 MSA를 개인 프로젝트에 적용한다거나, 어디 가서 사용할 수 있는 기술 스택이라고 말하기엔 문제가 많을 듯하고 그저 경험으로만 삼기 위해 학습합니다. 생각 이상으로 고려할게 정말 많더라구요. 분산 트랜잭션 처리, Kafka, Jenkins와 같은 CI/CD 툴, ... 등등을 학습해야하는데 이것까지 너무 깊게 들어가면 취준생으로서 소모할 시간이 너무 늘어나게 되니까요. 이번 글에서는 Service Discovery, Gateway를 사용하여 간단한 마이크로서비스 ..
이전 글들에서 커넥션이란 무엇이고 커넥션을 어떻게 획득하는 지(datasource), 트랜잭션이란 무엇이고 왜 필요한 지 등을 한번씩 살펴봤습니다. - [Spring DB] 커넥션과 DataSource - [Spring DB] 순수 JDBC 기술로 CRUD - [Spring DB] 커넥션 풀을 통한 커넥션 획득 - [DataBase] 트랜잭션 및 트랜잭션의 4대 특성(ACID) 이전 글까지는 WAS 측에서의 커넥션을 살펴봤다면 이제 반대쪽 DB 입장에서의 커넥션을 살펴보고, 커넥션과 트랜잭션의 관계를 확인해봅시다. 커넥션, DB 세션, 트랜잭션 WAS와 DB가 커넥션을 맺으면 DB측에서는 '데이터베이스 세션'이란 것을 생성하게 됩니다. 이제 모든 커넥션을 통한 데이터베이스 조작 요청, 조회 요청, 트랜잭..
커넥션과 DataSource 해당 내용은 [Spring DB] 커넥션과 DataSource 에서 다뤘습니다. 간단하게 다시 정리해보겠습니다. 커넥션(Connection) 커넥션의 FQCN(Fully Qualified Class Name, 패키지를 포함하여 타입의 전체 이름)은 java.sql.connection 인터페이스로서, DBMS와의 물리적 연결을 추상화한 계층입니다. 데이터베이스 Driver를 통해 DB와 연결 후 그 연결정보를 담아 생성되는데 이 커넥션을 통해 우리는 DB에 SQL을 전달해 질의할 수 있습니다. DataSource(DataSource) java는 커넥션을 획득하는 방법을 DataSource 인터페이스로 표준화했습니다. 커넥션을 매번 획득하는 방식(DriveManager, Driv..
이전 글 - [Spring DB] 커넥션과 DataSource 이 글은 위의 글에서 이어집니다. 프로젝트 설정 ```groovy dependencies { implementation 'org.springframework.boot:spring-boot-starter-jdbc' compileOnly 'org.projectlombok:lombok' runtimeOnly 'com.h2database:h2' annotationProcessor 'org.projectlombok:lombok' testImplementation 'org.springframework.boot:spring-boot-starter-test' // test에서 Lombok 사용 testCompileOnly 'org.projectlombok:..
선행 지식 [Spring DB] JDBC 표준 인터페이스의 등장 배경 에서 이어집니다. 실습 환경 프로젝트 생성 의존 라이브러리 : Lombok, H2, JDBC API 자바 : 8버전 이후면 상관 없긴한데, 가급적 11 이후 버전 사용 1. MySQL과 같은 DB는 실습 환경에서 사용하기 부담이 큽니다. 2. 이후 다룰 내용이긴한데 H2 데이터베이스는 java로 개발되어 있고, 테스트 시 JVM 안에서 메모리 모드로 동작하는 기능이 제공됩니다. 기본적인 스프링-DB 접근기술의 개념적인 학습에 있어서는 H2 데이터베이스가 가장 좋습니다. build.gradle ```groovy dependencies { // test에서 Lombok 사용 testCompileOnly 'org.projectlombok:l..
웹 클라이언트 - WAS - DB 의 흐름 웹 클라이언트 계층 : 웹 브라우저, 모바일 웹 애플리케이션, PC 웹 애플리케이션, ... 등이 이에 해당 웹 서버 : 외부 클라이언트로부터 요청을 받아, 정적 컨텐츠 리소스(html, css, ...)를 응답하는 계층. 웹 애플리케이션 서버 : 외부 클라이언트로부터 요청을 받아, 동적 컨텐츠 리소스를 응답하는 계층. 여기서는 java단. 데이터베이스 : 데이터 저장, 관리, 등등을 책임지는 계층. 일반적으로 데이터 조작, 조회를 수행하려면 웹 애플리케이션 서버를 거쳐야한다. 웹 클라이언트 계층은 우리 서비스의 웹 애플리케이션 서버(WAS)를 통해 DB의 데이터를 조회, 조작하고, 동적으로 응답을 받을 수 있습니다. 예를 들면, 기차표를 예매할 때 ktx의 코..
이전 글에서 데이터베이스의 트랜잭션이 무엇인지, 트랜잭션의 4대 특성 ACID는 무엇인지 확인해봤습니다. 동시에 실행되는 트랜잭션들이 서로에게 영향을 미치지 않아야 한다는 격리성(Isolation)을 지키기 위해서, 가장 쉬운 방법은 트랜잭션을 순서대로 실행하는 방법이긴 하나, 이대로면 수 백만건의 동시요청이 들어왔을 때 순서대로 진행되느라 매우 오랜 시간이 걸리게 되는 성능 이슈가 발생한다는 것도 확인했습니다. 트랜잭션의 격리 수준을 조절함으로서 이 성능 문제를 관리할 수 있는데, 국제 표준기구인 ANSI에서는 이 '트랜잭션 격리수준'을 어떻게 정의했고 이 수준에 따라 어떤 현상들이 발생하는 지 이번 글에서 다루도록 하겠습니다. 트랜잭션의 격리 수준 완화에 따라 일어나는 현상들 1. 더티 읽기(Dirt..