RkBlog

Hardware, programming and astronomy tutorials and reviews.

Funkcje DBA

PHP oferuje zestaw funkcja DBA - Database Abstraction Layer. Funkcje te obsługują proste plikowe bazy danych i są dostępne zarówno w PHP 4 jak i PHP 5. Na większości serwerów funkcje te powinny być dostępne, lecz zmienna może być lista obsługiwanych przez te funkcje baz danych. W phpinfo wpis DBA wygląda mniej więcej tak:
dba1
W wierszu Supported handlers wylistowane są wspierane bazy danych. Możliwe baz danych to:
  • dbm - najstarszy typ bazy typu Berkeley DB. Staraj się jej nie używać jako że jest uważana za przestarzałą.
  • ndbm - nowsza wersja dbm lecz również obecnie przestarzała.
  • gdbm - GNU database manager, w bieżącym użytkowaniu,
  • db2-db4 - obsługa baz Sleepycat Software. db4 od PHP 4.3.2
  • cdb - szybka prosta baza plikowa. PHP wspiera odczyt i zapis bez aktualizacji (od PHP 4.3.0)
  • cdb_make - tworzenie baz cdb (od PHP 4.3.0)
  • flatfile - od PHP 4.3.0 dodana dla zapewnienia zgodności z przestarzałą dbm. Nie zaleca się stosowania tej opcji.
  • inifile - od PHP 4.3.3, obsługuje pliki ini
  • qdbm - od PHP 5.0.0.
Zalecam stosowanie gdbm i szybsze qdbm. W sieci dostępny jest też prosty benchmark (PDF). Dodatkowe informacje znajdziemy w manualu.

Dostępne Funkcje

  • dba_close -- Zamyka połączenie z bazą danych
  • dba_delete -- Kasuje wpis o podanym kluczu
  • dba_exists -- Sprawdza czy klucz istnieje
  • dba_fetch -- Pobiera wartość dla podanego klucza
  • dba_firstkey -- Pobiera wartość pierwszego klucza
  • dba_handlers -- Listuje wspierane bazy danych
  • dba_insert -- Dodaje wpis
  • dba_key_split -- Przemienia klucz w formie łańcucha na formę tablicy
  • dba_list -- Listuje wszystkie otwarte pliki baz danych
  • dba_nextkey -- Pobiera następny klucz
  • dba_open -- Otwiera bazę danych
  • dba_optimize -- Optymalizuje bazę danych
  • dba_popen -- Otwiera trwałe połączenie z bazą danych
  • dba_replace -- Zamienia lub dodaje wpis
  • dba_sync -- Synchronizuje bazę danych


Przykłady

<?php
$id = dba_open("test.db", "n", "gdbm");
if (!$id)
	{
	echo "Błąd dba_open
";
	exit;
	}
// dodajemy/zmieniamy wpis
dba_replace("klucz_czasu", time(), $id);
// wyświetlamy jeżeli wpis istnieje
if (dba_exists("klucz_czasu", $id))
	{
	echo 'Wartość z bazy: '.dba_fetch("klucz_czasu", $id);
	}
dba_close($id);
Powyższy przykład używa bazy gdbm, a folder z plikiem musi mieć prawa zapisu tak by skrypt mógł utworzyć plik bazy danych. Funkcja dba_open otwiera połączenie:
dba_open("Nazwa Pliku", "Tryb", "Typ Bazy Danych")
Gdzie Tryb to odpowiednio - r - tylko odczyt, w - odczyt i zapis, n - odczyt i zapis z wyczyszczeniem bazy przy otwieraniu. Reszta funkcji jest prosta w użyciu a cała logika tych baz danych zbliżona jest do tablic asocjacyjnych - baza ma zestawy kluczy i przypisanych im wartości. Nie ma tutaj tabel ani języka SQL.
Bazy DBA mogą być przydatne do obsługi konfiguracji aplikacji, prostych modułów jak np. statystyki przechowujące ostatnie referery. Jeżeli mamy dostęp do SQLite i chcemy stworzyć prostą aplikację opartą o bazę danych to powinniśmy wybrać właśnie tą bazę danych. DBA nie nadaje się dla większych zastosowań jak np. system artykułów i kategorii (można to zrobić lecz nie będzie to wydajna aplikacja do celów "produkcyjnych").
RkBlog

Podstawy PHP, 14 July 2008, Piotr Maliński

Comment article