[GiM logo] gim.org.pl is down || odświeżony jogger (v.0.4) GiMa

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 ;).

catz: [kom.puterowe] [pro.gramowanie] [Techblog]
tagz: [implementacja obiektowej bazy danych] [obiektowe bazy danych] [sbql]
dnia poniedziałek, 12 listopad 2007, 113308 by Michał 'GiM' Spadliński

Komentarze:

Proszę wpisy pisane po angielsku komentować również w tym języku.

wow, SZACUN. Napiszesz może jakieś szczegóły na temat implementacji?

dnia poniedziałek, 12 listopad 2007, 124811 by japhy

@japhy: nie jest to aż takie trudne, jeśli wiesz z jakich klocków poskładać. szczegóły na priv.

dnia poniedziałek, 12 listopad 2007, 132922 by GiM

Szacun^2 - przeżyłem trzy semestry wykładów z tym panem, walcząc m. in. z SBQLem. Starczy mi do końca życia. To, co mi pozostało w głowie po tych przedmiotach to to, że przez 1,5 roku męczyłem się z czymś, co nie ma praktycznego zastosowania na ten moment, i prawdopodobnie nie będzie miało. Mógłbym znieść jeden semestr jako poszerzenie horyzontów, ale to było przegięcie.

dnia poniedziałek, 12 listopad 2007, 165523 by Leafnode

Nie wgłębiałem się w zasady gramatyki SBQLa, ale na pierwszy rzut oka nie różnie się to zbytnio od XPath. Czy są jakieś "porażające" argumenty za używaniem tego egzotycznego języka zapytań?

dnia poniedziałek, 12 listopad 2007, 191033 by str()

str(): nie znam XPatha, na tyle żeby się wypowiadać, ale...
a) >zdaje się<, że sbql, nie zakłada w jakiej formie przechowywane/składowane są dane, ja akurat trzymam w xmlu
b) >zdaje się<, że pozwala na ciut bardziej skomplikowane zapytania (pewnie zaglądałeś do tych w linku)
c) pewnie dałoby się zrobić jakiś stosunkowo prosty kowerter zapytań sbqla do xpath
d) mi tam pomysł sbqla nie przypadł jakoś szczególnie do gustu i szczerze powiedziawszy wątpię, żeby to się przyjęło, ale oczywiście mogę się mylić i za 10 lat będzie to SuperEkstra technologia (?), której wszyscy będą używać
e) różnica jest jeszcze taka, że sbql to język zapytań dla bazy danych i jeżeli dobrze rozumiem mają też powstać bindingi do różnych języków, w których będzie można używać zapytań sbqlowych, a wynikami będą obiekty w danym języku (może tego nie zaznaczyłem i nie widać tego 'na zewnątrz', ale tak właśnie jest u mnie, to że output tych obiektów jest w postaci xmlowej, to tylko dlatego, że tak a nie inaczej przeciążyłem metodę do wypisującą obiekty). XPath kojarzy się (przynajmniej mi) głównie z wuwuwu

będe wdzięczny za odpowiedź

dnia wtorek, 13 listopad 2007, 182220 by GiM

Na wykładach z SBQL dostępnych pod http://www.ipipan.waw.pl/~subieta/wyklady/Jezyki%20i%20srodowiska%20programowania%20baz%20danych%20JPS%202005/ pan Subieta gdzieś argumentował, w czym SBA/SBQL jest lepszy od baz XMLowych. Chyba głównym argumentem było, że XML jest amorficzną zupą tagów i nie ma metod, ale nie pamiętam już. Mi się nie chce szukać i kłócić (ale sbql jako taki się mnie podoba).

dnia wtorek, 13 listopad 2007, 182428 by Maciej Pasternacki

Istotnie, XPath choć pełni, być może, analogiczną do SBQLa funkcję, to jest naturalnie ograniczony do dokumentów XML (które mówiąc między nami mają z WWW tyle wspólnego co świnka morska ze świnką skarbonką, czyli nie można powiedzieć, że nic, ale... ;-).
Mam jednak wrażenie, że SBQL jest o tyle nadmiarowy, że dzięki istniejącym, dobrze sprawdzonym sposobom mapowania obiektowo-relacyjnego nie jest on w stanie zagrozić dominującej pozycji SQLa. Na domiar złego obiekty wydobywane z baz obiektowych mogą przechowywać tam tylko takie dane, które dają się jakoś serializować, czyli znane z PHP resources (np. uchwyt pliku, połączenie z bazą) odpadają na starcie. To wszystko ogranicza ewentualne przewagi baz obiektowych.
Z drugiej strony, jeśli już mówimy o niszach, istnieje już równie egzotyczny co oferujący nieporównywalnie większe możliwości język zapytań semantycznych - SPARQL. Owe możliwości wynikają choćby z tego, że za pomocą SPARQL można przeszukiwać dowolny (przeszukiwalny ;-) zasób z internetu, choć nic nie stoi na przeszkodzie, żeby obszar wyszukiwania zawęzić.
Więcej ciekawostek o SPARQL i sieci semantycznej w ogólności, na blogu MiMaSa: http://tinyurl.com/yokaek

dnia środa, 14 listopad 2007, 014449 by str()

