본문 바로가기
반응형

Back/DB10

[DB] DECIMAL 📌 DECIMAL : decimal 은 큰 숫자를 처리할 때 사용한다. ( -10^38+1 ~ 10^38-1 ) ✔️ decimal 을 주로 사용하는 데이터 1. 금액 및 가격 데이터 - 통화 단위를 포함한 금액이나 가격 정보는 정확한 십진법 연산을 요구한다. DECIMAL은 화폐 값의 정확성을 유지하면서 연산을 수행할 수 있다. 2. 세금 및 환율 데이터 - 세금이나 할인율과 같은 비율은 소수점 아래의 정밀도를 필요로 한다. 예를 들어, 5% 할인율을 정확히 표현하려면 소수점 아래 2자리의 정밀도가 필요하다. 3. 물리적 측정 - 무게, 길이, 부피와 같은 물리적 측정 값들도 정확한 연산을 위해 DECIMAL을 사용할 수 있다. 4. 비율 및 백분율 - 어떤 값이 전체에 대한 비율을 나타내는 경우 DE.. 2023. 8. 25.
[DB] PostgreSQL 과 MariaDB 의 특징, 차이점 📌 PostgreSQL 과 MariaDB 의 특징 ◽ PostgreSQL : 강력한 오픈 소스 관계형 데이터베이스 관리 시스템(RDBMS) - 확장성: PostgreSQL은 대규모 데이터베이스 및 사용자 요구를 처리할 수 있는 뛰어난 확장성을 제공한다. 복제, 파티셔닝, 클러스터링 등 다양한 기능을 활용하여 성능과 가용성을 높일 수 있다. - 트랜잭션 지원: PostgreSQL은 ACID(원자성, 일관성, 고립성, 지속성) 특성을 준수하여 데이터 일관성과 신뢰성을 보장한다. 트랜잭션의 원자성을 유지하고, 병행성 제어를 통해 동시성 문제를 관리하며, 데이터 손실을 방지하기 위해 트랜잭션 로그 기능을 제공한다. - 외래 키 제약 조건: PostgreSQL은 외래 키(Foreign Key)를 지원하여 데이터 .. 2023. 7. 18.
[DB] 스프링 트랜잭션 ✔ 스프링 트랜잭션 사용 방식 ① 선언적 트랜잭션 관리 • @Transactional 애노테이션 하나만 선언해서 매우 편리하게 트랜잭션을 적용하는 것을 선언적 트랜잭션 관리라 한다. • 선언적 트랜잭션 관리는 과거 XML에 설정하기로 했다. • 이름 그대로 해당 로직에 트랜잭션을 적용하겠다 라고 어딘가에 선언하기만 하면 트랜잭션이 적용되는 방식이다. ② 프로그래밍 방식 트랜잭션 관리 • 트랜잭션 매니저 또는 트랜잭션 템플릿 등을 사용해서 트랜잭션 관련 코드르 직접 작성하는 것을 프로그래밍 방식의 트랜잭션 관리라 한다. → 프로그래밍 방식의 트랜잭션 관리를 사용하게 되면, 애플리케이션 코드가 트랜잭션이라는 기술 코드와 강하게 결합된다. → 선언적 트랜잭션 관리가 프로그래밍 방식에 비해서 간편하고 실용적이기.. 2023. 5. 18.
[DB] QueryDSL ✔ QueryDSL • 쿼리를 Java로 type-safe 하게 개발할 수 있게 지원하는 프레임워크 • 주로 JPA 쿼리(JPQL)에 사용한다. ➕ JPQL(HQL) - 장점 : SQL QUERY 와 비슷해서 금방 익숙해진다. - 단점 : type-safe 가 아니며, 동적쿼리 생성이 어렵다. • 쿼리에 특화된 프로그래밍 언어 (쿼리 + 도메인 + 특화 + 언어) • 단순, 간결하고 유창하다. ✔ SpringDataJPA + Querydsl • SpringData 프로젝트의 약점은 조회이다. -> Querydsl 로 복잡한 조회 기능을 보완한다. ✔ QueryDSL 장점 : Querydsl 덕분에 동적 쿼리를 매우 깔끔하게 사용할 수 있다. List result = query .select(item) ... 2023. 5. 12.
[DB] JPA ✔ JPA • CRUD + 쿼리 : 단순히 CRUD 만 하는 것이 아니고, 쿼리에 대한 부분도 어느정도 지원이 된다. • 동일한 인터페이스 : CRUD Repository (저장소) • 페이징 처리 • 메서드 이름으로 쿼리 생성 • 스프링 MVC 에서 id 값만 넘겨도 도메인 클래스로 바인딩 ✔ JPA 의 기능 ➕ Spring Data JPA public interface MemberRepository extends JpaRepository { // 실제 아무것도 없음 } 위의 MemberRepository가 Spring Data가 제공하는 JpaRepository만 상속받으면 • S save(S entity) • void delete(ID id) • Optional findById(ID id) • It.. 2023. 5. 12.
[DB] MyBatis build.gradle -> dependencies 안에 추가 implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:2.2.0' apploication.properties 에 추가 (test > resoueces > application.properties 에도 추가) #MyBatis mybatis.type-aliases-package=hello.itemservice.domain mybatis.configuration.map-underscore-to-camel-case=true logging.level.hello.itemservice.repository.mybatis=trace src > main > java > hello.itemser.. 2023. 5. 9.
[DB] JdbcTemplate ✔ JdbcTemplate : SQL을 직접 사용하는 경우에 스프링이 제공하는 JdbcTemplate 은 아주 좋은 선택지다. JdbcTemplate 은 JDBC 를 매우 편리하게 사용할 수 있게 도와준다. • 장점 - 설정의 편리함 : 별도의 복잡한 설정 없이 바로 사용할 수 있다. - 반복 문제 해결 : JdbcTemplate 은 템플릿 콜백 패턴을 사용해서, JDBC 를 직접 사용할 때 발생하는 대부분의 반복 작업을 대신 처리해준다. 개발자는 SQL을 작성하고, 전달할 파라미터를 정의하고, 응답 값을 매핑하기만 하면 된다. • 단점 - 동적 SQL을 해결하기 어렵다. ✔ JdbcTemplate 설정하기 • build.gradle 의 dependencies 에 추가해야 할 것 //H2 데이터베이스 추.. 2023. 5. 8.
[DB] H2 데이터베이스 설치 https://www.h2database.com/html/main.html H2 Database Engine H2 Database Engine Welcome to H2, the Java SQL database. The main features of H2 are: Very fast, open source, JDBC API Embedded and server modes; in-memory databases Browser based Console application Small footprint: around 2.5 MB jar file size Supp www.h2database.com Window Installer / All Platfoms 둘 중 원하는 거 다운 받으면 된다. 난 All Platforms.. 2023. 5. 4.
[DB] Sharding (샤딩) ✔ Shading 샤딩은 수평 분할(Horizontal Partitioning)과 동일하며, 인덱스의 크기를 줄이고, 작업 동시성을 늘리기 위한 것이다. 수평 분할이란 스키마가 같은 데이터를 두 개 이상의 테이블에 나누어 저장하는 디자인을 말한다. 데이터베이스를 샤딩하게 되면 기존에 하나로 구성될 스키마를 다수의 복제본으로 구성하고 각각의 샤드에 어떤 데이터가 저장될 지를 샤드키를 기준으로 분리한다. 샤딩과 수평적 파티셔닝과의 차이점은 수평적 파티셔닝은 동일한 DB 서버 내에서 테이블을 분할하는 것이고, 샤딩은 DB 서버를 분할한다는 것이다. 즉, DB 서버의 부하를 분산할 수 있다. ◽ 요구사항 : 샤딩을 하기 위해서는 아래의 공통된 요구사항이 필요하다. • 라우팅을 위해 구분할 수 있는 유일한 키값이.. 2023. 4. 27.
[DB] Replication (복제) ✔ Replication Replication은 복제를 뜻하며 2대 이상의 DBMS를 나눠서 데이터를 저장하는 방식이며, 사용하기 위한 최소 구성은 Master / Slave 구성이어야 한다. • Master DBMS 역할 : 웹서버로 부터 데이터 등록, 수정, 삭제 요청 시 바이너리로그(Binarylog)를 생성하여 Slave 서버로 전달한다. (웹 서버로부터 요청한 데이터 등록, 수정, 삭제 기능을 하는 DBMS로 많이 사용된다.) • Slave DBMS 역할 : Master DBMS로 부터 전달받은 바이너리로그를 데이터로 반영하게 된다. (웹 서버로부터 요청을 통해 데이터를 불러오는 DBMS로 많이 사용된다.) ◽ Replication을 사용하는 이유 ① 스케일 아웃(Scale-out) → 사용자가.. 2023. 4. 27.
반응형