2012-03-25 2 views
2

MongoDB에 일부 로그 데이터를 저장하는 방법에 대해 설명합니다. 이제 컬렉션에 실제로 저장된 로그 유형 목록을 가져와야합니다. 내가 좋아하는 뭔가와 끝까지 할Mongodb 및 mapreduce를 사용하여 하위 항목이있는 목록 만들기

{ 
    "Group": "Import", 
    "SubGroup": "Update server" 
},{ 
    "Group": "Import", 
    "SubGroup": "Delete server" 
} 

(자세한 그룹 및 하위 그룹 각각의 천 될 수있는 척) :

{ 
    "Group": "Import", 
    "SubGroups": ["Delete server", "Update server"] 
} 

그러나 이후

나는이 같은 문서가 각 SubGroup의 더 많은 것이있을 수 있고 나는 어떤 duplicates도 원한다. ... javascript는 HashKey set과 같은 것을 가지고있다. .. 정말로 js 전문가의 많은 것은 여기에 없다.

사용자가보고 싶은 로그 유형을 선택할 수 있도록 GUI에이를 사용할 것입니다.

부탁드립니다. Mapreduce와 출력 유형이 인라인 일 수 있으므로 대체하고 줄입니다. MongoDB에 간단한 방법이 내장되어 있으므로 실제로 매분마다 MapReduce를 업데이트하라는 말을 할 수 있습니다. 실제로는 매우 정적이거나 자체 애플리케이션 레이어에서 캐시로 구현해야하는 항목입니까?

+0

처음부터 이렇게 구조화 된 문서가있는 이유를 설명해 주시겠습니까? 서브 그룹을 배열로 사용하여 문서를 작성/업데이트하는 것이 아니라면 M/R 업데이트를 전혀 수행 할 필요가 없습니다. –

+0

Windows에서의 이벤트 뷰어와 비슷합니다 ... 내가 againts를 쿼리하려는 경우 그룹 및 하위 그룹 (더 나은 이름이있을 수 있음)을 알아야합니다. 어떻게 다시 쿼리 할 수 ​​있습니까? 조언은 여기에서 아주 잘 받았습니다. 나는 SQL과 함께 작업하는 데 익숙하다. 그래서 no-SQL 공간은 새로운 것이다. 어쩌면 내가 지금 덤프 방식으로하고 있을지도 모른다. – Syska

+0

흠 .. 어쩌면 예제를 더 자세하게 업데이트 할 수 있을까요? 당신은 각 객체와 함께 날짜 기록 및 오류 메시지를 갖게 될 것입니까? 하위 그룹은 가능한 값의 잘 정의 된 목록이 아닙니까? –

답변

1

는 ... 자바 스크립트 HashKey 같은 것이

그래서 모든 자바 스크립트 해시 테이블 설정이 없습니다. 이 같은 결과를 저장하고 당신은 동일한 의미로 해시를 얻을 : 맵리 듀스와 출력 유형이 인라인 될 수 있기 때문에, 교체 ​​및 감소

{ 
    "Group": "Import", 
    "SubGroups": { "Delete server": 1, "Update server": 1 } 
} 

.

개인적인 조언은 inline을 피하는 것입니다. Map/Reduce를 실행하려는 모든 노력을 기울이면 결과를 저장할 수도 있습니다.

그러면 및 reducemerge (옵션 목록은 here)이됩니다.

실제로 매우 정적이거나 내 응용 프로그램 계층에서 캐시로 구현해야하는 항목입니까?

Map/Reduce의 출력은 단순히 모음입니다. 해당 컬렉션은 특정 형식 (_id, value)을 갖지만 다른 모든 것과 마찬가지로 쿼리 할 수있는 컬렉션입니다.

10 분마다 요약 데이터를 덮어 쓰려면 그렇게 할 수 있습니다. 그러나 이것은 모든 데이터에서 Map/Reduce를 실행해야 함을 의미합니다. 이것은 로깅 시스템에서 엄청난 양의 작업을 나타낼 수 있습니다.

대신 데이터의 새 부분에만 M/R을 실행 한 다음 기존 요약 데이터에 대해 "다시 줄이기"를 원할 것입니다. 이것은 가장 빠를 것입니다.

+0

취미 프로젝트가 아니기 때문에 그만큼 로깅하지 않습니다.하지만 그걸로 무언가를 배울 수도 있습니다. 하지만 조언을 주셔서 감사합니다, 나는 오늘 밤 나중에 그것을 살펴볼 것입니다. Love mongo ... – Syska

관련 문제