XML
+ Hierarchiczna struktura danych (drzewko)
+ Wyrażenia XPath - wybór odpowiednich węzłów i podstawowe funkcje
+ Dane XML można podstawić od razu do szablonu XSLT
+ Nie ma ściśle określonej struktury, liczba węzłów i atrybutów na każdym poziomie jest dowolna
– Wczytywanie dużych plików XML jest wolniejsze i wymaga więcej pamięci
– Mimo dużych możliwości XPath tracimy cechy systemów bazodanowych
– Jeżeli zastosujemy XSLT, w wielu przypadkach trzeba modyfikować XML lub tworzyć nowy XML dla szablonu
Relacyjna baza danych
+ Potęga języka SQL i funkcji systemów bazodanowych
+ Kontrola typów danych, sekwencje, wyzwalacze, procedury, transakcje
+ Zoptymalizowana dla dużej ilości danych
+ W niektórych przypadkach płaskie tabele + relacje lepiej się sprawdzają
– Podklasy zawartości (produkty: gry, pralki, laptopy nieco się różnią) najczęściej wymagają osobnych tabel
– Relacje wiele do wielu wymagają dodatkowej tabeli
– Brak hierarchii - trzeba łączyć tabele lub wykonywać więcej zapytań
– Nie pobierzecie danych w postaci drzewka do PHP, a przynajmniej nie spotkałem się z tym
Obecnie XML jest chętnie stosowany do zapisywania konfiguracji. Coraz częściej wykorzystują go aplikacje biurkowe do zapisu danych. Czy XML nadaje się jako format zapisu danych w aplikacjach internetowych? Czy może w wielu przypadkach zastąpić bazę danych? Podyskutujmy.
Przykład 1. Ankiety.
* Ankieta zawiera N pytań, natomiast każde pytanie ma M odpowiedzi.
* Ankiety przypisujemy do 1 lub wielu kategorii.
* Ankietowani mają określone cechy i należą do pewnej grupy badanych.
* Musimy gdzieś przechować poszczególne wypełnienia ankiet i udzielone odpowiedzi.
Przykład 2. Konto użytkownika.
<user id="999"> <name>Admin</name> <pass method="Blowfish">zakodowane hasło</pass> <links> <link src="strona1">link1</link> <link src="strona2">link2</link> </links> <inne_dane> <dane_danych> <element attr="val">w dużych aplikacjach to jest możliwe</element> </dane_danych> </inne_dane> <photo src="admin.jpg" width="300" /> </user>