2009-06-04 11 views
9

Próbuję zidentyfikować możliwe metody przechowywania 100 kanałów danych zmiennoprzecinkowych 25 Hz. To spowoduje, że 78 800 000 000 punktów danych na rok.Jak przechowywać wiele lat o wartości szeregu czasowego 100 x 25 Hz - Serwer bazy danych Sql lub Timeseries

Idealnie wszystkie te dane byłyby efektywnie dostępne dla stron internetowych i narzędzi, takich jak usługi raportowania serwera SQL. Zdajemy sobie sprawę, że relacyjne bazy danych są słabe w obsłudze serii czasowych tej skali, ale muszą jeszcze zidentyfikować przekonującą, specyficzną dla serii czasowej bazę danych.

Kluczowymi zagadnieniami są kompresja zapewniająca wydajne przechowywanie, a jednocześnie oferuje łatwe i wydajne zapytania, raportowanie i eksplorację danych.

  • W jaki sposób poradzisz sobie z tymi danymi?

  • Czy istnieją funkcje lub projekty tabel w serwerze Sql, które mogą obsłużyć taką ilość danych szeregów czasowych?

  • Jeśli nie, czy są jakieś rozszerzenia stron trzecich dla serwera Sql, aby efektywnie obsługiwać gigantyczne serie czasowe?

  • Jeśli nie, czy istnieją bazy danych szeregów czasowych, które specjalizują się w przetwarzaniu takich danych, ale zapewniają naturalny dostęp za pośrednictwem usług Sql, .Net i Sql Reporting?

dziękuję!

+0

Jak duże są punkty danych? – cgp

+0

Jaki jest typ danych próbek? Czy stała próbka/posuw jest stała czy zmienna? Czy chcesz zapisać próbny czas lub czy można go wywnioskować? I jakie dane są próbkowane? – RBarryYoung

+0

Założono 32-bitowy zmiennoprzecinkowy. Może być trochę optymalizacji, ale byłoby idealnie, gdybyśmy nie musieli radzić sobie z bólem głowy. – Duncan

Odpowiedz

1

Chciałbym podzielić tabelę na, powiedzmy, datę, aby podzielić dane na małe bitów po 216,000,000 wierszy.

Pod warunkiem, że nie potrzebujesz statystyk całorocznych, jest to łatwe do indeksowania.

Powiedz, zapytanie takie jak "podaje mi średnią dla danej godziny" będzie kwestią sekund.

+0

Dzięki za odpowiedź. Używanie partycji serwera SQL lub tylko kilka tabel? Czy w przypadku wielu tabel istnieją wzorce projektowe ułatwiające obsługę zapytań w tabelach? – Duncan

+0

@Duncan: Parowanie programu SQL Server byłoby najlepsze, ale nie wiem, ile partycji na to pozwoli.W przypadku wielu tabel można uruchomić program planujący w celu odtworzenia widoków jako SELECT * FROM table_20090609 UNION ALL SELECT * FROM table_20090608 itd. Nie zapomnij dołączyć kolumny podziału na partycje do tabel. – Quassnoi

1

Przypuszczam, że potrzebny jest losowy dostęp do serii danych. Pomysł, którego już użyłem do tabeli danych o opadzie, ma na celu podzielenie całego zbioru danych na mniejszą część, aby utworzyć wpis dla każdej minuty lub nawet minuty. Następnie można pop tej, wciąż dużej tablicy z db i dostęp bezpośrednio do potrzebnej części, można znaleźć bezpośrednią korelację między przesunięciem czasu i przesunięcie bajtów.

+0

Dzięki za odpowiedź. Używanie kropelki do dużej macierzy? Czy istnieją podejścia projektowe do łatwego wykrycia blobu, np. widoki? – Duncan

1

Zestaw funkcji, który opisujesz, dotyczy Kostki Analizy. Sprawdź usługi Analysis firmy Microsoft, jeśli jesteś w tej części świata tech:

http://msdn.microsoft.com/en-us/library/ms175609(SQL.90).aspx

miarę modelu jesteś opisujący, trzeba zaimplementować model Kimball (średnia danych model magazynowy) o wymiarze czasu. Natknąłem się na ten problem, przechowując pliki dziennika medialnego jakiś czas temu.

Powodzenia.

+0

