Jak korzystać z MongoDB z szeregami czasowymi

Jak korzystać z MongoDB z szeregami czasowymi

„Wstaw, aktualizuj, zlokalizuj, usuń i agregat to wszystkie operacje, które mogą być wykonywane w kolekcji szeregów czasowych, podobnie jak w standardowej kolekcji. Za zasłoną istnieje podstawowa różnica. Gdy wstawisz dane do MongoDB, jest on przekonwertowany na optymalny format przechowywania. Szereg czasowy jest prostszy i bardziej wydajny zapytanie niż zwykła kolekcja.

Kolekcje szeregów czasowych są traktowane jako nieaterializowane zapisywalne poglądy w MongoDB. Dane są zapisywane bardziej wydajnie, oszczędzając przestrzeń dysku, a wewnętrzny indeks wewnętrzny jest budowany automatycznie. Zamiast snappy algorytm ZSTD jest domyślnie używany do kompresji danych. Nowa kompresja ma wyższy stosunek, wymaga mniejszej mocy procesora i jest szczególnie odpowiedni do analizy szeregów czasowych z niewielkimi różnicami między dokumentami.

Możliwe jest zmiana algorytmu kompresji w przyszłości, chociaż nie jest to zachęcane. Podczas wstawienia dokumentu kolekcja szeregów czasowych nie jest budowana automatycznie, tak jak inne kolekcje. Należy go wyraźnie utworzyć."

Co to jest szeregi czasowe w MongoDB w Ubuntu 20.04?

Baza danych szeregów czasowych to dostosowana baza danych, która jest zbudowana do przechowywania danych utworzonych ze stałego strumienia wartości w połączeniu z znacznikiem czasu. Najczęstszą aplikacją jest przechowywanie danych z urządzeń sensorycznych, które dostarczają punktów danych w regularnych odstępach czasu, ale są one teraz wykorzystywane do obsługi znacznie szerszego zakresu aplikacji.

Poniżej przedstawiono kilka przykładów możliwych aplikacji:

  • Dane z Internetu rzeczy
  • Usługi internetowe, aplikacje i infrastruktura są pod ciągłym nadzorem.
  • Szacowanie sprzedaży
  • Zrozumienie trendów finansowych
  • Przetwarzane są dane z samochodów samojezdnych lub innych obiektów fizycznych.

Specjalistyczna baza danych szeregów czasowych wykorzystuje technologie kompresyjne w celu zmniejszenia ilości potrzebnej przestrzeni, jednocześnie dostarczając kanałów dostępu do głębiej kopania danych. To zwiększa wyszukiwanie danych i wydajność agregacji podczas korzystania z filtrów zakresu czasu. Są bardziej opłacalne niż wykorzystanie tradycyjnej relacyjnej bazy danych.

Wartości w szeregach czasowych zwykle nie powinny się zmieniać po ich zarejestrowaniu; stąd są wyznaczone jako tylko wkładki lub niezmienne punkty danych. Akcja aktualizacji jest niezwykle rzadka po zapisaniu danych.

Wytyczne dotyczące przechowywania danych szeregów czasowych MongoDB w Ubuntu 20.04

Mamy kilka wytycznych dotyczących danych szeregowych w MongoDB, które są opisane poniżej.

  • Rozważ funkcje danych i wzorce zapytań, jednocześnie dostrajając dane dla odpowiednich metafield i pola.
  • Jeśli to możliwe, połącz dane szeregów czasowych i kolekcje serii czasowej.
  • Poszczególne pomiary lub zestawy pomiarów powinny być zapisywane jako jeden dokument i dodawać w partiach podczas korzystania z kolekcji szeregów czasowych.
  • Dostosuj naszą szczegółowość danych o wartościach atrybutów naszej metafielki lub odrębnych par naszej unikalnej metafielki, w oparciu o nasze tempo spożycia danych.

Jak korzystać z serii czasowych MongoDB w Ubuntu 20.04

Podczas pracy z danymi serii czasowych zazwyczaj potrzebujesz czegoś więcej niż tylko przechowywania; Potrzebujesz również funkcji szybkiego odczytu i zapisu, a także zaawansowanych możliwości zapytań. MongoDB obsługuje teraz dane szeregowe natywnie, od MongoDB 5.0. Należy określić następujące opcje, podając kolekcję szeregów czasowych w MongoDB:

