프로젝트 스펙은 아래와 같이 설정했다.
- 서버에서 가공한 데이터를 뷰에 보여주기 위해 템플릿 엔진 Thymeleaf를 추가했고,
- Spring Data JPA는 JPA를 손쉽게 구현할 수 있도록 추가했고,
- 프로젝트에서 사용할 DB로 MySQL을 사용하려 했고,
- H2는 자바기반의 RDMBS로 메모리 데이터 베이스 기능을 지원해 비록 데이터를 영구적으로 저장하는데 권장되진 않지만,
매우 가볍고 빠른 데이터베이스다. 그래서 테스트용 DB로 많이 사용된다.
왜 MySQL을 썼는가?
여러가지 이유가 있겠지만, "쇼핑몰을 구현하는데 MySQL이 손색없기 때문이다." 라는 이유가 가장 적합하겠다.
MySQL의 장점으로는
1. 많은 사용자가 한번에 DB에 접근할 수 있다는 것
2. 다른 프로그래밍 언어와 통합이 가능하다는 것
3. 큰 RAM이 필요없는 가벼운 프로그램이라는 것.(거의 1MB)
4. MAC, Linux, Windows등 다양한 운영체제에서 안정적이게 사용가능하다는 것.
5. 테이블 구조가 유연하다는 것 (확장가능)
6. 오픈 소스 DBMS로, 무료로 사용할 수 있다는 것.
7. MySQL Workbench로 손쉽게 관리가 가능하다는 것
8. 보안기능이 뛰어나다는 것(암호화, 서브넷 마스크 수준, 호스트 이름, 사용자 엑세스권한 등)
9. 간단한 쿼리를 처리할 때 속도가 매우 빠르다. (대용량처리도 용이)
10. API 함수를 사용해 다양한 응용 프로그램, 타 언어와 인터페이스 교류 가능.
11. 다른 데이터 관리 툴에 비해 구조가 간단 -> 사용하기가 쉽다.
단점으로는
1. 큰 데이터 베이스로 적용하기 어렵다는 점이 있으나
-> 토이프로젝트로 구현하기에 어려움이 없다. 추후 실제로 대용량 트래픽을 관리하면 Oracle 등으로 바꿔줄 필요가 있다.
2. 복잡한 쿼리는 성능이 저하된다.
3. 트랜잭션 지원이 완벽하지 않다는 점*
4. 사용자 정의 함수의 사용이 쉽지 않고 유연하지 않다는 점이 있다.
Oracle과의 차이점을 들자면,
🔑구조적 차이로는
Oracle: DB서버가 통합된 하나의 스토리지를 공유하는 방식
MySQL: DB서버마다 독립적인 스토리지를 할당하는 방식
🔑조인 방식의 차이로는
Oracle : 중첩 루프조인, 해시 조인, 소트 머지 조인 방식을 제공.
MySQL: 중첩 루프조인 방식을 제공.
🔑확장성의 차이로는
Oracle: 별도의 DBMS를 설치해 사용할 수 없고,
MySQL: 별도의 DBMS를 설치해 사용할 수 있다.
🔑메모리의 차이로는
Oracle: 메모리 사용률 큼. (최소 수백 MB이상)
MySQL: 메모리 사용률 작음(1MB 이하)
⚔️오라클의 특징
- 다수의 사용자가 동시에 접근 가능
- 변경 plan을 작성하고 실제 구현하기 전에 변경 사항의 효과를 볼 수 있다.
- 오류가 발생하면 설정되어있는 계정 및 이메일로 연락이 온다.
- DBMS 실행 컴퓨터/서버역할 컴퓨터/DB 응용 프로그램 실행 컴퓨터가 각각 다르게 분산처리한다.
- 고성능의 트랜잭션 처리
- 비용적인 부담
- 기능이 많아 초보자에게 어려움
- 높은 지원 하드웨어 사양이 필요하다.
상품엔티티 설계
엔티티: 데이터베이스의 테이블에 대응하는 클래스!
@Entity가 붙은 클래스는 JPA에서 관리하며 엔티티라고 한다.
'Programming > SpringBoot' 카테고리의 다른 글
팩토리 메서드 of를 사용하는 이유(계속 업데이트) (0) | 2023.06.19 |
---|---|
[SpringBoot]간단한 게시판 만들기 (0) | 2022.12.01 |