Database 4

[DB] Database의 샤딩(Sharding)

샤딩이란 샤딩(Sharding)을 알기전 우선 샤드의 사전적 의미를 보면 조각 또는 파편을 의미한다. 즉, 데이터베이스에서의 샤딩(Sharding)은 한 테이블의 row들을 여러 개의 서로 다른 테이블, 즉 파티션으로 물리적으로 분리하는 것이다. row들을 여러 개의 서로 다른 테이블로 분해하는 것이기 때문에 한 테이블을 Horizontal Partitioning 했다고 볼 수 있다. 샤딩은 보통 전체 데이터베이스 하나의 테이블에 전부 들어가기 힘든 데이터가 등장하고 DBMS가 테이블을 관리하기 힘들어짐에 따라 적용하게 된다. 데이터베이스를 샤딩하게 되면 기존에 하나로 구성될 스키마를 다수의 복제본으로 구성하고 각각의 샤드에 어떤 데이터가 저장될지를 샤드키를 기준으로 분리하게 된다. 주로 applicat..

Database 2022.02.08

[NoSQL] Redis란

Redis란? Redis란 "REmote DIctionaty System"의 약자로써 Key-Value구조의 비정형 데이터를 저장하고 관리하기 위한 오픈 소스 기반 NoSQL의 한 종류이다. In-Memory 기반의 Key-Value 구조 데이터 관리시스템으로써 빠르고 자유로운 데이터 처리 및 저장을 제공하지만, 서버가 꺼지게 되면 모든 데이터가 사라진다는 특징을 가지고 있다. 데이터 저장소로도 활용이 될 수도 있지만 앞서 얘기한 특징들 때문에 대표적으로 Memcached 처럼 RDBMS의 In-Memory Cache 솔루션으로써도 활용이 된다. 즉, DB로써 활용도 가능하고 Cache로써도 활용이 가능하다. Redis의 특징 In-Memory 기반 : 모든 데이터를 메모리로 불러오기 때문에 데이터를 접..

Database 2021.07.03

[DB] HikariCP의 옵션

HikariCP의 옵션 HikariCP는 Springboot 환경 기준으로 application.properties에서 다음과 같은 옵션들을 적용할 수 있다. spring.datasource.hikari.minimumIdle : pool에서 관리하는 최소 유휴 connection의 수에 관한 설정이다. 기본값으로 maximumPoolSize와 같은 값을 가진다. spring.datasource.hikari.connectionTimeout : 클라이언트가 pool의 connection을 기다리는 최대 시간(밀리초, ms)에 관한 설정으로, 기본값은 30000ms(30초)이고, 최소값은 250ms이다. 또한 만일 최대 시간을 넘으면 SQL Exception이 발생한다. spring.datasource.hik..

Database 2021.03.31

[DB] Database Connection Pool이란

DB Connection Pool에 대해 알아보기 전에 우선 JDBC에 대해 알아보았다. 기본적으로 JDBC는 다음과 같은 과정을 거친다. DB벤더에 맞는 드라이버 로드 DB서버의 IP, ID, PW등을 DriverManager 클래스의 getConnection 메소드를 사용하여 Connection 객체 생성 Connection으로 부터 PreparedStatement 객체를 받음 executeQurey를 수행하고 ResultSet객체를 받아 데이터를 처리 사용했던 ResultSet, PreparedStatement, Connection을 close 이러한 일련의 과정을 거쳐 Java 애플리케이션과 Database가 연동이 되어 원하는 데이터를 처리할 수 있다. 이 과정중에서 가장 오래 걸리는 부분을 예..

Database 2021.01.04