Magazynowanie danych użytkownika

0

Zagadnienie wygląda w ten sposób:

Użytkownicy mają sensory które zbierają dane temperaturowe co parę sekund. Następie informacje z sensorów powinny być zapisane w jakiś sposób na bazie danych tak aby możliwe było ich analizowanie wstecz. Wyciąganie średnich temperatur i inne podobne. Powoduje to że danych robi się naprawdę sporo. Nie pracowałem nigdy z takim rodzajem danych i nie wiem jakie rozwiązanie będzie odpowiednie. Na razie wyobrażam sobie to w ten sposób aby każdy odczyt temperatury zapisywać jako nowy rekord w tabeli z pomiarami temperatury. Ewentualnie dodatkowa tabela zbierająca wyniki obliczeń, żeby nie liczyć tego samego na tak dużych zbiorach gdy użytkownik ponownie będzie chciał zobaczyć na średnią temperature dla jego urządzenia w wcześniejszym miesiącu. Jedyne co mnie przeraża ta ilość danych która będzie zawarta w tabeli temperatur. Baza SQL.

3

Jesli danych jest do 1TB to PostgreSQL powinien dać rade. Ewentualny problem to że danych bedzie za dużo dla jednej tabeli. Poczytaj o partycjonowaniu tabel. Standardowo robi się jedną tabelę-partycje na miesiąc.

Jeśli danych ma być wiecej niż 1TB to możliwe że to idealny przypadek pod Cassandrę. Ale to już trzeba stawiać klaster itd.

3

Jeśli chcesz analizować duże zbiory danych w bardzo wydajny sposób, bez tracenia czasu na samo utrzymanie bazy danych możesz rzucić okiem na AWS Athena.
Bardzo dobrze się spisywała w moich projektach w podobnych przypadkach. Co prawda nie jest to baza SQLowa, ale same zapytania można pisać w SQL :)

3

Patrzyłeś na jakieś bazy danych typowo pod dane time-series (np. InfluxDB, TimescaleDB)?

1

Hmm... A musisz to robić w bazie danych SQL? Jeśli to proste informacje typu czas i wartość, może warto zastanowić się nad implementacją tego w pliku raw z prostą i zoptymalizowaną strukturą danych (ile bitów danych może zajmować temperatura i pole czasu, ew. ID użytkownika), zoptymalizowaną np. do jednoczesnego zapisywania i odczytywania kilku rekordów na raz (SSE/AVX), prosty zapis przez I/O systemowe, a odczyta zrobisz przez mapowanie pliku do pamięci, szybciej tego w żadnej bazie danych nie ogarniesz.

1 użytkowników online, w tym zalogowanych: 0, gości: 1