Dzięki za odpowiedź. Trudno wiedzieć, od czego zacząć z hurtowniami danych. Przeszukałem go i przeczytałem link, ale skorzystałbym z czegoś w rodzaju przykładowego projektu, który rozwiązuje podobny problem. Czy wiesz o czymś takim? – Duncan

+0

Masz rację, że Data Warehousing jest trudna do rozpoczęcia. Najlepszym procesem, który mogę polecić jest (i pamiętaj, że mówię tu o Microsoft Visual Studio i Sql Server 2005/2008), aby pobrać przykładowy magazyn AdventureWorks db: http://www.microsoft.com/ downloads/details.aspx? FamilyId = E719ECF7-9F46-4312-AF89-6AD8702E4E6E i displaylang = en , a następnie sprawdź niektóre z laboratoriów dla Sql Server: http://www.microsoft.com/sqlserver/2008 /en/us/virtual-labs.aspx Wreszcie, polecam książkę Kimball zacząć: http://www.ralphkimball.com/html/booksDWT2.html powodzenia! –

0

mieć

A. 365 x 24 x 100 = 876,000 godzinę sygnały (kanały) na rok

B.każdy sygnał zawierający 3600 * 25 = 90000 punktów danych

Jak o tym, czy można przechowywać dane w jednym wierszu na każdy sygnał, z kolumnami na podsumowanie/statystyki zapytań dla aktualnie obsługiwanych przypadków użycia, a blob skompresowanego sygnału dla przyszłe?

+0

Dzięki za odpowiedź. Może nie rozumiem w pełni sugestii. Czy sugestia dla każdego wiersza się podoba (signalId, timeperiod, float ave, float min, float max, blob raw)? Czy istnieją przykłady łatwego generowania danych o blobach np. widoki? – Duncan

+0

Coś w tym stylu, ale nie jestem pewien co do tego, czy dane blobowe są w ogóle sprawdzane. Myślałem, że w razie potrzeby ograniczę zapytania do dodatkowych kolumn statystyk. – bubaker

1

Wygląda na to, że można wypróbować wydanie Infobright Community lub Enterprise Edition. Jest to pamięć masowa zorientowana na kolumny, zaprojektowana do celów analitycznych i dużych (istniejące instalacje do 30 TB, jak mówią) danych i dobrego współczynnika kompresji.

Ładowarka danych jest również dość szybka, a złącza dla narzędzi ETL (Talend, czajnik itd.).

Edycja wspólnotowa dostępna bezpłatnie na zasadach GNU GPL, ale umożliwia dodawanie danych tylko za pośrednictwem rodzimego programu ładującego. Wersja Enterprise obsługuje dodawanie/aktualizowanie w jednym wierszu za pośrednictwem DML.

Kolejna zaleta, z której można korzystać wraz ze wszystkimi narzędziami obsługującymi połączenia MySQL.

Orientacja kolumny pozwala, f.e., dodawać kolumny dla komponentu daty na każdym wymaganym poziomie agregacji (używam daty, liczby tygodni, miesięcy i qtr.) Dla lepszej wydajności, ale bez tego dobrze.

Używam go dla stosunkowo niewielkich (jeszcze) ilości danych transakcji biznesowych do celów analitycznych z R jako narzędziem do analizy danych za pośrednictwem skryptów mysql i python (numpy) jako pewnego rodzaju ETL.

Minusy: brak oficjalnej obsługi utf-8, agregacja według wartości funkcji (wybierz miesiąc (data od ...)) jeszcze nie zaimplementowana (plan: lipiec 2009, AFAIK), ale do tego używam ETL.

Link: http://www.infobright.org/Download/ICE/

+0

Dzięki - popatrzę. – Duncan

+0

prosimy o podzielenie się wrażeniami po eksploracji ICE :) Pracuję nad architekturą naszej małej aplikacji do analizy/raportowania z R, Infobright i Django jako przeglądarką raportów i interesuje się nowymi pomysłami na przechowywanie/reprezentowanie dużych danych :) – zzr

0

Czy brałeś pod uwagę HBASE lub Open TSDB. Możesz również rzucić okiem na Cassandrę

0

Jeśli chodzi o dane zmiennoprzecinkowe, TSDB oferują znacznie lepszą wydajność. Algorytmy kompresji Timeseries są różne, dzięki czemu uzyskujesz lepszą pamięć i częstotliwość zapytań.