일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 플라이웨이트
- @Valid
- Connection Pool
- 데이터베이스
- Effective Java
- Service Locator 패턴
- Service Locator
- @SpyBean
- 트랜잭션
- springboot
- SQL 삽입 공격
- NotEmpty
- deleteById
- Web
- NotBlank
- multi module
- @MockBean
- Effetive Java
- 디자인 패턴
- 이펙티브 자바
- FCM
- restTemplate
- JPA
- @ControllerAdvice
- Proxy Patter
- db
- Spring Boot
- Item04
- java
- Firebase
- Today
- Total
목록DB (9)
NoTimeForDawdling
서버는 동시에 사용할 수 있는 사람의 수라는 개념이 존재합니다. 만약에 동시 접속자 수를 초과하게 될 경우 어떻게 될까요? 동시 접속자 수를 초과하게 된다면 에러(예외)가 발생할 겁니다. 예외가 발생하면 그 접속자는 더 이상 처리를 하지 못하므로, 사이트 이용자는 다시 접속을 해야 하는 불편함이 있습니다. 이를 해결하기 위해 탄생한 것이 Connection Pool입니다. Connection Pool이란? Connection Pool이란 동시 접속자가 가질 수 있는 Connection을 하나로 모아놓고 관리한다는 개념입니다. 누군가 접속하면 자신이 관리하는 Pool에 남아있는 Connection을 제공합니다. 하지만 남아있는 Connection이 없는 경우라면 해당 클라이언트는 대기 상태로 전환시킵니다...
SQL Injection이란 SQL Injection은 이용자의 입력값이 SQL 구문의 일부로 사용될 경우, 해커에 의해 조작된 SQL 구문이 데이터베이스에 그대로 전달되어 비정상적인 DB 명령을 실행시키는 공격 기법입니다. 웹 애플리케이션이 데이터베이스와 연동되는 모델에서 발생 가능합니다. SQL Injection이 발생 조건 SQL Injection은 데이터베이스 명령어인 SQL 쿼리문에 기반하여 공격을 수행합니다. 공격에 이용되는 쿼리문은 문법적으로 정상적인 SQL 구문이지만, 실행되지 말아야 할 쿼리문이 실행되어 공격에 이용됩니다. SQL Injection은 다음과 같은 조건을 충족하면 공격이 가능합니다. 웹 애플리케이션이 DB와 연동하고 있다. 외부 입력값이 DB 쿼리문으로 사용된다. 위 두 조..
SQL(관계형 데이터베이스) SQL은 구조화된 쿼리 언어(Structured Query Language)의 약자로 데이터베이스 자체를 나타내는 것이 아니라, 특정 유형의 데이터베이스와 상호 작용하는데 사용하는 쿼리 언어를 말합니다. 즉, SQL은 관계형 DB가 아닌 관계형 DB를 설계하는데 사용되는 언어입니다. SQL의 두 가지 주요 특징 데이터는 엄격한 데이터 스키마(structure)를 따라 데이터베이스 테이블에 저장됩니다. 데이터는 관계를 통해서 연결된 여러 개의 테이블에 분산됩니다. 1. 엄격한 스키마 데이터는 테이블(table)에 레코드(record)로 저장되며, 각 테이블에는 명확하게 정의된 구조(structure)가 있습니다. 구조는 필드의 이름과 데이터 유형으로 정의됩니다. (관계형 데이터..
데이터베이스 데이터 캐싱 캐시란 한 번 읽어온 데이터를 임의의 공간에 저장하여 다음에 읽을 때는 빠르게 결과값을 받을 수 있도록 도와주는 공간입니다. 데이터베이스 데이터 캐싱은 읽기(Read) 성능을 개선시키기 위해 DB와 같은 영구 저장소로부터 로드된 데이터를 빠르게 읽어올 수 있는 Memory 영역에 저장해두는 방식입니다. Cache를 사용할 때 동일한 요청에 대하여 빠른 응답이 가능하며, 최초 요청에 대한 응답을 전송하는 시점에 서버는 DB에서 읽어온 값을 Cache에 저장해 둡니다. 만약, 해당 요청이 다시 한번 들어온다면 서버는 DB가 아닌 Cache에서 동일한 요청 값을 리턴할 수 있을 것이며, DB에서 값을 조회하지 않기 때문에 DB resouce(자원)을 다른 요청에 할당할 수 있게 됩니다..
ORM이란? ORM은 사물을 추상화시켜 이해하려는 OOP적 사고방식과 DataModel을 정형화하여 관리하려는 RDB 사이를 연결할 계층의 역할로 제시된 패러다임입니다. RDB의 모델을 OOP에 Entity 형태로 투영시키는 방식을 사용합니다. 데이터베이스 데이터 -- 매핑 -- Object 필드 객체를 통해 간접적으로 데이터베이스 데이터를 다룹니다. ORM의 장점 객체 지향적인 코드로 인해 더 직관적이고 비즈니스 로직에 더 집중할 수 있게 도와줍니다. ORM을 이용하면 SQL Query가 아닌 직관적인 코드로 데이터를 조작할 수 있어 개발자가 개체 모델로 프로그래밍하는 데 집중할 수 있도록 도와줍니다. 선언문, 할당, 종료 같은 부수적인 코드가 없거나 급격히 줄어듭니다. 각종 객체에 대한 코드를 별도로..
Index의 필요성 DB Index의 필요성을 위해 Full Table Scan을 알아보겠습니다. Full Table Scan(순차 접근) Full Table Scan이란 데이터베이스의 한 릴레이션에서 데이터를 찾거나 재배열하기 위해 데이터가 저장된 목록 중 모든 데이터 요소를 순차적으로 조사하여 원하는 것을 찾아내는 것을 말합니다. 이런 순차 접근에 의한 검색은 Tuple의 수가 많아질수록 검색 시간이 매우 오래 걸립니다. DB는 Index가 설정되어 있지 않으면 Full Table Scan 방식으로 데이터를 찾음으로써 속도가 매우 느려지게 됩니다. 이 문제를 해결하기 위해 DB에서 Index 기능을 제공합니다. Index란? Index는 RDBMS에서 검색도를 높이기 위해 사용하는 기술입니다. 특정 ..
오늘은 Primary Key와 Unique Key의 차이에 대해서 알아보겠습니다. Primary Key Primary Key는 해당 테이블의 식별자 역할을 하는 제약 조건으로 테이블에 하나만 설정할 수 있습니다. 다른 레코드들과 서로 다르다는 사실을 확인할 수 있도록 도와주는 역할을 합니다. 즉, 유일성을 보장해 줍니다. 유일성을 보장해주기 위해서는 Unique 해야 하며 NULL이면 안됩니다.(NOT NULL) Unique Key Unique Key는 테이블 내 항상 유일해야 하는 값을 의미합니다. 즉, 중복을 허용하지 않는 컬럼입니다. 유일해야 하는 값은 레코드당 하나일 필요가 없습니다. 즉, 한 테이블에 여러개 설정이 가능합니다. Unique Key는 NULL값이 허용됩니다. 회원 테이블 예제 회원..
트랜잭션 격리 수준이란? 트랜잭션 격리 수준이란 동시에 여러 트랜잭션이 처리될 때, 특정 트랜잭션이 다른 트랜잭션에서 변경하거나 조회하는 데이터를 볼 수 있도록 허용할지 말지 결하는 것입니다. 즉, 특정 트랜잭션이 다른 트랜잭션에 select, insert, update, delete를 허용할지 말지 결정하는 것입니다. 트랜잭션 격리 수준은 크게 4가지로 나뉩니다. READ UNCOMMITTED READ COMMITTED REPEATABLE READ SERIALIZABLE 4개의 격리 수준에서 순서대로 뒤로 갈수록 각 트랜잭션 간의 데이터 격리(고립) 정도가 높아지며, 동시성은 떨어집니다.(성능 저하) 일반적인 온라인 서비스에서는 READ COMMITTED와 REPEATABLE READ 둘 중 하나를 많..