본문 바로가기
블로그 이미지

방문해 주셔서 감사합니다! 항상 행복하세요!

  
   - 문의사항은 메일 또는 댓글로 언제든 연락주세요.
   - "해줘","답 내놔" 같은 질문은 답변드리지 않습니다.
   - 메일주소 : lts06069@naver.com


몽고DB26

몽고db 특징 간단 정리 (버전은 3.x.x 이하) 1. 데이터를 모델화 하여 관리 - DB -Database는 Collection들의 물리적인 컨테이너. 각 Database는 파일시스템에 여러파일들로 저장. 2. MongoDB 는 이러한 스키마가 사전에 정의되지 않아도 된다 (Schemaless) - 데이터베이스에 저장된 Document는 각기 다른, 다양한 필드를 저장 할 수 있다. - 각 필드는 서로 다른 데이터타입을 가질 수 있다. 3. 하나의 row에 하나의 Document를 저장한다. 4. 다른 No-sql과 달리 강력한 쿼리 기능을 지원한다. 5. RDBMS인 MySQL에서 지원하는 대부분의 인덱스를 지원한다. 6. Collection의 사이즈를 고정할 수 있으며 , 큐 처럼 동작한다. 7. 컬렉션과의 Join 불가능하다. Join을 사용하고.. 2019. 7. 31.
Node.js mongoose에서 몽고db 컬렉션이 조회되지 않을 때 mongoose를 활용해서 몽고db에서 특정 컬렉션에 조회기능을 작업중에 있었다. 그런데, A라는 컬렉션은 조회, 집계, 합계등 기능이 잘 작동하는데 B라는 컬렉션에 대해서는 아무리 해도 값이 없다고 나오는 것 이었다. var mongoose = require("mongoose"); var Schema = mongoose.Schema; var url = 'mongodb://127.0.0.0:27017/TEST_DB'; mongoose.connect(url, { useNewUrlParser: true }); var structor = new Schema({ //test_a의 구조 "_id" : Schema.Types.ObjectId, "title" : String, "num" : Number, }); va.. 2019. 7. 23.
MongoTemplate Aggregate 사용간 파싱 버그 몽고db에서 집계함수를 통해서 통계작업을 하던 도중 당황스러운 버그를 보았다. CHOICE_INFO.REG_DATE는 일반 문자열 상수로 String 값을 가지며, 값은 reg_date라는 소문자를 넣어놨었다. 즉, 내가 가져오는 값은 date, date를 daying으로 바꾼 값 2개인데.. 위 스코드 어디에도 _id 를 키 또는 Projection에서 가져오는 구간이 없다. 그럼에도 불구하고 daying으로 이름을 바꾼 속성이 키 값으로 _id를 지정되서 나오는 모습을 보게 되었다.. 이런 황당한 버그를 보았나;; 아무튼 위 현상을 해결하기위해 간단한 소스코드 한줄을 추가하였다. 어디에도 쓰이지않는 아무의미없는 "1"이라는 값을 key, value로 가져오게 하자 위 현상이 멈추었다. 아마도.. Mo.. 2019. 7. 19.
몽고db 백업, 복원하기 1. 몽고 백업 명령어 mongodump --host 127.0.0.1:포트번호 2. 몽고 복원 명령어 mongorestore -h 127.0.0.1:포트번호 --username 이름 --password 비밀번호 --db 대상 덤프파일 위치 3. 포트번호가 틀리거나 사용자 권한이 없는 경우 만나는 오류 1. error reading database: not authorized on admin to execute command 2. Don't know what to do with the dump file 4. 사용자 권한 변경 db.updateUser( "사용자아이디", { roles : [ { role : "restore", db : "대상" }, { role : "backup", db : "대상" },.. 2019. 7. 1.
Java를 활용한 MongoDB 대용량 집계, 억단위 Mongotemplate를 통해서 데이터를 집계하는 방법은 aggregate라는 함수를 호출하여 실시 한다. aggregate함수를 적은량의 데이터를 대상으로 실행하면 사실 문제가 되지 않는데, 데이터량이 많아진 경우에 한번에 집계를 실시하면 데이터베이스 서버 또는 동작중인 Java 어플리케이션이 OutofMemory 상태가 될 수 있다. 그럴때를 대비하여 집계함수 실행 간 최소, 최댓값을 설정하여 페이징 처리를 해야된다. 대략적으로 억단위 이상인 데이터에 대해서는 집계함수 실행시 페이징 처리를 해 주어야 문제가 생기지 않는 것 같다. 1억건 데이터를 기준으로 1천만건 단위로 집계하여 동작을 시키면 메모리는 2~3기가 정도 사용하며 cpu점유는 10%내외 하드디스크 입출력IO는 40%내외정도로 양호한 편.. 2019. 6. 28.
MongoTemplate Aggregate Mongotemplate를 활용해서 집계함수를 실행하는 방법이다. 아래와 같은 데이터가 있다고 하자. { "_id":ObjectId("507f1f77bcf86cd799439011"), //고유 아이디 "date" : ISODate("2019-06-21 10:03:46.000Z"), //날짜 데이터 "text":"test", //단순 텍스트 "number":1234, //숫자 "type1":"A", //그룹핑할 데이터1 "type2":"AA" //그룹핑할 데이터2 }, { "_id":ObjectId("54af1e77gcfq6qdr22u39914"), "date" : ISODate("2019-06-21 10:03:46.000Z"), "text":"text text..", "number":1234, "type.. 2019. 6. 21.