MongoDB
-
[MongoDB] 9 & 10. 보안과 성능향상 & RockMongo와 phpMoAdmin을 사용한 몽고DB 관리CSE/MongoDB 2015. 6. 13. 11:52
이번 포스팅은 9장, 10장 동시에 작성하겠습니다! 분량이 적은 관계로 한번에 쓸수 있을 것 같더군요~ 오늘 갑자기 날씨가 추워져서 감기가 걸릴지도 모르겠네요~ 관리 잘하세요 다들~ 먼저 9장의 순서입니다. 1. 몽고DB 컬렉션에 색인 생성 2. 몽고DB에 사용자 인증 추가 1. 몽고DB 컬렉션에 색인 생성 이번 실습은 몽고 쉘에서 작업하므로 쉘을 열어주세요~ use testdb 명령을 쳐서 db를 testdb로 사용하겠습니다! 그런 다음 movies 컬렉션에 여러 영화들을 넣어보죠~ db.movies.insert({name: "The Matrix", genre: "sci-fi", year: 1998}) db.movies.insert({name: "Lord of the Rings", genre: "fan..
-
[MongoDB] 8. 몽고DB와 PHP로 위치 인식 웹 애플리케이션 제작CSE/MongoDB 2015. 6. 13. 11:50
이번 장은 요즘 핫한!!! 위치 기반의 서비스를 만들어 보도록 하겠습니다!!! 순서는 아래와 같습니다. 1. W3C API로 위치 파악 2. 지리 공간 색인 생성 3. 현재 위치에 가까운 음식점 찾기 4. 버거를 판매하는 근처 음식점 찾기 1. W3C API로 위치 파악하기 이번 실습에서, 지리 공간 API를 사용하여 방문객의 위치를 파악하는 웹페이지를 구축하도록 하겠습니다. 먼저 location.html을 작성해주세요! location.html12345678910111213141516171819202122232425 div#map {width: 450px;height: 400px;} Locating your position Locating your position Colored by Color Scri..
-
[MongoDB] 7. GridFS로 대용량 파일 처리CSE/MongoDB 2015. 6. 13. 11:48
이번 포스팅은 GridFS로 파일처리를 해보도록 하겠습니다! 우선 GridFS란?? "데이터에비스에 이진 데이터를 저장하기 위한 몽고DB의 해법"이라고 일단락 지어두죠. 이론적 설명: 설계상, 몽고DB 다큐먼트(BSON 객체)는 16MB를 넘을 수 없습니다. 이런 제약은 최적의 수준으로 성능을 유지하기 위해서 입니다. 위 크기보다 커지게 되면, 질의시 메모리를 엄청나게 소비합니다. GridFS는 대규모 파일을 여러 다큐먼트로 쪼개는 기법을 명세합니다. 이를 구현하는 언어 드라이버(ex: PHP driver)가 저장된 파일을 분리하는 작업은 이면에 숨겨져 있죠. 이 드라이버를 사용하는 개발자는 내부 지식이 필요하지 않습니다. 이런 식으로 GridFS는 개발자에게 파일을 투명하고 효율적인 방법으로 저장하고 ..
-
[MongoDB] 6. 관계형 DB와 함께하는 몽고DB 활용CSE/MongoDB 2015. 6. 13. 11:46
이번 포스팅은 관계형 DB와 몽고DB를 조합한 어플리케이션 형을 만들어 보겠습니다!! 먼저 RDBMS와 MongoDB를 사용하는 잠재적인 사례에 대해 알아보도록 하겠습니다! - 집계 연산 질의 결과 저장: Cost가 많이 드는 집계 연산 질의 결과(COUNT, GROUP BY 등)를 몽고DB에 저장할 수 있습니다. 이런 기능은 결과가 유효하지 않을 때까지 애플리케이션에서 동일 질의를 다시 수행할 필요 없이 몽고DB에서 결과를 잽싸게 가져오게 만듭니다. 몽고DB 컬렉션의 스키마는 유연하므로, 결과 데이터의 구조를 미리 걱정할 필요가 없습니다. 집계 연산 질의가 반환하는 Row는 BSON 다큐먼트로 저장이 가능합니다. - 데이터 저장: 데이터량이 커질수록, 관계형 테이블에서 질의와 다른 연산 과정에 필요한 ..
-
[MongoDB] 5. 몽고DB를 사용한 웹 분석CSE/MongoDB 2015. 6. 13. 11:45
이번 포스팅은 몽고DB를 사용한 웹 분석 을 진행해보도록 하겠습니다! 내용을 설명하기 전, 준비해야할 것이 있습니다! 예전에 작성한 blog.php, blogs.php, dbconnection.php가 이번 실습하는 곳에 같은 곳에 존재해야 합니다! 이번 포스팅의 순서는 다음과 같습니다. 1. 페이지 방문 로깅 2. 블로그 포스트당 전체 방문 수와 평균 응답 시간 찾기 3. 실시간 페이지 방문 카운트 구현 먼저, 중요 개념을 설명하도록 하겠습니다. 몽고DB가 웹 분석 백엔드로 좋은 이유!!!! - 몽고DB는 대량의 데이터를 다루는데 아주 적합 : 몽고DB의 확장 가능한 기능(복제, 샤딩, 레플리카 집합 등)과 데이터 크기와 연산 횟수에 따라 최적으로 수행하는 기능은 점점 확장되고 있다. 트래픽이 무척 ..
-
[MongoDB] 4. 집계 연산 질의(Map Reduce)CSE/MongoDB 2015. 6. 13. 11:43
4. 집계 연산 질의 집계 연산을 수행하기 앞서, 예제 데이터를 생성해야 한다. 순서는 아래와 같다. 1. 예제 데이터 생성하기(generate_date.php) 2. 작성자별 아티클 수 세기 3. 태그 클라우드 생성하기 4. 작성자별 평균 평가 점수 계산하기 5. 아티클의 유일한 카테고리 열거하기 1. 예제 데이터 생성하기 본 예제는 첨부된 파일을 받아서 실행하여, 데이터를 생성한다. 생성된 데이터를 mongo shell에서 확인한다. use myblogsite db.sample_articles.find() 위와 같이 데이터가 보이면 성공! 맵리듀스(Map Reduce)는 데이터 처리를 위한 Design Pattern이다. 맵리듀스 이면의 사상은 큰 과업을 좀 더 작은 과업으로 분해하는 방법이다. 하위..
-
[MongoDB] 3. 세션관리자 제작CSE/MongoDB 2015. 6. 13. 11:41
3장 세션관리자 제작 시작하겠습니다! 이번 장에서 구현할 세션관리자는 웹사이트를 방문한 방문객의 HTTP 세션을 관리하고 세션 데이터를 저장하기 위해 몽고DB를 사용하는 모듈이다. 세션관리자는 사용자 autheticate, 활동 추적, 활동 인증, 로그 아웃 관리와 같은 기본적이지만 중요한 기능을 담당한다. 여기서는 객체지향형 프로그래밍 원칙을 사용해 모듈을 구현할 것이다. 1. SessionManager 클래스 구현 - 세션 저장/인출/처리를 위해 몽고DB에 만들어진 컬렉션을 사용하는 모듈인 SessionManager 클래스를 구현하겠다. 세션을 처리하기 위한 콜백 함수로 이 클래스의 인스턴스 메소드를 session_set_save_handler()로 등록할 것이다. 설계 목표는 다움과 같다. * 클래..