Kiedy należy preferować bazę danych do przechowywania danych niż do przechowywania danych w pliku tekstowym?
Wikipedia mówi nam, że baza danych to zorganizowany zbiór danych . W ten sposób plik tekstowy jest bazą danych. Mówi dalej:
Dane są zazwyczaj zorganizowane w celu modelowania odpowiednich aspektów rzeczywistości w sposób, który obsługuje procesy wymagające tych informacji. Na przykład modelowanie dostępności pokoi w hotelach w sposób umożliwiający znalezienie hotelu z wolnymi miejscami.
Ta część jest subiektywna - nie mówi nam konkretnie, w jaki sposób należy modelować dane ani jakie operacje należy zoptymalizować. Twój plik tekstowy składa się z wielu odrębnych zapisów, po jednym na każdy dzień, więc modelujesz aspekt rzeczywistości w sposób odpowiedni dla twojego problemu.
Zdaję sobie sprawę, że kiedy mówisz „baza danych”, prawdopodobnie myślisz o jakimś systemie zarządzania relacyjnymi bazami danych, ale myślenie o pliku tekstowym jako bazie danych zmienia twoje pytanie z „kiedy powinienem użyć bazy danych?”. na „jakiego rodzaju bazy danych powinienem użyć?” Widzenie rzeczy w tym świetle ułatwia odpowiedź: użyj lepszej bazy danych, gdy ta, którą masz, nie spełnia już twoich wymagań.
Jeśli Twój skrypt w Pythonie i prosty plik tekstowy działają wystarczająco dobrze, nie musisz tego zmieniać. Mając tylko jeden nowy rekord dziennie, a komputery stają się coraz szybsze każdego roku, podejrzewam, że twoje obecne rozwiązanie może być opłacalne przez długi czas. Dane z dekady dałyby tylko 3650 rekordów, które po przeanalizowaniu prawdopodobnie wymagałyby mniej niż 75 kilobajtów.
Wyobraź sobie, że zamiast jednego małego rekordu dziennie postanowiłeś zapisać każde pytanie zadane na CodeReview, kto go zadał i kiedy. Ponadto zbierasz wszystkie odpowiedzi i odpowiednie metadane. Możesz to wszystko zapisać w pliku tekstowym, ale płaski plik utrudniłby znalezienie informacji, kiedy byłyby potrzebne. Będzie zbyt wiele danych, aby wczytać całą pamięć do pamięci, więc za każdym razem, gdy chcesz znaleźć pytanie lub odpowiedź, będziesz musiał skanować plik, aż znajdziesz to, czego szukasz. Gdy chcesz znaleźć wszystkie pytania zadane przez danego użytkownika, musisz zeskanować cały plik. Jeśli chcesz znaleźć wszystkie pytania, które zawierają „błędy” jako tag, musisz zeskanować plik.
To byłoby strasznie wolne, więc możesz zdecydować się przyspieszyć, budując indeksy, które podpowiedzą, gdzie szukać w pliku, aby znaleźć dany rekord. Możesz mieć indeks pytań, inny dla użytkowników, trzeci dla odpowiedzi i tak dalej. Gdy chcesz znaleźć pytanie, przeszukujesz (znacznie mniejszy) indeks pytań, uzyskujesz pozycję pytania w głównym pliku danych i szybko przeskakujesz we właściwe miejsce w pliku. To byłaby duża poprawa wydajności. Rzeczywiście, taki właśnie jest system zarządzania bazą danych.
Więc używaj DBMS, kiedy jest to, czego potrzebujesz. Używaj go, gdy masz dużo danych, gdy chcesz mieć szybki dostęp do tych danych i być może w sposób, którego na początku nie potrafisz całkowicie przewidzieć. Jeśli masz różne rodzaje danych - różne typy rekordów - które są ze sobą połączone, użyj RDBMS, aby móc odpowiednio powiązać różne rekordy.