SpringBoot - MySQL 연동 (SQLite 비교)

BlackHan·2023년 11월 15일

SQLite

부트캠프에서 Spring Boot를 배웠기에 SQLite를 주로 사용했다.
SQLite는 관계형 데이터베이스 관리 시스템을 제공하는 라이브러리 형태의 엔진이다.

  • 경량화된 라이브러리로서 데이터베이스 엔진이 응용 프로그램에 내장되어 있어, 특별한 설정이나 관리 없이 쉽게 사용 가능
  • 하나의 파일에 모든 데이터를 저장한다.
  • 대부분의 표준 SQL 기능을 지원하므로 다른 RDBMS와 유사한 쿼리를 사용한다.

장단점

장점
1. 경량이면서 높은 성능을 제공한다.
2. 데이터 파일이 하나이기 때문에 관리가 쉽다.
3. 크로스 플랫폼 호환성을 가지므로 여러 플랫폼에서 사용할 수 있다.

단점
1. 주어진 시간에 하나의 프로세스만이 데이터베이스를 변경이 가능하며, 대규모 시스템에서 동시성 처리에 제한이 있을 수 있다.
2. 제공되는 자료형이 다양하지 않으며, 복잡한 쿼리를 다루기가 어렵다

더 알아보았을 때 SQlite는 가벼운 프로젝트용으로 적합하다는 생각을 했다. 대규모 프로젝트를 진행하기에 있어서는 다른 DB를 이용해야 한다는 판단이 들었고, MySQL를 사용해 보기로 했다.


MySQL

가장 널리 사용되는 오픈소스 RDBMS이다.
표준 SQL을 지원하며, 다중 사용자와 다중 스레드를 지원하며 대규모 프로젝트에 적합하다고 볼수 있다.

장단점

장점

  1. 동시에 여러 사용자가 데이터 베이스에 접근하고 작업을 처리할 수 있다.
    이 부분이 SQLite와 가장 큰 차이점이라고 생각한다.
  2. 여러 저장엔진을 제공하여 , 데이터를 저장하는 방식을 선택할 수 있다.
  3. 복제 및 백업을 지원하는 고급 기능을 제공한다.

단점

  1. 복잡한 쿼리나 대용량 데이터베이스에서는 최적화가 어렵다.
  2. 다른 RDBMS에 비해 사용자 정의 함수를 생성하고 활용하는 데 있어서 제한적일 수 있다.
  3. 그 외에도 수평확장이 어렵다거나 RDBMS의 단점을 고스란히 가지고있다.

MySQL과 SQLite의 큰 차이점인 보안과, 대규모 프로젝트에서의 적합성을 고려하였을 때 MySQL을 이용해 보는 것도 좋은 방안으로 생각이 들었다.

Spring과 MySQL의 연동 과정


1. build.gradle에 의존성을 추가 해 준다.
dependencies {
	implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
	runtimeOnly 'mysql:mysql-connector-java'
}
  1. application.yaml 파일에 MySQL 정보를 넣어줍니다.
    나는 AWS RDS 연동을 하였고, DB의 엔드포인트와 포트번호 3306을 넣어주었다. 로컬에서 진행하는 경우 엔드포인트에 localhost만 바꿔 넣어주면 된다. 그리고 DB명은 본인이 설정한 이름으로 바꿔준다.

아래는 MySQL을 연동하여 진행된 결과물이다.

profile
Slow-starter

0개의 댓글