본문 바로가기
반응형

mongodb28

[소경관] : 완료 항목 보기 리팩토링하기 체크를 마치고 완료 항목 리스트를 볼 때 모든 컬렉션 리스트가 아니라 로그인 사용자의 컬렉션 리스트만 보이도록 바꿔주었다. for (String colNm : mongo.getCollectionNames()) { if (colNm == null) { colNm = new String(); } // 컬렉션 명을 _ 기준으로 잘라 String 배열에 담는다. String res[] = colNm.split("_"); // String 배열 중 ID값이 있는 부분과, 세션의 id값을 각 String 변수에 담는다. String result = res[0]; String sessionId = userDTO.getUserId(); // 두 String을 비교하여 같을 시 리스트에 담아준다. if (result.e.. 2022. 6. 5.
[소경관] : 등록한 차량 초기화 등록한 차량 초기화하는 기능을 구현했다. 사실 등록한 차량을 초기화 하는 것 자체는 어렵지 않다. 컬렉션만 날려주면 되서 MongoDB 라이브러리에서 제공하는 템플릿을 통해 drop만 해주면 된다. mongo.dropCollection("Car"); 코드로 보면 이렇게 한 줄이면 되고, 리턴은 boolean으로 나중에 true, false로 성공, 실패 여부만 따로 체크해 줄 수 있도록 했다. 2022. 5. 31.
[TIL] : 213 일일 배움을 위한 Today I Learned ! 소경관 MongoDB에 저장된 컬렉션 중 원하는 것만 가져와서 View에 뿌려주는 작업을 하고 간단하게 정리했다. 2022.05.27 - [Project/소경관] - [소경관] : MongoDB에서 원하는 Collection 명만 가져와서 View에 List로 뿌려주기 2022. 5. 27.
[소경관] : MongoDB에서 원하는 Collection 명만 가져와서 View에 List로 뿌려주기 저장 목록 View에서는 데이터를 가져와서 뿌려주는 작업만 한다. 나중에 추가하면 클릭해서 상세 보는 것도 추가해야 하지만 일단은 이렇다. public interface ICheckMapper { // 완료 항목 보기 List viewCheck() throws Exception; } 인터페이스에서 정의해주고 오버라이딩해서 사용한다. @Override public List viewCheck() throws Exception { List viewCarDTOList = new LinkedList(); for (String colNm : mongo.getCollectionNames()) { if (colNm == null) { colNm = new String(); } if (colNm.length() > 5).. 2022. 5. 27.
[TIL] : 201 일일 배움을 위한 Today I Learned ! 소경관 MongoDB 공통 로직을 짜봤다. package project.SPM.mapper; import com.mongodb.client.model.Indexes; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.data.mongodb.core.MongoTemplate; @Slf4j @RequiredArgsConstructor public abstract class AbstractMongoDBComon { protected MongoTemplate mongodb; /** * 컬렉션 생성하기 * @param colNm 생성할 .. 2022. 5. 15.
[소경관] : 주민(방문자, 블랙리스트) 차량 조회 로직 MongoDB에 등록한 차량 정보 중 주민 차량만 가져오는 로직을 구현한다. 이름 연락처 차량번호 주소 구분 View에서는 carDTOList를 받아서 th:each로 반복시켜 리스트를 쭉 뽑아준다. package project.SPM.mapper; import project.SPM.dto.CarDTO; import java.util.List; public interface ICarListMapper { List getResidentList() throws Exception; } 주민 차량 조회를 위한 메서드와 리턴 타입을 정의해 준다. // 주민 차량 조회 @Override public List getResidentList() throws Exception { // 조회 결과를 전달하기 위한 객체 생성.. 2022. 5. 14.
[소경관] : 직접 차량 등록하기 기능 추가 경비원이 관리하는 주민을 등록하는 방법 중 한 가지인 직접 등록하기를 구현한다. 아직 몇 가지 구현이 덜 된 부분이 있지만 일단 핵심 로직은 완성되었기 때문에 로직을 정리한다. 이름 연락처 차량 번호 상세 주소 버튼 View 코드는 위와 같이 해주었다. 일단 꾸미지 않고 값을 받아오는 것에 집중했다. package project.SPM.vo; import lombok.Data; import javax.validation.constraints.NotNull; @Data public class AddCarVo { @NotNull private String name; @NotNull private String phoneNumber; @NotNull private String carNumber; @NotNull.. 2022. 5. 9.
[MongoDB] : Collection 삭제 공통 로직 컬렉션이 존재할 때 삭제하고 다시 만들기 위해 삭제 공통 로직을 만들어주었다. 따로 설명할 게 없는 코드이다. 자세한 코드는 아래 링크에서 확인이 가능하다. https://ohju96.notion.site/Collection-2bdaa877c5fa4ad7bdaa726e7ac29b78 Collection 삭제 공통 로직 컬렉션이 존재할 때 삭제하고 다시 만들기 위해 삭제 공통 로직을 만들어주었다. ohju96.notion.site 2022. 4. 25.
[MongoDB] : 방대한 양의 데이터를 저장하기 위해 insertMany 사용하기 멜론 크롤링으로 수집된 노래 100개를 한 번에 저장한다. 데이터 저장헤는 insertMany쿼리를 사용한다. insertOne에 비해 동일한 양의 데이터를 저장할 경우 insertMany가 저장 속도는 월등히 빠르다. 람다식을 사용해서 코드를 작성해 본다. 위 경로로 접속하여 성공 문구가 뜨는지 확인한다. insertMany 쿼리를 사용해 한 번에 100개의 노래를 저장해주었다. 코드는 아래 링크에서 확인 가능하다. https://ohju96.notion.site/insertMany-bd4cc8be3326441fb1e1124f903a6de7 방대한 양의 데이터를 저장하기 위해 insertMany 사용하기 멜론 크롤링으로 수집된 노래 100개를 한 번에 저장한다. ohju96.notion.site 2022. 4. 25.
[TIL] : 180 일일 배움을 위한 Today I Learned ! MongoDB MongoDB 조회하는 쿼리를 작성하고 테스트했다. 멜론 인기 차트를 가져오고 그 중에서 방탄소년단의 리스트만 뽑았다. 2022.04.24 - [Data Base/MongoDB] - [MongoDB] : 몽고디비 find 쿼리 사용 2022. 4. 24.
[코딩 스터디 2기] : 8주차 오늘 스터디도 잘 마무리했다. 쌤 한 명이 전 날에 과음으로 참여하지 못 하셨지만 다른 쌤들은 모두 참여했다. https://ohju96.notion.site/8-9da12734cb834f06bff0a8a61d9f1e30 8주차 리뷰 ohju96.notion.site 한 주간 공부한 내용을 첨부하고 이번에 Filter 구현한 것을 발표하고 몇 가지 피드백을 받았다. 스터디 시간에는 Melon 인기 차트를 크롤링해와서 MongoDB에 넣는 코드를 짰고 작동 확인까지 하고 마무리했다. 2022. 4. 23.
[MongoDB] : CentOS에서 MongoDB 설치 및 셋팅하기 yum 레포지토리 생성을 통한 설치와 tar.gz 압축된 파일 설치가 있다. yum을 통한 설치가 환경 변수 설정이나 관리가 수월해서 추천한다. MongoDB는 CentOS에서 기본적으로 제공하는 레포지토리에 존재하지 않아 yum install 명령어를 사용해도 레포지토리에 존재하지 않아 설치가 불가능하다. 때문에 CentOS에서 사용 가능한 레포지토리를 생성해야 한다. Ubuntu에서는 따로 레포지토리를 생성하지 않아도 된다. vi /etc/yum.repos.d/mongodb-org-5.0.repo vi 편집기로 레포지토리 정보를 생성해준다. 아래 내용을 입력해 준다. [mongodb-org-5.0] name=MongoDB Repository baseurl=https://repo.mongodb.org/.. 2022. 4. 22.
[TIL] : 59 일일 배움을 위한 Today I Learned ! 소경관 개인 프로젝트를 진행하는데 문제가 많다. 우선 오늘은 어제 이어서 Ubuntu에서 MongoDB 계정 설정을 마쳤고, Robo 3T를 이용해서 외부 접속을 성공시켰다. 근데 문제가 생겼는데 log4j 취약점 관련 사항 때문에 교수님이 프로젝트를 바꿔서 적용시키라고 하셨다. 공지로 필수로 바꿔서 개발하라고 되어 있기 때문에 프로젝트 변경을 일단 했고 내일 천천히 고쳐나가면서 시작하면 될 것 같다. 아직 개발을 본격적으로 못 하고 있는 게 아이디어 구현이 머릿속에서 구체적이지 않은 탓인 것 같다. 2021.12.24 - [Project/소경관] - [소경관] : Ubuntu MongoDB root 계정 설정 및 Robo 3T 외부 접속 오류 노트 프로.. 2021. 12. 24.
[소경관] : Ubuntu MongoDB root 계정 설정 및 Robo 3T 외부 접속 Ubuntu MongoDB root 계정 설정 및 Robo 3T 외부 접속 MongoDB 관리자 계정 추가 sudo service mongod start MongoDB를 시작한다. mongo MongoDB에 접속해 준다. 참고 | exit를 통해 빠져나올 수 있다. use admin admin 유저에 접속한다. db.createUser( { user:'root', pwd:'1234', roles:['root'] } ) root 계정을 생성해 준다. db.dropUser("root") root를 삭제한다. db.getUsers() 사용자 목록을 확인할 수 있다. MongoDB 접속 인증 설정 인증 과정을 거쳐 접속하기 위해 설정 파일을 수정한다. sudo service mongod stop MongoDB를.. 2021. 12. 24.
[오류 노트] : cannot connect to the mongodb at :27017. error: network is unreachable. reason: couldn't connect to server :27017, connection attempt failed: socketexception: error connecting to27017 :: caused by :: ǻ ϳ ź ƿ ߽ θ . 문제 cannot connect to the mongodb at :27017. error: network is unreachable. reason: couldn't connect to server :27017, connection attempt failed: socketexception: error connecting to27017 :: caused by :: ǻ ϳ ź ƿ ߽ θ . MongoDB를 Robo 3T를 통해 외부 접속하려고 했는데 연결하는 도중에 이런 오류가 떴다. 해결 sudo service mongod status 우선 MongoDB의 작동 상태를 확인했는데 정상적으로 돌아가고 있었다. sudo service mongod stop MongoDB의 작동을 잠시 멈춰주고 멈춘 상태를 다시 .. 2021. 12. 24.
[소경관] : 프로젝트 진행 중 요구 사항 발생 ! 프로젝트 진행 중 변경 사항 발생(중요) 이 소경관 프로젝트는 개인 프로젝트이기도 하지만 학교에 제출해서 평가받는 프로젝트이기도 하다. 보통 학교에서 1학기 시작할 때 교수님이 요구 사항을 주신다고 했는데 2학년 선배들에게 들어 미리 전년도와 비슷한 맥락의 프로젝트를 구상하고 있었다. 대충 내용은 API 2개 이상 활용, 기본 기능만 있어선 안 됨 정도만 들었는데 오늘 요구 사항이 나왔다. ○ 평가방법 -------------------------------------------------------- 1. 설계산출물 중 WBS에 정의된 항목에 대해 100% 구현 - 구현 : 교수 평가에 따라 A-D까지 학점 부여 - 구현 못함 : F학점 부여 ---------------------------------.. 2021. 12. 23.
[질문 노트] : Sharding System은 무엇인가요? 🧐 질문 | Sharding System은 무엇인가요? 빅데이터 환경은 초당 몇 만건 이상 되는 수 많은 데이터를 빠른 시간 내에 수집하고 저장해야 하기 때문에 분산, 집계하여 사용자가 원하는 통계 정보로 가공할 수 있어야 합니다. 시스템 구축 환경을 위해 효과적인 데이터의 분산 저장 및 처리 기술이 필요한데 이를 Sharding System(샤딩 시스템)이라고 합니다. 목적 데이터의 분산 저장 빅데이터를 디스크에 저장할 때 발생하는 Write Scaling 문제는 애플리케이션의 성능 저하 문제를 유발시키고 샤딩 시스템 전체의 성능 저하 현상을 유발시킵니다. 빅데이터의 효율적인 저장과 관리를 위해 하나의 서버가 아니라 여러 서버를 통해 분산 처리했을 때 가장 이상적으로 작동할 수 있습니다. 빠른 성능 분.. 2021. 12. 8.
Master & Slave Server가 무엇인가요? 🧐 질문 | Master & Slave Server가 무엇인가요? 하나의 서버에 데이터가 입력, 수정, 삭제될 때 동일한 구조를 가진 또 다른 서버에 동일한 데이터가 입력, 수정, 삭제 된다면 메인 서버에 장애가 발생하더라도 복제 서버를 이용해 메인 서버를 빠르게 복구할 수 있습니다. Replica(레플리카)기능은 빅데이터의 백업을 통해 안정성을 보장하기 위한 솔루션입니다. 리프리카 기능을 위해 마스터 노드와 슬레이브 노드가 필요합니다. 경우에 따라서는 많은 수의 슬레이브 노드를 설정할 수도 있지만 예상할 수 없는 다양한 장애가 발생할 수 있으므로 최소 3대 정도의 슬레이브 노드 설정을 적정 개수로 권장합니다. 결국 Master & Slave Server는 Master(메인) 서버에 과부하가 걸리는 것을.. 2021. 12. 7.
Replica Set이 무엇인가요? 🧐 질문 | 레플리카 셋이 무엇인가요? 마스터 서버와 슬레이브 서버의 문제점을 개선, 보완한 기능이 레플리카 셋 입니다. 레플리카 셋에서 실시간으로 사용되는 메인 서버를 Primary(프라이머리)서버라고 합니다. 사용자들은 프라이머리 서버를 통해 데이터를 입력, 수정, 삭제, 조회합니다. 슬레이브 서버의 백업 데이터로 마스터 서버를 복구하기 위해서는 일정 시간동안 서비스를 중지해야 하는 문제점이 발생합니다 실시간 복구 작업을 수행할 수 없다는 뜻 입니다. 프라이머리 서버에 장애가 발생하게 되면 실시간 서비스가 안되기 때문에 치명적인 상황에 놓이게 됩니다. 리프리카 셋에서 두 번째 서버를 Secondary(세컨더리)서버라고 합니다. 프라이머리 서버에 장애가 발생해 서비스를 수행할 수 없을 때 프라이머리 서.. 2021. 12. 7.
[TIL] : 41 일일 배움을 위한 Today I Learned ! NOSQL 몽고DB 설계를 위한 논리적 구조 설계 이론과 몽고DB 설계 기준을 공부했습니다. 2021.12.06 - [Data Base/NOSQL] - [NOSQL] : MongoDB 논리적 구조 설계 2021.12.06 - [Data Base/NOSQL] - [NOSQL] : MongoDB의 설계 기준 2021. 12. 6.
[NOSQL] : MongoDB의 설계 기준 MongoDB를 구축하기 위한 설계 기준입니다. 데이터 조작은 어떻게 하나요? 하나의 Collection은 여러 개의 필드로 구성됩니다. 소량의 데이터, 대용량의 데이터 등 여러 데이터를 저장하는 필드들이 있습니다. 매일 참조되는 필드가 있을 수도 있고, 일 년에 한 번씩 참조되는 필드가 있을 수도 있습니다. 다양한 필드들을 하나의 Collection으로 생성하게 되면 불필요하게 메모리와 CPU 등 시스템 자원을 낭비하게 되고 시스템 성능을 저하시키는 원인이 될 수 있습니다. ACCESS PATTERN은 어떤가요? 빅데이터에 대한 쓰기 작업이 빈번한 Collection은 여러 개의 Collection으로 분리 설계하게 되면 초당 몇 만건의 데이터를 빠르게 저장하는데 한계가 있을 수 밖에 없습니다. 빅데이.. 2021. 12. 6.
반응형