ODBMS – pomysł
Ostatnie kombinowanie z indeksami nasunęło mi pomysł na zmierzenie się z problemem obiektowej bazy danych. Oczywiście całość w javie. Pomysł pozbawiony sensu, bo Sun określił już dość dawno specyfikację JDO, ale ja chciałbym użyć trochę innego podejścia.
Dlaczego nie JDO?
Po pierwsze JDO jest przestarzałe. Wiele elementów jest napisanych z użyciem pomysłów z Javy 2, pojawiają się stale inty zamiast enumów, toporna składnia zapytań.
Po drugie JDO jest „umysłowo ograniczone” i nijak ma się do na przykład JPA. Jakoś nie widzę możliwości integracji tych dwóch technologii.
Zło RDBMS
Jeżeli myślimy o bazie danych to przede wszystkim myślimy o sposobie składowania i wyszukiwania danych. Co więcej wielu ludzi kojarzy bazy danych z językiem SQL, a nie ma pojęcia, że istnieją inne rozwiązania. Systemy relacyjne, czyli właśnie te o których mówimy mówiąc o SQL, mają kilka drobnych wad. Niewątpliwie najpoważniejszą z nich jest bardzo skomplikowana i nie naturalna składnia w momencie gdy chcemy uzyskać informacje o złożonej strukturze danych. Wracając do przykładu biblioteki najzdrowszym połączeniem było by takie:
CREATE table Ksiazki(<br></br> id int,<br></br> nazwa text NOT NULL,<br></br> aId int, <br></br> PRIMARY KEY(id)<br></br>);<br></br>CREATE table Autorzy(<br></br> id int,<br></br> imie text NOT NULL,<br></br> PRIMARY KEY(id)<br></br>);<br></br>ALTER TABLE Ksiazki ADD FOREIGN KEY (aId) REFERENCES Autorzy(id);
Zarówno tabela Ksiazki jak i tabela Autorzy reprezentują zwykłe POJO. Obecnie, żeby wybrać wszystkie książki jakiegoś autora należy, albo uruchomić taką potworę:
SELECT * FROM Ksiazki AS k LEFT JOIN Autorzy AS a ON a.id = k.aId WHERE a.id=2;
albo taką:
SELECT * FROM ksiazka AS k WHERE k.aId = (SELECT id FROM Autorzy WHERE id = 2);
albo kombinować z JPA, Hibernatem lub czymś podobnym. To ostatnie rozwiązanie jest najlepsze, ponieważ używamy już składni i sposobu myślenia właściwego rozwiązaniom obiektowym, ale nadal biblioteki te mapują obiekty na zwykłe tabele w RDBMS. A gdyby tak ominąć konieczność posługiwania się SQLem?
Czas na ODB
Niezłym podejściem jest zatem próba stworzenia własnej obiektowej bazy danych, która łączyła by elegancki interfejs JPA z brakiem przymusu stosowania SQLa. Baza taka musiała by spełniać kilka elementarnych założeń:
- trwałość i integralność danych
- mechanizmy dostępu i zarządzania użytkownikami
- obsługa mechanizmów obiektowych, przede wszystkim dziedziczenia
- równoległy dostęp do danych i obsługa transakcji
- metody dodawania, modyfikacji, usuwania i dostępu do danych
W celu realizacji tych założeń potrzebne są pewne narzędzia:
- menadżer obsługi plików danych
- menadżer użytkowników
- menadżer transakcji
- menadżery utrwalania
pytanie czy znajdę czas…