Komenda CreateCollection () można użyć do rozpoczęcia nowej kolekcji szeregów czasowych.

TEMEFIELD: Podczas tworzenia kolekcji szeregów czasowych należy użyć opcji Timefield. Pofforetka oznacza opis właściwości w każdym dokumencie zawierającym datę. Powinniśmy również rozważyć następujące alternatywy:

Metafield: Metafield określa nazwę kolumny w każdym dokumencie zawierającym metadane. Metafield działa jako etykieta lub tag, który pozwala kolekcjom szeregów czasowych zidentyfikować źródło szeregów czasowych. To pole nie powinno i powinno się tylko zmieniać w czasie.

Ziarnistość: Jeśli dostarczony jest dopasowany metafield, atrybut szczegółowości określa lukę czasową między dokumentami. Standardowa ziarnistość to „sekundy”, co wskazuje na szybkość spożycia wysokiej częstotliwości dla każdego szeregu czasowego określonego przez metafield. Granariowalność można dostosować do „sekund”, „minut” lub „godzin”, a w dowolnym momencie można ją zmienić, aby pogorszyć się. Ponieważ jednak nie można zmienić szczegółowości z „minut” na „sekundy”, najlepiej zacząć od drobniejszej szczegółowości i przejść do ostrzejszej szczegółowości.

Wygady: Wreszcie, jeśli zamierzasz usunąć dane po określonym okresie, możemy uwzględnić pole wygaśnięcia, określa, ile sekund powinno minąć przed wygaśnięciem dokumentów i zostaną automatycznie zniszczone.

Wstaw dokumenty z szeregami czasowymi w MongoDB

Przynajmniej każdy dokument dodany do kolekcji szeregów czasowych musi zdefiniować pola czasowe. Data to pola terminowe w poniższym dokumencie ilustracyjnym. Warto zauważyć, że Timefield można nazwać, co chcesz, o ile jest to typu BSON lub data. Do dodawania dokumentów do kolekcji szeregów czasowych można użyć dowolnej techniki wkładania dokumentów do innych kolekcji MongoDB. W tym celu stworzyliśmy kolekcję „WebVisitors” w następujący sposób:

Pojedynczy pomiar powinien być zawarty w każdym dokumencie, który wstawiamy. Użyj następującego polecenia, aby wstawić wiele dokumentów jednocześnie:

Pobieranie danych szeregowych w MongoDB w Ubuntu 20.04

Dokumenty szeregów czasowych można zapytać jak dokumenty z innych kolekcji MongoDB. Na przykład w przypadku MongoDB Shell użyliśmy FindOne, aby szukać dokumentu w kolekcji WebVisitors () w następujący sposób.

Poprzednie zapytanie pokazuje następujące wyniki, jak widać:

Agregacja danych szeregowych w MongoDB w Ubuntu 20.04

Tutaj zastosowaliśmy agregowany rurociąg taki, aby dodać więcej funkcji zapytania. Poniższy przykład agregacji łączy wszystkie dokumenty według danych pomiarowych, a następnie dostarcza średnią wszystkich pomiarów odwiedzających wykonane w tym dniu strony internetowej:

Kiedy wykonujemy rurociąg agregacji na stronie internetowej kolekcji, wyniki wygenerowały średnią dokumentu odwiedzającego z kolekcji „witryny witryny” w następujący sposób:

Wniosek

Istnieje wiele danych szeregowych, ale utrzymanie i dostęp do nich może być trudne. MongoDB zyskał natywną wsparcie dla szeregów czasowych, dzięki czemu praca z danymi serii czasowych jest znacznie łatwiejsza, szybsza i tańsza. Dostaliśmy krótkie wprowadzenie z pewnymi wytycznymi dotyczącymi korzystania z serii czasowych w MongoDB. Mamy kilka ilustracji szeregów czasowych, które pokazują, w jaki sposób możemy wykorzystać szeregi czasowe w kolekcji MongoDB na niektóre możliwe sposoby.