목록전체 글 (157)
Rootable의 개발일기
📌 RDBMS 스키마에 맞춰 데이터를 관리하기 때문에 데이터의 정합성을 보장한다. 하지만, 시스템이 커질수록 쿼리가 복잡해지고 성능이 저하되며 Scale-out이 어렵다. (Scale-up만 가능) Scale-Up과 Scale-Out 인프라 확장 문제를 해결하기 위한 방법 Scale-Up은 기존 서버의 사양을 업그레이드해 시스템을 확장하는 것을 말한다. CPU나 RAM 등을 추가하거나 고성능의 부품, 서버로 교환하는 방법이 있다. 이처럼 하나의 서버 사양을 업그레이드하기 때문에 수직 스케일로 불리기도 한다. Scale-Out은 서버를 여러 대 추가하여 시스템을 확장하는 것을 말한다. 서버가 여러 대로 나뉘기 때문에 각 서버에 걸리는 부하를 균등하게 해주는 '로드밸런싱'이 필수다. 이처럼 여러 대의 서버로..
📌 데이터베이스란 데이터베이스는 물리 데이터 모델을 구현한 결과물이며 구축된 실제 데이터가 저장되는 데이터 저장소를 의미한다. 데이터베이스 내에서 생성된 모든 객체는 DBMS 자체의 데이터 사전에 의해 관리된다. 데이터 사전(Data Dictionary) 데이터베이스를 구성하고 운영하는 데 필요한 모든 정보를 저장하는 특수한 테이블로 데이터베이스가 생성되는 시점에 자동으로 만들어진다. 오라클 데이터베이스는 명령이 실행될 때마다 데이터 사전을 Access 한다. 데이터베이스 작업 동안 오라클은 데이터 사전을 읽어 객체의 존재여부와 사용자에게 적합한 Access 권한이 있는지를 확인한다. 또한 오라클은 데이터 사전을 계속 갱신하며 DATABASE 구조, 감사, 사용자 권한, 데이터 등의 변경 사항을 반영한다..
📌 인덱스란? 만약 다음과 같은 데이터베이스에서 age가 23인 사원을 찾아야 한다면 컴퓨터는 조건에 맞는 값을 찾을 때까지 검색을 계속할 것이다. 그런데 만약 데이터가 1억 개가 된다면 해당 데이터를 찾기 위해 오랜 시간이 걸리게 된다. 그래서 인덱스를 사용하여 타깃에 대한 빠른 접근을 도와준다. 인덱스란 추가적인 쓰기 작업과 저장 공간을 활용하여 데이터베이스 테이블의 검색 속도를 향상시키기 위한 자료구조를 말한다. 📌 인덱스 구조 우리가 데이터를 찾을 때 단순히 값을 물어보는 것이 아니라 내가 찾는 값이 어떤 값보다 큰지 작은지 물어보면서 접근하는 것이 더 유리할 것이다. 예를 들어, 1에서 100까지 값이 있을 때 55라는 값을 찾기 위해 50보다 큰지 작은 지부터 물어보면서 접근하는 것이다. 이를..
📌 페치 조인이란 JPQL에서 성능 최적화를 위해 제공하는 기능으로 SQL 조인의 종류는 아니다. 연관된 엔티티나 컬렉션을 SQL 한 번에 함께 조회하는 기능으로 즉시 로딩(EAGER)과 같은 효과를 보여준다. 기본 형태 select m from Member m join fetch m.team 📌 예제 회원과 팀은 다음과 같은 관계에 있다. 둘을 조인하면 아래와 같은 결과가 나온다. 위 관계에서 현재 지연 로딩이라고 할 때, 아래와 같은 코드를 실행하면 쿼리가 몇 번 나가게 될까 영속성 컨텍스트가 빈 상태에서 회원 1이 속한 팀 A를 질의한다. 회원 2는 이미 팀 A를 질의한 상태이므로 영속성 컨텍스트에서 값을 찾을 수 있다. 마지막으로 회원 3은 영속성 컨텍스트에 없으므로 다시 DB에 팀..