DB 공부도 좀 빡세게 해야겠다..
데이터베이스
DB는 관련성을 가지는 데이터의 집합, 데이터를 쉽게 저장, 검색, 수정, 삭제할 수 있다
대량의 데이터를 효율적으로 관리하기 위해 필요하다. 데이터의 무결성, 일관성을 유지하고, 쉽게 접근하고 관리 가능
RDBMS = Relational DataBase Management System = 관계형 데이터베이스
엄격한 구조(테이블 형태)와 관계를 갖는 데이터 저장 방식 . 열(column)과 행(row)을 사용해 데이터를 구성
SQL(Structured Query Language)를 통해 접근
- 구조화된 데이터: 데이터는 명확하게 정의된 스키마에 따라 저장
- 테이블 간 관계: 키(주 키와 외래 키)를 통해 테이블 간의 관계를 정립
- 데이터 무결성: 강력한 데이터 무결성을 보장하기 위해 제약 조건을 사용
- 예시: Oracle, MySQL, PostgreSQL
비관계형 데이터베이스(NoSQL)
- 유연한 스키마: 고정된 스키마 없이도 데이터를 저장할 수 있어, 다양한 형태의 데이터를 다룰 수 있다.
- 확장성: 수평적 확장성을 지원하여, 데이터 양이 많아져도 성능을 유지 가능
- 다양한 데이터 모델: 키-값 저장소, 문서 지향 데이터베이스, 와이드 컬럼 스토어, 그래프 데이터베이스 등 다양
- 효과적인 분산 처리: 대용량 데이터에 대한 분산 처리와 병렬 처리에 효과적
- 예시: MongoDB, Cassandra, Redis
🏛 관계형 데이터베이스의 구조와 스키마 설계
스키마는 데이터베이스의 구조를 정의하는 틀이다.
좋은 스키마 설계는 효과적인 데이터 관리와 빠른 검색 성능을 위해 중요! 데이터의 무결성을 보장하고 중복을 방지함
- 정규화: 데이터 중복을 최소화하고 무결성을 유지
- 확장성: 더 많은 속성이나 테이블이 필요하면 쉽게 추가 가능
- 유연성: 다른 테이블과의 관계를 통해 복잡한 쿼리도 수행 가능
JDBC (Java Database Connectivity)
ORM (Object-Relational Mapping)
public User findByID(int id) {
return userRepository.findbyId(id);
}
ORM의 장점
- 유지 보수성: ORM을 사용하면 데이터베이스 구조 변경 시 객체의 매핑만 수정하면 되므로, 유지 보수가 용이
- 데이터베이스 독립성: 추상화를 제공하므로, 다른 종류의 데이터베이스로의 이동이 가능
- 객체 지향적인 접근: 객체 상속, 다형성, 연관성과 같은 객체 지향적인 개념을 데이터베이스 작업에 적용
- 코드 중복 감소: 객체로 매핑하는 작업 없이, ORM은 이 과정을 자동화함으로써 코드 중복 감소
- 트랜잭션 관리 및 캐싱: 트랜잭션 관리 기능과 쿼리 결과의 캐싱을 제공하여 성능을 향상
ORM의 단점
- 성능 : 간단한 건 성능 차이가 나지 않지만 조금 복잡해진 SQL, N+1문제 , 복잡한 조인, 서브쿼리, 등등 데이터베이스의 기능을 사용해야 하는 경우 ORM으로 처리하기 어렵다.
- 학습 곡선: ORM을 효과적으로 사용하기 위해서는 해당 ORM 프레임워크뿐만 아니라, ORM의 내부 작동 방식과 객체-관계 매핑의 복잡성을 이해해야 함
- 디버깅 어려움: ORM이 생성하는 쿼리는 성능에 최적화 되어있지 않기 때문에 문제를 파악하기 위해서는 쿼리를 직접 분석해야 할 수도 있다.
'TIL' 카테고리의 다른 글
TIL - 2024/09/27 (0) | 2024.09.27 |
---|---|
TIL - 2024/09/26 (0) | 2024.09.27 |
TIL - 2024/09/24 (0) | 2024.09.24 |
TIL - 2024/09/23 (0) | 2024.09.23 |
TIL - 2024/09/20 (0) | 2024.09.20 |