본문 바로가기

728x90
반응형

nosql

(14)
[MongoDB] 18. 데이터 모델링과 인덱스 - 인덱스 인덱싱 신문 기사를 노트에 스크랩할 때, 기사가 많아지면 원하는 기사를 쉽게 찾는 방법이 필요 노트의 맨 앞에서, 기사 제목과 페이지(가나다순)을 적은 "색인"을 만듬 제목을 모르고 기사 종류만 알고 있다면 색인을 사용하기 어려움 분야와 제목을 같이 색인에 활용하고 싶을 때는 "분야-기사제목-페이지 번호"로 색인을 만들면 됨. 많은 데이터를 분류하기 위해 색인을 만들 때는 어떤 순서로 만드느냐가 중요 아래 단계로 내려갈수록 범위가 좁아지는 것이 유용함 인덱스의 특징 인덱스가 없다면 모든 도큐먼트를 조회해야함 인덱스는 쿼리를 효율적으로 수행하게 함 새로운 도큐먼트가 생성/제거가 되면 인덱스도 함께 수정되어야 함. 속도의 저하 발생 가능성 단순 인덱스를 만들면 해당 필드를 조회할 때만 사용 가능 다수의 필드..
[MongoDB] 17. 데이터 모델링과 인덱스 - 데이터 모델링 데이터 모델링과 인덱싱 DB를 사용하는 환경에서 하드웨어 개선없이 성능을 개선하는 방법 데이터 모델링 업무 수행 시 발생하는 데이터를 정확하고 효율적으로 DB에 저장하기 위해 데이터 구조를 설계하는 과정 MongoDB의 특성을 고려하여 저장할 데이터의 구조를 정하는 작업 DBMS RDBMS MongoDB 설계 방식 테이블 설계 후 컬럼을 설계함 도큐먼트 설계 후 컬렉션을 설계 애플리케이션의 처리방안을 고려한 도큐먼트 구조를 어떻게 설계하느냐에 따라 데이터 "정합성(일관성)"과 "성능"에 큰 영향을 주게 되므로 이에 대한 정확한 이해가 필요함. 모델링 예시 - 게시판 각 게시판은 "이름"을 가진다. 게시판에 글을 쓰는 사용자는 "이름, 생년월일, 포인트"를 가진다. 각 게시글은 게시판에 작성 가능, "게시..
[MongoDB] 16. 집계명령어 - 트랜잭션 트랜잭션 읽기나 쓰기 작업이 가능한 DB 작업을 하나 이상 포함하는 DB의 "논리적 처리 단위" 애플리케이션에서 논리적 처리 단위의 일부로 여러 도큐먼트에 대한 읽기와 쓰기를 요구하는 상황 발생 가능성 트랜잭션의 중요한 특징 "성공하든 실패하든 부분적으로 완료하지 않는다." 특성 Atomicity(원자성) - 트랜잭션의 작업이 모두 적용되거나 아무 작업도 적용되지 않음. Consistency(일관성) - 트랜잭션에 성공하면 DB가 하나의 일관된 상태에서 새로운 일관된 상태로 이동 Isolation(독립성) - 여러 트랜잭션이 동시 실행될 때 트랜잭션이 다른 트랜잭션의 부분 결과를 보지 않도록 보장 Durability(지속성) - 트랜잭션이 완료되면 어떤 오류나 고장에도 변경된 값은 유지 MongoDB의 ..
[MongoDB] 13. 집계명령어 - aggregate, $project, $match, $group MySQL의 집단 함수들 GROUP BY - COUNT(), MAX(), MIN(), SUM(), AVG() 여러개의 row를 그룹화(group by)하여 숫자를 세거나 평균을 구하는 등의 기능을 하는 함수이다. 집계 명령어의 필요성 기존의 find로는 원하는 데이터를 가공하는데 한계가 있다. 빅데이터를 다루려면 새로운 데이터 가공 방식이 필요하다. MongoDB의 aggregation을 사용하여 grouping, fitering 등 다양한 연산을 적용할 수 있다. MongoDB의 집계 방법론 데이터베이스의 모든 정보를 불러와 어플리케이션에서 집계하는 방법이다. 1) 맵 - 리듀스 Javascript 함수를 정의하여 그 함수를 호출하여 집계한다. map 함수와 reduce 함수를 정의하여 mapReduc..
[MongoDB] 12. 쿼리작성하기 - 정규 표현식, 문자열 연산자, Cursor, $(배열 위치 연산자), $where 연산자 정규 표현식 MongoDB에서 정규 표현식을 사용하여 원하는 도큐먼트를 선택할 수 있다. // db.컬렉션.find({필드:/정규표현식/}) db.area.find({county:/시$/}).count() // 시로 끝나는 county 도큐먼트의 개수 정규 표현식 사용을 위한 메타 문자 메타문자 설명 예시 * 앞의 문자를 0개 이상 찾음 zo* --> z, zo, zoo,zooo + 앞의 문자를 1개 이상 찾음 zo+ --> zo, zoo, zooo ? 앞의 문자를 0개나 1개 찾음 zo? --> z,zo ^ ^문자열 : 문자열로 시작하는 것을 다 찾음 ^[^문자열] : 문자열로 시작하는 것을 제외하고 다 찾음 ^박 : 박, 박수 ^[^박] : 홍길동, 김철수 $ $문자열 : 문자열로 끝나는 것을 다 찾..

728x90
반응형