NoSQL은 최근 업계에서 많은 관심을 받고 있습니다. 관계형 데이터베이스 스토리지에 대한 사람들의 생각이 최고의 유스 케이스에 있는지에 관심이 있습니다. 개발자가 특정 데이터 세트가 NoSQL 솔루션에 더 적합하다고 생각하도록 자극해야하는 이유. PHP 개발과 관련하여 가장 많은 것을 다루고있는 것처럼 MongoDB 와 CouchDB 에 특히 관심 이 있습니다.
답변
관계형 데이터 모델을 MongoDB 또는 CouchDB와 같은 NoSQL 데이터베이스에 매핑하려고 시도하지 않을 것이라고 스스로에게 약속하십시오. 이것은 개발자가 떠오르는 기술을 평가할 때 가장 흔히 저지르는 실수입니다.
이 방법은 자동차를 타고 말처럼 길을 따라 카트를 당기려고하는 것과 유사합니다.
물론 모든 사람의 경험으로 인한 자연스러운 반응이지만 문서 데이터베이스를 사용할 때의 실제 가치는 데이터 모델을 단순화하고 개발자로서의 어려움을 최소화 할 수 있습니다. 코드베이스가 줄어들고 버그가 줄어들고 찾기 쉬워지며 성능이 향상되며 확장 성이 훨씬 간단 해집니다.
Joomla 설립자로서 나는 편견을 가지고 있지만 CMS 공간에서 나오고 있습니다. MongoDB와 같은 것은 내용이 문서 시스템에 매우 자연스럽게 매핑되므로 은총 알입니다.
MongoDB의 또 다른 좋은 사례는 실시간 분석입니다. MongoDB는 특히 동시성과 관련하여 성능과 확장 성이 매우 뛰어납니다. MongoDB.org 웹 사이트에는 이러한 속성을 보여주는 사례 연구가 있습니다.
각 데이터베이스마다 고유 한 목표와 사용 사례가 있다는 개념에 동의합니다. 평가를 위해 각 데이터베이스의 목적을 취하십시오.
답변
MongoDB 사이트에는 MongoDB를위한 훌륭한 사용 사례가 언급되어 있습니다. 주어진 예는 실시간 분석, 로깅 및 전체 텍스트 검색입니다. 이 기사는 모두 읽을 가치가 있습니다 http://www.mongodb.com/use-cases
또한 NoSQL 데이터베이스가 어떤 프로젝트 유형에 가장 적합한 지에 대한 훌륭한 글이 있습니다 : http://kkovacs.eu/cassandra-vs-mongodb-vs-couchdb-vs-redis
답변
Rick Cattell의 기타 데이터 저장소 (일명 NoSQL), 차이점 및 사용 사례에 대해이 기사를 제안합니다. http://www.cattell.net/datastores/index.html
답변
NoSQL에 대해 내가 좋아하는 것은 성능과 관련이 없으며 사용 성과 관련이 있습니다. 문서 저장소는 원자 데이터 단위가 문서와 유사 할 때 작업하기가 더 쉽습니다. 개체와 직렬화하는 것이 쉽지 않기 때문입니다. 더 재미 있고 개인 프로젝트 나 사이드 프로젝트에서 중요한 요소입니다.
답변
나는 잠시 동안 NoSQL DB를 사용해 왔으며 이것이 주제에 기여한 것입니다.
NoSQL 데이터베이스 의 훌륭한 사용 사례 는 통계 및 / 또는 보고서 생성을 위한 응용 프로그램입니다 특히 제 3 자 소스에서 데이터를 제공 할 때 .
NoSQL 데이터베이스가 좋은 선택 일 수있는 상황
예를 들어 MongoDB 를 고려해 봅시다 .
MongoDB 에서 JSON으로 데이터 를 가져 오면 ( 타사 API에서 가져 오거나 sql-application에서 내보낼 수 있음) 데이터베이스에서 JSON 데이터 를 가져오고 업데이트하기 가 매우 힘듭니다 . 예를 들어 명령 줄 mongoimport
유틸리티 사용
이 시점에서 동적 쿼리를 작성하는 것은 매우 간단합니다 에서 필터링 및 그룹화를 사용하여 이러한 종류의 응용 프로그램에 잘 맞는 합니다.
예를 들어, 집계 프레임 워크 사용 :
$pipeline = [];
//filter by date
$pipeline[] = [ '$match' => [ 'created_at' => [ '$gte' => $starDate, '$lte' => $endDate ] ] ];
//if we want to filter by a specific field, we add the filter to the pipeline array
if( $filters->isFilterByField() )
$pipeline[] = [ '$match' => [ 'field' => $fieldValue ] ];
//group the results by date and get the count
$pipeline[] = [ '$group' => [ '_id' => '$created_at', 'num_elements' => [ '$sum' => 1 ] ] ];
return $collection->aggretate( $pipeline );
필터를 동적으로 추가 / 제거 할 수 있는 용이성 을 지적하고 싶습니다.PHP 데이터 구조를 사용하고 쿼리를 작성하는 지루한 문자열 연결을 피하면서 를 . 이 방법을 사용하면 배열에서 요소를 추가 / 제거하는 것만 큼 필터를 동적으로 추가 / 제거 할 수 있습니다.
또 다른 큰 이점은 관계형 데이터베이스를 사용하는 것 보다 이와 같은 솔루션이 더 빠를 가능성이 있다는 것입니다 . 여기서 필요한 모든 데이터를 얻기 위해 다른 테이블과 조인해야합니다.
또한이 사용 사례는 NoSQL 데이터베이스의 모든 주요 제한 을 피하기 때문에 최적입니다 .
-
트랜잭션 부족 : 애플리케이션은 쓰기를 수행하지 않고 읽기만 수행하므로 트랜잭션이 전혀 필요하지 않습니다.
-
테이블 간 조인 부족 : 중복성 을 사용 하여 비정규 화 된 데이터 를 컬렉션에 저장할 수 있으므로 조인이 필요하지 않습니다 . 데이터를 읽기만하기 때문에 비정규 화 된 데이터를 업데이트간에 동기화하는 것에 대해 걱정할 필요가 없습니다.
이런 식으로 우리는 단일 컬렉션에 중점을 둔 쿼리에 적합한 방식으로 중복성으로 데이터 를 저장하는 데 집중할 수 있습니다 .
나는 몇 번 전에 그런 것을 읽었 기 때문에 이것을 쓰고 있습니다. 연구를하기 위해 시간을 절약했을 것입니다.
누군가에게 도움이되기를 바랍니다.
답변
Martin Fowler의이 강연을 강력히 추천합니다 :
https://www.youtube.com/watch?v=qI_g07C_Q5I
요약 :
Martin은 NoSQL 데이터베이스에 대한 빠른 소개를 제공합니다. 데이터베이스의 출처, 사용하는 데이터 모델의 특성 및 일관성에 대해 생각해야하는 다른 방식. 이것으로부터 그는 어떤 종류의 환경을 사용해야하는지, 왜 관계형 데이터베이스를 쓸모 없게 만들지 않는지, 그리고 폴리 글 로트 지속성의 중요한 결과를 설명합니다.
그것은 관계형 데이터베이스 세계에서 올 때 NoSQL이 무엇인지, 다른 카테고리 및 모든 사람들이 이해해야 할 것들에 대한 멋진 그림을 그립니다. 문안 인사.
답변
먼저 CAP (Consistency, Availability and Partitioning, 3 개 중 2 개를 선택해야 함) 이론과 비즈니스 사용 사례를 이해해야합니다. MongoDB는 일관성 및 파티셔닝 및 소파 DB를 충족시키고 가용성 및 파티셔닝을 만족시킵니다.
NoSQL에 관한 YouTube의 Edureka 비디오는 최고의 비디오 자습서 중 하나입니다.
https://www.youtube.com/watch?v=gJFG04Sy6NY
https://www.youtube.com/watch?v=KSq6tMMXZ8s
https://www.youtube.com/watch?v=3z1KFA2qcSo
slideshare.net에서 좋은 프리젠 테이션이 가능합니다
http://www.slideshare.net/EdurekaIN/no-sql-databases-35591065?qid=f1b9c095-6d70-4d0a-91da-1df664c4f389&v=qf1&b=&from_search=3 (이 프레젠테이션은 YouTube의 비디오 자습서를 지원합니다)