2012-04-30 12 views
10

Mam strumień zdarzeń i pamięć typu klucz-wartość. Wielkość wartości jest ograniczona 4 kb. Współczynnik zdarzeń nie jest bardzo duży - maksymalnie setki dziennie.Framework java do agregacji i implementacji okien przesuwnych

W tej wartości należy zapisać zsekwencjonowaną reprezentację struktury danych, która zapewnia skuteczny mechanizm do odczytywania, przechowywania i aktualizowania zagregowanej liczby zdarzeń w okresie 3 miesięcy z dziennymi i tygodniowymi agregacjami i przesuwanymi oknami 1/2 godzina.

Rozwiązanie wymaga wydajnego wykonywania następujących zadań zarówno dla zwykłych agregacji zliczania zdarzeń, jak i dla standardowego odchylenia licznika zdarzeń. (max okres dla wszystkich zadań wymienionych poniżej jest 3 miesiące):

  1. stałe aktualizacje (w leniwe sposób - jak nadejdzie odpowiedni event) - w przypadku, gdy ostatni obliczone skupiska są zbyt stare - rzut nieaktualne dane i tworzenie nowych agregacji
  2. aktualizacja uruchamiana przez żądania odczytu (żądania użytkowników niektóre informacje, np. liczba zdarzeń dla określonego użytkownika, standardowe odchylenie liczby zdarzeń dla pojedynczego użytkownika itp.) w przypadku, gdy najnowsze obliczone agregacje są zbyt stare - rzuć je

Zastanawiam się: czy istnieje struktura kodu źródłowego java, która może pomóc w implementacji powyższego?

Chciałbym również docenić zalecenia design: wzorce projektowe itp

Rozwiązaniem nie jest trudne do zrealizowania od podstaw przy użyciu standardowych Java API, ale zanim to robi Byłbym wdzięczny za jakieś sugestie ramowych open source (jeśli występują).

Googling dla rozwiązania nie doprowadziło mnie nigdzie, z wyjątkiem niektórych artykułów teoretycznych, rozwiązań SQL i IBM (non open source toolkit o nazwie SPL).

Odpowiedz

Powiązane problemy