반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- cypress React
- git squash
- 리팩터링2판테스트
- git commit merge
- git commit 협업
- awss3
- 리팩토링2판4장
- 가상면접2장
- 리액트구글애널리틱스
- react
- 시스템설계면접예시
- formik react-query submitting not working
- 전략패턴
- 테스트코드책
- cypressBDD
- file not found Error
- 가상면접으로대규모시스템
- 디자인패턴
- gitsquash
- 헤드퍼스트전략패턴
- 시스템설계면접
- FirebaseAnalytics
- s3이미지다운로드됨
- 시스템설계면접팁
- Git commit 합치기
- react-ga
- 가상면접3장
- 시스템설계방법
- 시스템설계
- formik submitting not working
Archives
- Today
- Total
mingg IT
[코프링] MongoDB → PostgreSQL: 이관 과정 A to Z 본문
배경
진행하고 있던 프로젝트의 DB 인스턴스가 삭제 되었다. 🤣
복구가 불가능하다고 판단되었고, Supabase를 이용하기 위해 mongoDB에서 postgreSql로 이관 프로젝트를 진행 하였음
STEP
1. 유지해야하는 API, 불필요한 API 분리
- 기본적인 CRUD 작업은 프론트에서 Supabase로 바로 접근하여 데이터를 읽어올 것이기 때문에 복잡한(인증, 푸시알림 등)API 를 제외하곤 삭제하려함
2. build.gradle.kt
implementation("org.springframework.boot:spring-boot-starter-data-mongodb")
제거implementation("org.postgresql:postgresql:42.2.20")
추가
3. 서버 로직 업데이트
controller -> service -> repository -> entity
순으로 수정하려 한다.
controller, service
- 불필요한 부분을 주석 처리 한다.
repository
- MongoRepository 제거
- JpaRepostiroy 추가
entity
- @Document 제거
- @Entity, @Table 추가
entity 정규화 하기
- noSql의 장점중 하나인 데이터 저장형식이 자유로운부분이 rdb로 바꾸면서 고민이 필요했음
- 컬럼으로 추가할 것인가 vs 정규화 할 것인가
data class Contact(
val phoneNumber: String?,
val countryCode: String?,
val verificationCode: String?,
)
Trouble shooting
Parameter 0 of constructor in 'A' required a bean of type 'B' that could not be found.
entity, repository 순으로 정리하면 순조롭게 될 줄 알았던 내 예상과 다르게 해당 에러를 만났다.
- Service파일에는 @Service 어노테이션이 잘 적용되어있는지 확인
- Repository 에서 JpaRepository와 PK가 잘 적용되어있는지 확인
- Entity와 실제 DB 데이터 구조가 잘 매핑되어있는지 확인
- application.yml DB 접속 정보 올바른지 확인
모두 충족했음에도 계속 발생하였다. 하루정도 삽질하다가 찾은 방안은 ..
원인은 아래와 같다.
mongoDB를 사용할 때 Config로 DB설정해둔 부분이 있었는데 이를 위해 DataSourceAutoConfiguration을 예외처리 해두었나보다.
postgresql로 전환하면서 해당 부분이 불필요해졌고, 해당 코드를 제거해주었다.
'BackEnd' 카테고리의 다른 글
[라이브러리 학습] BullMQ (0) | 2024.06.23 |
---|---|
[AWS Redshift] Redshift를 활용한 OLAP 구축 예시 (0) | 2023.12.07 |
[kotlin + swagger-ui] java.lang.NumberFormatException: For input string: "" 에러 해결 (0) | 2023.10.22 |
[AWS] git actions을 이용한 EC2내 .env 배포 방법 (0) | 2023.10.10 |
[Kotlin] Kotlin + Spring Boot + queryDSL 적용 (0) | 2023.10.04 |
Comments