przechowywanie masowych uporządkowanych danych szeregów czasowych w derywatach bigtable

Próbuję dowiedzieć się, czym dokładnie są te nowe sklepy danych, takie jak bigtable, hbase i cassandra.

Pracuję z ogromnymi ilościami danych giełdowych, miliardami wierszy danych cen/cytatów, które mogą dodać do 100 gigabajtów każdego dnia (chociaż te pliki tekstowe często kompresują się o co najmniej rząd wielkości). Dane te są w zasadzie garstką liczb, dwoma lub trzema krótkimi łańcuchami i znacznikiem czasu (zwykle milisekundy). Gdybym miał wybrać unikalny identyfikator dla każdego wiersza, musiałbym wybrać cały wiersz(ponieważ wymiana może generować wiele wartości dla tego samego symbolu w tej samej milisekundzie).

Przypuszczam, że najprostszym sposobem mapowania tych danych do bigtable (włączając w to jego pochodne) jest nazwa symbolu i data (co może zwracać bardzo duże szeregi czasowe, ponad milion punktów danych nie jest niespotykane). Czytając ich opisy, wygląda na to, że z tymi systemami można używać wielu kluczy. Zakładam też, że dziesiętny liczby nie są dobrymi kandydatami do kluczy.

Niektóre z tych systemów (na przykład Cassandra) twierdzą, że potrafią wykonywać zapytania zakresowe. Czy byłbym w stanie sprawnie odpytywać, powiedzmy, wszystkie wartości dla MSFT, dla danego dnia, między 11: 00 a 13: 30 ?

Co zrobić, jeśli chcę przeszukać wszystkie symbole dla danego dnia i zażądać wszystkich symboli, które mają cenę między $10 a $10.25(więc przeszukuję wartości i chcę zwrócić klucze w wyniku)?

Co jeśli chcę dostać dwa razy szereg, odjąć jeden od drugiego i zwrócić dwa razy szereg i ich wynik, czy będę musiał zrobić jego logikę w moim własnym programie?

Czytanie odpowiednich artykułów wydaje się pokazywać, że systemy te nie są zbyt dobre dla Systemów masowych szeregów czasowych. Jednak jeśli systemy takie jak google maps są oparte na nich, myślę, że szeregi czasowe powinny działać również. Na przykład pomyśl o czasie jako o osi x, cenach jako o osi y i symbolach jako nazwanych lokalizacjach - nagle wygląda na to, że bigtable powinien być idealnym magazynem dla szeregów czasowych (jeśli cała ziemia może być przechowywana, pobierana, powiększana i adnotowana, dane giełdowe powinny być trywialne).

Czy jakiś ekspert może wskazać mi właściwy kierunek lub wyjaśnić wszelkie nieporozumienia?

Thanks

Author: Dave Stenglein, 2009-10-26

6 answers

Nie jestem jeszcze ekspertem , ale gram z Cassandrą od kilku dni i mam dla Ciebie kilka odpowiedzi:

  1. nie martw się o ilość danych, jest to nieistotne w systemach takich jak Cassandra, jeśli masz $$$ za duży klaster sprzętowy.

Niektóre z tych systemów (na przykład Cassandra) twierdzą, że potrafią wykonywać zapytania zakresowe. Czy byłbym w stanie sprawnie odpytywać, powiedzmy, wszystkie wartości dla MSFT, dla danego dnia, między 11: 00 a 13: 30 ?

Cassandra jest bardzo przydatna, gdy wiesz, jak pracować z kluczami. Może szybko przechodzić przez klucze. Aby wyszukać MSFT między 23:00 a 13: 30, musisz wpisać swoje wiersze w następujący sposób:

MSFT-timestamp, GOOG-timestamp , ..itd Następnie możesz powiedzieć Cassandrze, aby znalazła wszystkie klucze zaczynające się od MSFT-now i kończące się na MSFT-now+1hour.

Co jeśli chcę przeszukać wszystkie symbole dla danego dnia i zażądać wszystkich symboli, które mają cenę od 10 $do $10.25 (więc szukam wartości i chcę zwrócić klucze w wyniku)?

Nie jestem ekspertem, ale do tej pory zdałem sobie sprawę, że Cassandra w ogóle nie szuka wartości. Więc jeśli chcesz zrobić powyższe, trzeba będzie zrobić inną tabelę dedykowane tylko do tego problemu i zaprojektować swój schemat, aby pasowały do przypadku. Ale to nie będzie wiele różnić się od tego, co opisałem powyżej. Chodzi o nazywanie kluczy i kolumn. Cassandra może ich znaleźć bardzo szybko!

What if I want aby uzyskać serię 2 razy, odjąć jedną od drugiej i zwrócić serię 2 razy i ich wynik, czy będę musiał zrobić jego logikę w moim własnym programie?

Zgadza się, cała logika odbywa się wewnątrz twojego programu. To nie jest MySQL. To tylko silnik magazynowy. (Ale jestem pewien, że następne wersje będą oferować tego typu rzeczy)

Proszę pamiętać, że jestem nowicjuszem w tym, jeśli się mylę, nie krępuj się mnie poprawiać.

 20
Author: Gotys,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-15 09:21:40

Jeśli masz do czynienia z ogromną bazą szeregów czasowych, to standardy są następujące:

Nie są tanie, ale mogą bardzo efektywnie obsługiwać Twoje dane.

 13
Author: Shane,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-11-03 22:43:12

Ktoś kogo szanuję polecił Open Time Series Database. W szczególności, że schemat był najmilszy, jaki kiedykolwiek widział.

Http://opentsdb.net/

 12
Author: Lance Norskog,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-03-25 02:23:11

'stoję przed tą samą górą. Mój główny problem z Cassandrą polega na tym, że nie mogę uzyskać strumienia na zestawie wyników, na przykład w postaci iteratora.

Patrzę już w górę iw dół DOC i sieci, ale nic.

Nie mogę pobrać wszystkich kluczy, a następnie pobrać wiersze, ponieważ miliardy wierszy sprawia, że to niemożliwe.

 2
Author: user1052080,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-01-30 16:46:46

DataStax Java Driver pozwala na automatyczne stronicowanie, dzięki czemu będzie strumieniować wyniki tak jak iterator i to wszystko jest wbudowane. Tak przy okazji to w Cassandrze 2.0.1 - http://www.datastax.com/dev/blog/client-side-improvements-in-cassandra-2-0

 1
Author: Patrick Callaghan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-12-18 12:09:36

Tylko dla kompletności czytania tego w 2018 roku, istnieje teraz specjalna baza danych tylko dla danych timeseries o nazwie TimescaleDB

Http://www.timescale.com/

Ten blog jest wart przeczytania, wyjaśnia, dlaczego jest lepszy od rozwiązań takich jak Cassandra w tym szczególnym przypadku i dlaczego zdecydowali się zbudować go na szczycie relacyjnego PostgreSQL baza danych

Https://blog.timescale.com/time-series-data-why-and-how-to-use-a-relational-database-instead-of-nosql-d0cd6975e87c

 0
Author: Marian Klühspies,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-01 10:34:37