2011-11-22 4 views
1

MongoDB에서 원시 JSON 스트림 (Twitter 또는 NYTimes를 통해)을 효율적으로 저장하여 나중에 Lucene 또는 Hadoop으로 데이터 (NYTimes 기사 또는 Tweets/사용자 이름)를 색인 할 수 있습니다. Mongo에 데이터를 저장하는 가장 현명한 방법은 무엇입니까? JSON을 파이프해야할까요? 아니면 더 좋은 점이 있습니까? 나는 mongodb 용으로 3 대의 복제본 세트를 가진 단일 기계만을 사용하고 있습니다.MongoDB에서 원시 JSON 스트림을 효율적으로 저장하고 쿼리하려면 어떻게해야합니까?

검색 쿼리를보다 효율적으로 최적화하기 위해 쿼리를 작성하거나 데이터를 저장하는 효율적인 방법이 있습니까?

+0

이 예제는 PHP를 사용하지만 다음과 같이 유용 할 수 있습니다. http://learnmongo.com/posts/mongodb-php-twitter-part-1/ –

답변

7

검색 쿼리를보다 효율적으로 최적화하기 위해 쿼리를 작성하거나 데이터를 저장하는 효율적인 방법이 있습니까?

이것은 어떤 종류의 쿼리를 만들고 응용 프로그램의 사용 패턴이 무엇인지에 따라 다릅니다. 송신자, 타임 스탬프, 텍스트 등을 포함하는 Mongo Document에 각 트윗을 저장하는 것이 매우 간단합니다. 어떤 검색어를 사용해야하는지에 따라이 필드에 색인을 생성해야합니다 (자세한 정보 : http://www.mongodb.org/display/DOCS/Indexes)

전체 텍스트 검색의 경우 트윗 텍스트를 토큰 화/파싱/스템프하고 각 트윗과 함께 토큰 배열을 저장할 수 있습니다. 보다 강력한 전체 텍스트 검색 기능이 필요한 경우 Lucene으로 색인을 생성하고 각 객체 문서에 각 객체 문서를 저장할 수도 있습니다. 그러나 실제로는 2 개의 데이터 저장소가 필요합니다.

다시 말하지만 실제로 여기에는 정답이 없습니다 유스 케이스의 세부 사항을 알지 못한다.

+0

"전체 텍스트 검색을 위해 토큰 화/구문 분석/트윗의 텍스트를 저장하고 각 트윗과 함께 토큰 배열을 저장하여 쿼리 할 수 ​​있습니다. 이것은 아주 좋은 제안입니다, 고마워요! – vgoklani