CMS na plikach vs. bazy relacyjne

Podzielę się dzisiaj swoimi doświadczeniami jeśli chodzi o zagadnienie tworzenia systemów typu CMS za pomocą baz danych ulokowanych w plikach.
Jakie są różnice dla początkującego programisty? Pierwszy CMS stworzyć na plikach czy za pomocą zewnętrznych relacyjnych baz danych?
Poniżej przedstawiam wady i zalety zarówno pierwszego jak i drugiego rozwiązania:

Pliki:
+ Łatwo stworzyć podstawy takiego systemu.
+ Satysfakcja i z posiadania wyjątkowego systemu ;).
+ Może być dużo szybsze od zewnętrznej bazy, ale to zależy od wielkości przedsięwzięcia i twoich umiejętności oraz sposobu programowania.
+ Bezpośredni dostęp do plików binarnych (mam na myśli możliwość zapisu pojedynczych bitów) umożliwia przechowywanie niektórych typów danych w mocno skompresowanej postaci.
+ Ataki na systemu plikowe mają dużo mniej odmian i miejsc gdzie tworząc kod możemy zapomnieć o zabezpieczeniu. Bardzo prosto jest zapobiec atakom typu Local File Include (LFI) i Remote File Include (RFI).
+ Unikamy skanujących w poszukiwaniu błędów sqlowych robali :)
+/- Trzeba pamiętać o odpowiednim ukryciu plików z sekretnymi danymi. Warto je też zaszyfrować (podobnie jak w bazach relacyjnych).
- Możesz utracić dane jeśli serwer nie wykona blokady lub o tym zapomnisz (aczkolwiek nawet jeśli nie wykonujesz blokady takie sytuacje zdarzają się naprawdę rzadko).
- Wiele funkcji (sortowanie, edycja itp.) trzeba pisać samemu.
- Musisz przemyśleć i z dużą przewidywalnością zaprojektować strukturę plików.
- Jeśli stracisz serwer i nie masz backupa tracisz i kod strony i dane.

Bazy:
+ Raczej bezpieczne, przy zewnętrznej bazie jesteś zależny od zewnętrznego serwera.
+ Cały internet stoi na bazach; daje doświadczenie, które w przyszłości możesz wykorzystać (poważne strony stoją jednak tylko na bazach) - obecnie wiele gigantów internetowych wycofuje się z technologi baz relacyjnych. Nad standardami NoSQL pracują min. Google, Amazon itd.
+ W sumie proste jest to jest jak się wciągniesz i fajnie się w tym pisze.
+ Duża rzesza programistów, która pomoże Ci rozwiązać prawie każdy problem; całkiem sporo gotowców.
+/- Trzeba posiadać bazę. Kiedyś to nie było takie łatwe ale dziś nawet jak na hostingu nie masz dostępnej to jest mnóstwo darmowych baz w internecie.
- Na początku trzeba dużo się nauczyć, nie jest intuicyjne i szybkiego do indywidualnej nauki.
- Co do bezpieczeństwa, jak ogarniesz podstawy to nie wiele jest sposobów wykradania danych. Tylko bardzo łatwo można "wpaść" i nie przefiltrować jakiegoś zapytania, co otwiera hakerom furtkę do ataków typu SQL Injection. Codziennie słychać o włamaniach na strony i wyciekach poufnych danych nawet z stron rządowych, czy różnych systemów płatniczych, których powodem są właśnie tego typu drobne przeoczenia.
- Może mulić. Zależy od bazy, jeśli jednak masz na swoim serwerze to powinno chodzić dość sprawnie.
- Pełno botów przeczesujących internet w przeszukiwaniu błędów w bazach danych, automatycznie sprawdzających czy przypadkiem nie mamy jakiegoś prostego hasła do panelu.
- Obecnie bazy relatywne popularnie nazywane od języka służącego do ich obsługi bazami SQL są przestarzałym rozwiązaniem. Coraz większe uznanie zyskuje nowy trend - NoSQL, którego rozwojem zajmują się min. tacy giganci internetowi jak: Amazon, Google. Z rozwiązań tych korzysta min. Facebook, który nie tak dawno zamieniał NoSQL-ową bazę Cassandra na inną Hbase (również NoSQL)

Co zatem wybrać? Dla początkującego programisty poleciłbym bazy. Są zdecydowanie prostsze w obsłudze i łatwiej wejść w temat, ponieważ obecnie cierpimy na przesycenie ilością gotowców.
Baza danych stworzona na plikach jest bardzo ciekawym i rozwijającym doświadczeniem dla programisty, ale nie warto od razu porywać się na głęboką wodę jeśli chcemy napisać prosty CMS, powinna wystarczać zwykła relacyjna baza danych.
Jak widać pozornie to system plikowy jest dużo prostszym a SQL jest trudniejszy - ale uwaga - tak jest tylko na początku. Takie życie ;)

Ps. Ale w sumie uważam że dobremu programiście nie zrobi różnicy w czym będzie pisał, bo poradzi sobie i tu i tu, a porównywać będzie wydajność :)
Dodał(a): m-krassowski, 05.11.11

Komentarze:

Brak komentarzy

Jesteś niezalogowany, zaloguj się, aby móc dodawać komentarze.