Jestem z grupy implementujacej SBQL-a w systemie ODRA (i projektach europejskich eGov Bus i VIDE) i chcialbym kilka rzeczy sprostowac. SBQL nie jest porownywalny ze SPARQL, poniewaz SBQL jest pelnym jezykiem programowania (opartym o jezyk zapytan) podczas gdy SPARQL sluzy wylacznie do wyszukiwania w sieci semantycznej i to opartej na dosc watpliwej koncepcji RDF. W ramach ODRA robimy wrapper do RDF i kiedy powstanie, bedzie mozna ocenic mozliwosci SBQL-a w zakresie obslugi RDF. W tej chwili tego zrobic sie nie da. Podobnie jest z XQuery, chociaz tutaj jest juz blizej. SBQL obsluguje XML, ale charakterystyki XQuery i SBQL sa bardzo rozbiezne. Istnieja zapytania w XQuery, ktorych nie da sie wyrazic w SBQL i odwrotnie. Z tym, ze powodem slabosci SBQL jest wylacznie to, ze ma on mocna kontrole typologiczna, ktorej XQuery nie ma i miec nie moze (bo nie istnieja obecnie takie systemy typologiczne). Oczywiscie, kontrola typologiczna jest kontrowersyjna i ktos moze powiedziec ze jest niepotrzebna. Poglady sa rozne, ale dominuje przekonanie, ze jezyki bez kontroli typologicznej prowadza do zawodnego oprogramowania.

Co do egzotyki SBQL: kazdy jezyk na poczatku jest egzotyczny. Jako dosc liczna grupa robimy jednak wszystko co w naszej mocy, aby go spopularyzowac. Nie ma recepty jak to zrobic, ale wiadomo, ze trzeba to robic, nawet jezeli narazimy sie na drwiny i krytyke: to escape criticism, do nothing, say nothing, be nothing (Elbert Hubbard). Prof.Subieta dosc daleko zawaansowal przepchniecie SBQL-a jako standardu OMG; patrz:
http://www.odbms.org/about_news_20071015.html
http://www.omg.org/news/meetings/tc/special-events-burlgm/Object-DBT-Roundtable.htm
http://www.omg.org/docs/mars/07-09-13.pdf
http://developer.db4o.com/forums/thread/42594.aspx
Oczywiscie, moze sie nie udac, swiat jest bardzo konkurencyjny i SBQL juz wzbudzil niechec pewnych wplywowych srodowisk (oszczedze szczegolow). Wazne jest jednak, ze pilka jest ciagle w grze, a boisko jest w samym srodku Doliny Krzemowej. Kto z Polski gra jeszcze (lub juz) na takim boisku?

dnia wtorek, 08 styczeń 2008, 234650 by sbqlowiec

"znane z PHP resources" w ogóle nie są trwałe :p

Generalnie żeby zrozumieć dyskusję o sensie SBQL warto przejrzeć to:
http://www.ipipan.waw.pl/~subieta/prezentacje/Ideologia%20nauka%20wynalazczosc%20i%20komercja%20w%20informatyce%201998.ppt

P.S. grałem w Dolinie Krzemowej, ale w siatkówkę z S.Brinem

dnia piątek, 24 kwiecień 2009, 171505 by ms

Panowie, jak słowo daję. Przecież to jest sposób myślenia nie z tej epoki. Chce się przepchnąć ten język jako standard OMG, czy inny. Komitet przyjmie i masy pójdą słuszną drogą. Otóż nie pójdą, nawet jeżeli by się jakimś cudem udało, a się nie uda.

Jeżeli się nie ma dźwigni biznesowej w postaci wielkiej firmy i kapitału, to nie ma się nic do powiedzenia w kwestii światowych standardów przemysłowych. Przejdą te które mają taką dźwignię, choćby były najgłupsze na świecie.
Do tego: standardy sobie, a świat sobie.

Poznałem właśnie SBQL i jest to genialny język, zdrowe podejście technicze, kawał dobrej inżynierskiej roboty. Każdy rozumny developer byłby wniebowzięty gdyby mógł się na to przestawić z relacyjnego.

Ale sposób promowania i kontekst jest poniżej krytyki. To jest pławienie się w samozadowoleniu i glorii zrozumiałej dla wybrańców.
To nie jest "gra na boisku w samym środku doliny krzemowej", tylko zabawa odkurzaczem i piłeczką do ping-pong'a na trawniku pod blokiem.

Tak samo mógłby skończyć genialny Linux, gdyby nie przyziemne podejście i rozsądek Torvaldsa - no i upór, którego tu przynajmniej nie brakuje po stronie autora.

Cytuję: "Co do egzotyki SBQL: kazdy jezyk na poczatku jest egzotyczny. Jako dosc liczna grupa robimy jednak wszystko co w naszej mocy, aby go spopularyzowac."

Myślę że w Waszej mocy jest zrobienie przynajmniej STRONY w wikipedii. Już nie mówię nawet po angielsku - choćby PO POLSKU!

Notka autobiograficzna - pracuję w biznesie około bazodanowym w jednej z największych korporacji IT.

dnia czwartek, 03 wrzesień 2009, 000431 by Pawel

Zgadzam się z Pawłem. Obserwuję środowisko SBQLa od pewnego czasu. Pomysł mają bardzo dobry, ale tracą czas na udowadnianie wyższości swojego podejścia nad relacyjnym i na zaawansowanych własnościach jak działanie w środowisku rozproszonym a nie zrobią tak podstawowej rzeczy jak szybki, prosty w użyciu silnik bazy danych w rodzaju MySQLa czy chociażby strona w Wikipedii. Dlatego też nie wierzę w sukces tego projektu, a szkoda.

Notka biograficzna: pracuję w bazach danych od kilku lat w firmie informatycznej. Chętnie bym spróbował zastosować SBQL w jakimś projekcie, ale nie mam jak.

dnia czwartek, 07 styczeń 2010, 143517 by ril

..tożsamość..:
..meritum..:
..lokum..:
Wpisz kod:code