ObjectStore okiem praktyka

Atutem obiektowej bazy ObjectStore jest doskonała wydajność. Najwięcej problemów dotyczy wielodostępu. Prezentujemy praktyczne uwagi na temat korzystania z baz firmy Object Design.

Atutem obiektowej bazy ObjectStore jest doskonała wydajność. Najwięcej problemów dotyczy wielodostępu. Prezentujemy praktyczne uwagi na temat korzystania z baz firmy Object Design.

W grudniowym numerze Computerworlda pojawił się artykuł na temat bazy ObjectStore firmy Object Design (CW nr 46/98). Od ponad dwóch lat korzystamy z ObjectStore. Kilka praktycznych uwag może przydać się Czytelnikom.

ObjectStore ma fantastyczną wydajność. Myślę, że jest to związane z modelem zarządzania pamięcią, który ta baza stosuje. Nawet na danych płaskich, gdzie teoretycznie dojrzalsze relacyjne bazy danych powinny być lepsze, ObjectStore w niczym im nie ustępuje.

Interfejs programistyczny zarówno do obiektów trwałych, jak i do usług ODBMS jest przejrzysty. Zdarzało mi się, nie wiedząc jak metoda się nazywa, "wymyślać" tę nazwę przez analogię do innych, podobnych usług i prawie zawsze trafiałem. Świadczy to o przemyślanym projekcie interfejsu.

Standardowa biblioteka klas zawierających (containers) jest bardzo wydajna, ma dobry interfejs programistyczny i pozwala na świadome zarządzanie fizyczną reprezentacją takich klas.

ObjectStore średnio się skaluje. Niedawno odkryliśmy, że zakończenie transakcji, w której "dotykane" było 0,5 GB danych, trwało całą sekundę, czyli wieczność.

Największym problemem ObjectStore jest wielodostęp. Blokowanie odbywa się bowiem nie na poziomie obiektu, lecz fizycznej strony, a w niektórych przypadkach na poziomie segmentu. Poważnie utrudnia to konstruowanie aplikacji, w których więcej niż jeden klient pisze do bazy (notabene, nie sądzę, aby bazy relacyjne były znacznie lepsze, to po prostu trudne zagadnienie).

Zupełnie karkołomna jest zmiana schematu bazy. Interfejs programistyczny jest fatalny i konstruujemy nasze aplikacje w taki sposób, by zmiana schematu była praktycznie niepotrzebna.

ObjectStore jest słabo obudowany narzędziami "towarzyszącymi", jak programy do graficznego projektowania, analizy wydajności i automatycznego zarządzania bazą. Narzędzia do baz relacyjnych prezentują się zdecydowanie lepiej.

Stosowanie ObjectStore w aplikacjach rozproszonych jest dyskusyjne, ze względu na słabe wsparcie koordynatorów transakcji. O ile wiem, ObjectStore jest wspierany tylko przez Orbix Transaction Manager firmy IONA, ale na przykład nie ma wsparcia dla OLE Transactions, zarządzanych przez Microsoft Transaction Managera, który powoli staje się standardem.

Żeby zakończyć optymistycznie, natura prowadzonej przez nas działalności jest taka, iż w aplikacji mamy dużo klas, dużo dziedziczenia i dużo skomplikowanych zależności między klasami. Nie wyobrażam sobie napisania takiej aplikacji z bazą relacyjną. ObjectStore sprawdza się w tej roli.

Wszystkie te doświadczenia pochodzą z wersji 4.0, 4.0.2, 4.0.3, 5.0 i 5.1. ODI zapowiada, że wersja 6.0 rozwiąże problemy z wielodostępem.

Bazy obiektowe

Bazy obiektowe zapamiętują dane podobnie jak komponenty C++ lub Java - w obiektach. Obiekt zawiera dane i metody (funkcje), którymi posługuje się w celu dokonywania operacji na danych, wywoływania innych obiektów przez przesyłanie im komunikatów i udostępnianie swoich danych "publicznych". Obiekty są ze sobą powiązane odnośnikami do kolejnych obiektów "potomnych" w strukturze hierarchicznej. Obiekt istnieje w bazie (jest więc trwały) tylko wtedy, gdy jest wskazywany przez obiekt na wyższym poziomie lub znajduje się wewnątrz obiektu trwałego.

W celu komercyjnej reprodukcji treści Computerworld należy zakupić licencję. Skontaktuj się z naszym partnerem, YGS Group, pod adresem [email protected]

TOP 200