2012-12-19 11 views
0

나는 실제적으로 하나를 완성했지만 잘 연구 된 아마도 학문적 알고리즘과 내 것을 비교하기를 원했다. 직접적으로 또는 조합하여 나의 특별한 필요를 해결하는 통계 목적의 라이브러리가있을 수 있습니다.특정 시간대에 누적 된 값의 기록을 유지 관리하는 잘 확립 된 증분 알고리즘이 있습니까?

내 시스템 (OpenSource)은 NetFlow 데이터 스트림을 가지고 있습니다. 데이터베이스에 저장하고 SQL 함수를 사용하는 대신, 나는 데이터베이스가없는 시스템을 가지고 통계 세트를 유지하고, 각각의 새 플로우에 대해 업데이트하고, 초당 스크롤링 (또는 그 이상)하는 것을 선호한다.

내 솔루션에는 초, 분, 시간, 일, 주 등을 나타내는 크기가 [60, 59, 23, 6, ...] 인 들쭉날쭉 한 배열을 효과적으로 만들기 위해 uint의 단일 배열이 포함됩니다.

각 슬롯에는 해당 시간의 총 바이트 수가 들어 있습니다. 따라서 60 초 후에 단일 분 통계가 평균 (초)으로 생성됩니다. 물론 이것은 상대적으로 시간 척도에 따라 계속됩니다.

보다는 단순히 초 단위의 수천을 가진 것은이 때문이다 :

  1. 메모리 제약 및 더 많은 통계 노드가 할 수있는 잠재력; 내가 시간 규모를 롤업 한 사용자

...에

  • 이상적인 프리젠 테이션.

    통계 (WAN 링크, IP 주소, 대상 주소, SourcePort-DestinationPort)의 계층 구조에서 여러 노드에 흐름을 적용 할 수 있다고 가정하면 델타를 한 번 계산 (GenerateDelta) 한 다음 모든 노드에서 적용합니다. 활성화되어 있고 흐름 메타 데이터와 일치합니다.

    주어진 노드에 대한 통계치는 다음의 가능성의 경우에, "스크롤"할 것이다 :

    (JSON AJAX 요청 \ HTTP를 통해) 판독/표시되는
    1. 는 델타인가 될 때
    2. 전자 매 n-초 (통상적으로 1 N) (인해 중요한 흐름)

    전체 TI 통해 실행 합계를 유지하는 잘 확립 된 알고리즘이있을 수있다 나 (초, 분 ...). 그러나 실패도 내 코드의 작은 하위 섹션에 비교를위한 적절한 알고리즘이있을 수 있습니다 :

    • GenerateDelta -이 분해 및 통계의 슬롯을 통해 시간과 흐름을 평균에 대한 구체적인 그대로 가능성이없는 정렬.
    • 스크롤 - 초만 있다면, 물론 간단 할 것입니다.하지만 내 솔루션은 60 초마다 60 초마다 새 분 합계로 결합해야합니다.

    나는 이미 (거의) 아무 문제없이 많은 성능 고려 사항으로 내 자신을 모두 완료 한 자신의 알고리즘 중 하나를 제안 조치를하지 않으. 그리고 다른 사람들은 오픈 소스로 완성되고 출판 될 때 내 알고리즘을 살펴볼 수있을 것입니다.

    내가보기를 원하는 것은 비교를 위해 "잘 설정된"알고리즘입니다. 아마 내 것이 더 나을 것이다. 아마 내 것이 더 나쁠 것이다. Google은 이러한 종류의 질문에 능숙하지 않습니다. 귀하의 도움이 필요합니다.

    감사!

  • +1

    요청에 따라 나는 디자인을 비판하거나 대안을 제안하지도 않습니다. 이것은 귀하의 질문에 대한 답을 다소 배제합니다. 모든 대형 서비스 제공 업체는 정확한 세부 정보가 쉽게 공개되지 않을 수있는 성능 모니터링 프레임 워크를 갖게 될 것입니다. 따라서 그것을하는 방법에 대한 지식의 시체가 있습니다. 그것들 중 일부는 출판되었지만 그것이 "잘 정립 된"방법과 맞지 않습니다. 어쨌든 다음과 같은 검색을 시도해 보시기 바랍니다. http://scholar.google.com/scholar?q=%22stream+statistics%22&hl=en – rici

    +0

    "스트림 통계"가 아마도 내 도메인의 이름을 지정하는 대답 일 수 있습니다. 문제. – Todd

    +0

    만약 내가 또는 누군가가 위에서 언급 한 것과 같이 특별히 나의 문제에 맞는 "Stream Statistics"의 영역에서 그런 기사/알고리즘을 발견한다면 그것은 더 직접적인 답이 될 것이다. – Todd

    답변

    2

    @rici의 의견에 감사드립니다. "스트림 통계"도메인이 필요한 것입니다. 스트림 통계를 다루기위한 DSMS (Data Stream Management System)가 있습니다. SQL RDBMS 시스템은 SQL 쿼리에 의해 생성 된 통계로 데이터를 저장할 수있는 반면, 데이터 스트림 관리 시스템은 하나 이상의 쿼리가 주어지면 데이터 스트림의 연속 처리를 가능하게합니다. 데이터가

  • 는 시퀀스하지 세트 을하고 데이터를 처리하는 쿼리를 갖는 광대하기 때문에

    1. 는, 단일 패스가되는 질적 사용
    2. 을 위해 품질을 희생 할 수 있다는 :

      This paper, 같은 DSMS 설명 기타 ...

    This one은 이러한 DSMS의 다이어그램을 나타내며 네트워크 트래픽 분석

    This paper은 연속 쿼리를 정의하기 위해 SQL과 유사한 구문 인 StreamSQL을 설명합니다.

    독점 솔루션에 액세스 할 수 없더라도. 확실하게 잘 설정된 알고리즘이 있습니다. 따라서 일반 스트림 쿼리 도구에 대한 특수 시스템의 성능을 테스트 할 수 있습니다.

    DSMS의 여러 제품/프로토 타입은 this wiki page에서 찾을 수 있습니다. 특히 Odysseus은 Java 기반 및 오픈 소스입니다.