데이터베이스
-
트랜잭션(Transaction)이란?데이터베이스 2023. 2. 3. 15:57
트랜잭션이란? 데이터베이스 작업의 단위를 의미한다. 트랜잭션의 특징 (ACID) 원자성(Atomicity) 트랜잭션이 데이터베이스에 모두 반영되거나, 모두 반영되지 않아야 한다. (all or nothing) 예) A계좌에서 B계좌로 돈을 송금하는 작업이 있을 때, A계좌에서 돈이 빠지는 것과 B계좌에 돈이 들어오는 것은 함께 성공하거나 함께 실패해야 함. 일관성(Consistence) 모든 트랜잭션이 종료된 후에는 DB의 제약조건을 모두 지키고 있는 상태가 되어야 한다. 예) 잔액은 음수가 될 수 없다. 라는 조건이 있다면 이를 위반하는 트랜잭션은 모두 중단됨. 독립성(Isolation) 하나의 트랜잭션은 다른 트랜잭션과 독립적으로 작동해야 한다. 성능을 생각해 isolation 정도를 조절해 사용한다..
-
RDB(관계형 데이터베이스) NoSQL(비관계형 데이터베이스) 비교데이터베이스 2023. 2. 3. 15:25
RDB(관계형 데이터베이스) 특징 관계형 데이터베이스는 여러 컬럼을 가지는 레코드를 하나의 테이블에 한다. 정규화를 통해 여러 테이블에 데이터를 분산하여 저장한다. 장점 데이터의 무결성을 보장한다. 중복이 적은 데이터에 대해 인덱스를 통해 빠른 정렬이 가능하다. 단점 초기에 생성한 스키마를 나중에 수정하기 어렵다. 데이터베이스 모델링이 완료되어야 이후 개발작업 수행이 가능하다. JOIN을 통해 복잡한 쿼리를 만들어야 하는 경우가 생기고 인덱스가 있어도 인덱스가 잡힌 열에 카디널리티가 낮다면 조회 성능이 낮다. NoSQL(비관계형 데이터베이스) 특징 테이블을 나눌 필요없이 동일한 컬렉션에 데이터를 저장한다. 정규화를 통해 여러 테이블에 데이터를 분산하여 저장한다. 장점 대용량 데이터 처리를 하는데 효율적이..
-
[MySQL] 인덱스(index) 에 대해서데이터베이스 2019. 12. 4. 12:38
DB의 테이블을 읽어들이는 방식은 크게 Full-Scan과 Range-Scan으로 나뉩니다. Full-Scan은 테이블에 포함된 모든 레코드를 처음부터 끝까지 읽는 방식이고,Range-Scan은 테이블의 일부 레코드에만 접근하는 방식입니다. 이 두 가지 방식 중에 Range-Scan을 할 때 인덱스를 이용하면 성능을 향상시키는데 도움이 됩니다. 인덱스 그렇다면 인덱스는 무엇일까요? 인덱스는 책의 목차, 단어장 뒤에 있는 색인과 같이 테이블에 한 열을 이용해 특정 알고리즘을 이용해 따로 정리하여 데이터를 SELECT 할 때 빠르게 조회할 수 있도록 도움을 주는 기능입니다. 인덱스 자료구조 인덱스의 자료구조는 가장 많이 쓰이는 B-Tree방식이 있고 그 이외에 hash, Fractal-tree 방식도 있습니..
-
[mybatis] @Alias 어노테이션에 대해데이터베이스 2019. 10. 31. 14:11
@Alias는 mybatis에서 지원하는 어노테이션으로 TypeAlias, 즉 별칭을 지정할 때 사용합니다. 이 어노테이션을 사용하기 위해서는 sessionFactory 설정 부분에 다음 코드를 추가해야합니다. sessionFactory.setTypeAliasesPackage("@Alias를 적용할 경로") setTypeAliasesPackage() 메서드를 통해 패키지 경로를 정해두면 패키지 내에 @Alias("별칭") 어노테이션이 지정된 클래스는 매퍼파일에서 별칭으로 해당 클래스를 매핑해줍니다. @Alias("user") public class UserDTO { private Long id; private String name; } 매퍼 파일에서 TypeAlias를 지정하지 않으면 com.user.d..