작성
·
38
0
안녕하세요.
spring boot project 에 테이블을 여러 개 만드는 경우의 설정을 알고 싶습니다.
강의에서는 products 테이블과 index 하나이지만
실제로 프로젝트를 하게 되면 테이블을 여러 개 만들게 됩니다.
가령, 학사관리 시스템의 경우 필요한 테이블이,
student, professor, department, subject, course_registration.. 최소한 이정도는 있어야 되는데요...
이러한 경우, Spring Boot JPA + Elasticsearch 조합으로 프로젝트를 진행하게 되는데. 테이블이 여러 개 있는 경우입니다.
관리자 페이지이도 있어야 되고요.
학생과 교수님의 경우에는 학생검색, 교수님 검색, 과목 검색, 학과 검색을 해야 되고, 관리자는 모두 다 검색할 수 있어야 됩니다. (수강신청내역검색 추가) 이런 경우에는 settings.json 파일을 어떻게 설정해야 되는지요?
자세한 답변 부탁드립니다.
답변 2
0
안녕하세요 Stevens님 ~
질문 주신 내용에 대해 답변드리며 테이블이 여러개인 경우의 구조 설계에 대해 팁을 드려볼게요 !
첫번째, 각 도메인마다 별도의 인덱스를 구성해 보세요 !
예를 들어 student, professor, subject, department, course_registration 등등 각각 Elasticsearch 인덱스로 분리 하는거죠 !
관계형 데이터 베이스와 Elasticsearch 인덱스 1:1은 아니지만, 도메인이 명확히 분리되어 있으면 각각 인덱스로 나누는 것이 일반적으로 좋습니다 !
두번째로, 각 인덱스별로 settings.json을 따로 만들어서 구성해보세요 !
settings_student.json, settings_professor.json 등으로 나누는 게 프로젝트를 관리하고 유지보수하기에 좋아요 !
application.yml이나 ElasticsearchConfig에서 인덱스별로 설정 로직을 따로 관리하시는 것도 복잡성을 낮추는데 도움이 됩니다 !
세번째로 관리자, 학생, 교수 권한에 따라 검색 범위 조정을 해보시는것도 추천드려요 !
Spring Security 또는 사용자 역할을 통해 API 레벨에서 필터링을 하면, Elasticsearch에서 별도 role 필드를 활용해 검색 결과 제한이 가능 합니다 !!
우선 Elasticsearch에 대한 설계는 너무 많이 생각하시는것 보단 위 세가지 큰 설계를 토대로 설정해보시길 추천드려요 ! 프로젝트의 서비스 특성 및 기획자에 따라 디테일한 설정은 매우 많고 다양하게 발생해요 ~ 그래서 기획자분과 많은 소통을 하시며 조금씩 천천히 구체화해 나가시길 추천드려요 !!
해당 강의 실습은 많은 디버깅과 사전 준비를 해서 그렇지,
실제 프로젝트에서는 해당 강의와 같이 '설계 완료 ! 개발 시작!'인 경우는
거의 없다고 보시면 됩니다 ㅎㅎ
프로젝트가 진행됨에 따라 기획자 및 프론트엔드 분들과 논의하며
설계와 개발이 병행되는게 당연하니 설계에 너무 큰 걱정보다는 팀원분들과 많은 소통을 하시며
천천히 꾸준히 디벨롭해 보시길 추천드려요 !! 늘 파이팅입니다 😄😄
혹시라도 추가로 궁금한 점이 있으시면 언제든 편하게 질문 주세요 ~~
0
안녕하세요, 인프런 AI 인턴입니다. Stevens님.
Spring Boot 프로젝트에서 여러 데이터베이스 테이블을 설정하는 방법과 JPA 및 Elasticsearch를 통합하여 다양한 검색 기능을 구현하는 방법을 알아볼 수 있습니다.
Spring Data JPA 설정:
@Entity
어노테이션을 사용하여 선언됩니다.Repository
인터페이스와 매핑되어 CRUD 기능을 수행할 수 있습니다.Elasticsearch 설정:
@Document
어노테이션을 사용하여 매핑을 설정합니다. 예를 들어, student
엔티티는 Elasticsearch에서 students
인덱스와 매핑될 수 있습니다.settings.json 설정:
settings.json
은 Elasticsearch 인덱스의 설정을 포함합니다. 예를 들어, 인덱스의 분석기 설정, 복제본 수, 샤드 수 등의 설정을 포함합니다.관리자 및 사용자 검색 기능:
관련된 기존 질문에 대한 답변을 찾기 어렵지만, 다음과 같은 방법으로 설정을 시작해 보시기 바랍니다:
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.