W zeszłym roku, przez semestr, uczęszczałem na takowy przedmiot. Naszym zadaniem było zaimplementowanie serwera takiej bazy.
W implementacji nie korzystaliśmy z przypominającego SQLa OQLa, lecz z pomysłu który próbuje wypromować pan Kazimierz Subieta mianowicie SBQLa (Stack Based Query Language).
W obiektowej bazie danych przechowywane są całe obiekty (super stwierdzenie, nie? ;)).
Pan Subieta a zanim i my rozważa trzy typy obiektów:
- obiekty atomowe, czyli takie które przechowują wartości,
- obiekty złożone, czyli takie, które są kontenerami dla jakichkolwiek innych obiektów, oraz
- obiekty pointerowe (lub jak kto woli wskaźnikowe) które służą do tworzenia referencji do innych obiektów
Każdy obiekt ma nazwę, oraz unikatowy identyfikator. Obiekt atomowy dodatkowo ma wartość, którą przechowuje, a obiekt pointerowy identyfikator obiektu na który wskazuje.
Przykład (miałem zrobić ładny obrazek, ale jestem leń :P): mamy obiekt złożony typu osoba, który posiada podobiekty atomowe typu imie, nazwisko podobiekt złożony typu adres.
Jeśli się nie mylę, bardziej skomplikowane implementacje posiadają funkcje które można wykonywać na elementach (tak jak w tradycyjnych bazach danych) a także
pozwalają na przechowywanie metod w obiektach i wywoływanie tychże metod.
SBQL pozwala na wyciąganie obiektów z bazy danych. SBQL pozwala tworzyć intuicyjne zapytania (no kompletnie nieintuicyjne również ;)), moja implementacja różni się od tego co promuje pan Subieta, także przedstawione przeze mnie zapytania niekoniecznie mogą być możliwe w implemntacji opisywanej przez niego.
- osoba where imie
- - zwraca te obiekty osoba, które posiadają podobiekt imie (na dowolnej głębokości)
- osoba where nazwisko = "Kowalski"
- - trzeba cokolwiek tłumaczyć?
Więcej i ciekawszych przykładów, znajdziecie w...
Live show
Nie wiem dlaczego, ale nikt nie zdecydował się udostępnić efektów swojej pracy.
Postanowiłem postawić serwer i napisałem małego pehapa, który pozwala
wykonać na żywo kilka zapytań. Na chwilę obecną nie ma możliwości wykonywania
dowolnych zapytań (gdyż obawiam się evil hax0rów z mr0cku ;)), raczej wątpię, czy wprowadzę w ogóle taką możliwość :>.
Chętnych do pooglądania przygotowanych przeze mnie zapytań odsyłam
tutaj. Jest tam seria kilku
zapytań pod rząd, które zwracają to samo, ale robią to na różne sposoby TIMTOWTDI ;).
gim.org.pl is down






