Jestem pod wrażeniem szybkości przeprowadzania transformacji, ładowania danych i łatwości użycia Pandas
i chcę wykorzystać wszystkie te ładne właściwości (między innymi) do modelowania niektórych dużych zbiorów danych (~ 100-200k wierszy, < 20 kolumn). Celem jest praca z danymi w niektórych węzłach komputerowych, ale także zapewnienie widoku zestawów danych w przeglądarce za pośrednictwem Flask
.Pandy jako szybkie przechowywanie danych dla aplikacji Flask
Obecnie korzystam z bazy danych Postgres do przechowywania danych, ale import (pochodzący z plików CSV) danych jest powolny, nużący i podatny na błędy, a pobieranie danych z bazy danych i przetwarzanie to niewiele łatwiej. Dane nigdy nie zostaną zmienione po zaimportowaniu (brak operacji CRUD), więc pomyślałem, że idealnie nadaje się do przechowywania go jako kilka pand DataFrame
(przechowywanych w formacie hdf5 i ładowanych za pośrednictwem pytables).
Pytanie brzmi:
(1) Czy to dobry pomysł i jakie są rzeczy, na które trzeba uważać? (Na przykład nie oczekuję problemów z współbieżnością, ponieważ są one (powinny?) Być bezpaństwowcami i niezmiennymi (pod opieką od strony aplikacji)). O co jeszcze trzeba uważać?
(2) W jaki sposób uzyskać buforowanie danych po załadowaniu z pliku hdf5 do DataFrame
, więc nie trzeba go ładować dla każdego żądania klienta (przynajmniej najnowsze/częste ramki danych). Flask
(lub werkzeug
) ma klasę SimpleCaching
, ale wewnętrznie gromadzi dane i odrzuca zapisane w pamięci podręcznej dane dostępu. Zastanawiam się, czy jest to konieczne w moim konkretnym przypadku (zakładając, że obiekt z pamięci podręcznej jest niezmienny). Czy taka prosta metoda buforowania jest użyteczna, gdy system zostanie wdrożony z Gunicorn (czy możliwe jest posiadanie danych statycznych (pamięć podręczna) i czy współbieżne (różne procesy?) Żądają dostępu do tej samej pamięci podręcznej?).
Zdaję sobie sprawę, że jest to wiele pytań, ale zanim zainwestuję więcej czasu i zbuduję dowód na to, pomyślałem, że dostaję tu informacje zwrotne. Wszelkie przemyślenia są mile widziane.
Interesujące pytanie. Zajmuję się również dużymi ilościami danych tylko do odczytu i często zastanawiam się nad chudym i pragmatycznym podejściem do tego. Czy mogę zapytać, z iloma płytami masz do czynienia? (Mam około 300 milionów = około 4 GB danych) – Hexatonic
Jest w przedziale dziesiątek tysięcy (prawdopodobnie 100 000 na maksimum). Zgodziłem się z hdf5 i jestem bardzo zadowolony z tej decyzji i wykorzystania Pand (już od prawie 2 lat). Dobrą rzeczą w hdf5 i pytables jest to, że możesz uruchamiać zapytania na dysku bez ładowania całego pliku. Z moim małym zestawem danych jednak nigdy nie miałem takiej potrzeby (w twoim przypadku może być inaczej). Byłem szczególnie pod wrażeniem prędkości i/o odczytu pliku hdf5 w porównaniu z zapytaniem sql. – orange