Web Design Blog / Programowanie:

Logi – w systemie plików czy w bazie danych?

Definicja dziennika zdarzeń (czy inaczej logów) jest zawarta już w samej ich nazwie. Logi to zapis wybranych zdarzeń jakie zachodzą w aplikacji internetowej czy jakimkolwiek innym systemie komputerowym. Czynność zapisywania tych informacji nazwy się logowaniem (nie należy mylić z logowaniem się użytkowników).

Najczęstszym zadawanym przez profesjonalistów pytaniem pojawiającym się w internecie jest „Gdzie zapisywać logi?„. Najczęściej przywołuje się dwie możliwości: system plików lub baza danych. Aby zrozumieć istotę problemu trzeba najpierw odpowiedzieć na dwa kluczowe pytania:

Po co zapisuje się logi?

Dziennik zdarzeń jest prowadzony do celów:

  • wykrywanie błędów
  • analizy pracy aplikacji
  • sporządzania statystyk
  • wykrywania specyficznych działań użytkowników np. próby włamań

Co zawierają wpisy o zdarzeniach?

Wpis dziennika w aplikacji internetowej najczęściej zawiera:

  • czas zdarzenia
  • adresy url
  • rodzaj zdarzenia
  • informacje o użytkowniku wywołującym zdarzenie
  • kwalifikacja zdarzenia „normalne zachowanie, ostrzeżenie lub błąd)

O charakterze i poziomie szczegółowości logów decyduje projektant aplikacji.

Zalety przechowywania logów w bazie danych:

Skoro dziennik zdarzeń zawiera pewne dane a bazy danych służą do przechowywania i organizowania danych wydaje się więc logiczne przechowywanie ich w taki sposób. Przemawia też za tym podejściem:

  • Prostota działania – baza danych już istnieje, wystarczy dodać tabelę i dopisywać kolejne rekordy,
  • Nie trzeba mieć dodatkowych uprawnień aby zapisywać dane w bazie danych – zapisywanie w systemie plików wymaga uprawnienia systemowego,
  • Łatwość filtrowania – bazy są stworzone do wyciągania danych dokładnie takich jak potrzebujemy, dodatkowo dane są indeksowanie co może przyspieszać całą procedurę,
  • Szybszy zapis i odczyt w porównaniu do dysku twardego, który jest najczęściej najwolniejszym nośnikiem pamięci w całym systemie.
  • Większe bezpieczeństwo – częściej wykonujemy kopie zapasowe całych baz danych niż wszystkich plików – bazy danych konserwujemy z zazwyczaj większa starannością
  • Większa odporność na błędy – bazy danych są budowane i optymalizowane pod utrzymanie integralności.

Zalety przechowywania logów w systemie plików:

Trzeba też zaznaczyć, że logi w porównaniu do innych danych aplikacji internetowej są dość specyficzne. Zwykłe dane w aplikacji internetowej są zazwyczaj częściej odczytywane niż zapisywane – z logami jest całkowicie odwrotnie. Rzadko też dochodzi do częstej  potrzeby ich przeglądania i filtrowania a szybkość odczytu tak naprawdę nie jest dla nas w tym momencie istotna. Są zapisywane dość regularnie tzn, podczas działania aplikacji cały czas dochodzi do  dodawania kolejnych wpisów.

  • Nie obciążamy bazy danych – logowanie informacji o zdarzeniach wymaga kolejnego połączenia a baza danych to najbardziej „zamęczany” element w aplikacjach internetowych, przechowywanie tam logów może ją nadmiernie obciążyć – im baza danych jest większa tym wolniej działa.
  • Starsze logi można łatwo kompresować – i przy okazji zaoszczędzić miejsce i ułatwić ich usuwanie – w bazie danych jest to trudne do wykonania
  • Można zapisać błędy dotyczące baz danych – jeżeli baza danych nie działa to nie zapiszemy w niej danych – w zapisywaniu w systemie plików mamy prostszą ścieżkę krytyczną i więcej zdarzeń można zapisać.
  • Łatwość dostępu – w przypadku awarii zwykłe pliki na dysku możemy łatwiej odczytać.
  • Pamięć do przechowywania zwykłych plików jest tańsza niż pamieć serwerów baz danych, która stara się efektywnie wykorzystywać RAM.
  • Łatwość migracji – bez problemu część plików można skopiować na inne nośniki, systemy chmurowe itp.

Podsumowanie

Można z tego wszystkiego wyciągnąć następujące wnioski: jeżeli aplikacja intensywnie korzysta z bazy danych i jest używana przez wielu użytkowników należy wykorzystać system plików a więc logi należy zapisywać do zwykłych plików tekstowych. Zapisywanie logów w bazie danych jest w tym wypadku „zbyt drogie”. Logowanie tego typu można spotkać najczęściej we wszelkiego rodzaju dużych aplikacjach i frameworkach.

Jeżeli logi są bardzo istotne a ich bezpieczeństwo jest na tyle ważne, że jest warte poniesienia dodatkowych kosztów związanych z utrzymaniem aplikacji to należy użyć bazy danych. Aby nie poświęcać wydajności aplikacji warto rozważyć stworzenie osobnej bazy danych do przechowywania logów.

Logi – w systemie plików czy w bazie danych?
4.6 (91.11%) głosów: 9



Autor:

Służę pomocą w razie wykonania lub odnowienia strony internetowej dla twojej firmy niezależnie od lokalizacji czy skali przedsięwzięcia. Masz pytania? Pisz w komentarzu.

Zadaj pytanie lub skomentuj


Wyrażam zgodę na przetwarzanie moich danych osobowych przez firmę Paweł Mansfeld z siedzibą w Jastrzębiu-Zdroju, ul. Plebiscytowa 10, w celu udzielenia odpowiedzi, w tym przedłożenia oferty jeśli o nią pytam. Moje dane osobowe będą przetwarzane do czasu cofnięcia zgody lub przez okres niezbędny do ustalenia, dochodzenia lub obrony roszczeń. Mam prawo dostępu do danych, sprostowania, usunięcia lub ograniczenia przetwarzania, prawo sprzeciwu, prawo wniesienia skargi do organu nadzorczego i prawo do przeniesienia danych.

Komentarze publiczne

Brak komentarzy.
Otrzymuj powiadomienie o nowych artykułach

Wyrażam zgodę na przetwarzanie moich danych osobowych przez firmę Paweł Mansfeld z siedzibą w Jastrzębiu-Zdroju, ul. Plebiscytowa 10, w celu udzielenia odpowiedzi, w tym przedłożenia oferty jeśli o nią pytam. Moje dane osobowe będą przetwarzane do czasu cofnięcia zgody lub przez okres niezbędny do ustalenia, dochodzenia lub obrony roszczeń. Mam prawo dostępu do danych, sprostowania, usunięcia lub ograniczenia przetwarzania, prawo sprzeciwu, prawo wniesienia skargi do organu nadzorczego i prawo do przeniesienia danych.

*Bez obaw, nie udostępniam nikomu twojego adresu e-mail