Db4o
Deweloperzy | Aktian |
---|---|
Wersja stabilna | 8.0 |
Napisane w | C# , Jawa |
System operacyjny | Międzyplatformowe |
Typ | Baza danych obiektów |
Licencja |
GNU General Public License (GPL) db4o Opensource Compatibility License (dOCL) Licencja prawnie zastrzeżona |
Strona internetowa |
|
db4o (baza danych obiektów) była możliwą do osadzenia bazą danych obiektów typu open source dla programistów Java i .NET . Został opracowany, licencjonowany komercyjnie i wspierany przez firmę Actian . W październiku 2014 r. Actian odmówił dalszego aktywnego poszukiwania i promowania komercyjnej oferty produktowej db4o dla nowych klientów.
Historia
Termin obiektowy system baz danych sięga około 1985 roku, chociaż pierwsze badania w tej dziedzinie rozpoczęły się w połowie lat siedemdziesiątych. Pierwsze komercyjne systemy zarządzania bazami danych obiektów powstały na początku lat 90.; dodały one koncepcję trwałości opartej na natywnej bazie danych do dziedziny programowania obiektowego.
na rynku pojawiły się obiektowe bazy danych napisane w całości w obiektowym języku . db4o jest jednym z przykładów takich systemów napisanych w całości w Javie i C#.
Projekt db4o został zapoczątkowany w 2000 roku przez głównego architekta Carla Rosenbergera, wysyłka w 2001 roku. Był używany w aplikacjach korporacyjnych i akademickich przed jego komercyjnym ogłoszeniem w 2004 roku przez nowo utworzoną prywatną firmę Db4objects Inc.
W 2008 roku db4o zostało kupione przez korporację Versant , która wprowadziła je na rynek jako oprogramowanie open-source na dwóch licencjach: komercyjnej i GNU General Public License (GPL).
Przegląd
db4o reprezentuje zorientowany obiektowo model bazy danych . Jednym z jego głównych celów jest zapewnienie łatwego i natywnego interfejsu do trwałości dla obiektowych języków programowania. Rozwój z bazą danych db4o nie wymaga tworzenia osobnego modelu danych , model klasy aplikacji definiuje strukturę danych. db4o próbuje uniknąć niedopasowania impedancji obiektu/relacji poprzez wyeliminowanie warstwy relacyjnej z projektu oprogramowania. db4o jest napisany w języku Java i .NET i udostępnia odpowiednie interfejsy API. Może działać na dowolnym systemie operacyjnym obsługującym Javę lub .NET. Jest oferowany na licencjach, w tym GPL, db4o Opensource Compatibility License (dOCL) oraz licencji komercyjnej do użytku w oprogramowaniu własnościowym.
Programiści korzystający z relacyjnych baz danych mogą postrzegać db40 jako narzędzie uzupełniające. Wymiana danych db4o-RDBMS może być realizowana za pomocą systemu replikacji db4o (dRS). dRS można również wykorzystać do migracji między technologiami obiektowymi (db4o) i relacyjnymi ( RDBMS ).
Jako wbudowana baza danych db4o może być uruchamiana w procesie aplikacji. Jest dystrybuowany jako biblioteka (jar/dll).
Cechy
Baza danych zawierająca jedną linię kodu
db4o zawiera funkcję do przechowywania dowolnego obiektu:
obiektContainer . sklep ( nowy SomeClass ());
SomeClass tutaj nie wymaga żadnych implementacji interfejsu, adnotacji ani dodanych atrybutów. Może to być dowolna klasa aplikacji, w tym klasy innych firm zawarte w bibliotekach, do których się odwołuje.
Wszystkie obiekty terenowe (w tym kolekcje) są zapisywane automatycznie. Przypadki specjalne można obsłużyć, pisząc procedury obsługi typów niestandardowych.
Możliwość osadzania
db4o jest przeznaczone do osadzania w klientach lub innych składnikach oprogramowania niewidocznych dla użytkownika końcowego. W związku z tym db4o nie wymaga oddzielnego mechanizmu instalacyjnego, ale jest dostarczany jako pojedynczy plik biblioteki o wielkości około 670 kB w wersji .NET i około 1 MB w wersji Java.
Tryb klient-serwer
Wersja klient/serwer umożliwia db4o komunikację między aplikacjami po stronie klienta i serwera. Wykorzystuje protokół TCP/IP do komunikacji klient-serwer oraz umożliwia konfigurację numeru portu. Komunikacja jest realizowana za pośrednictwem przesyłania wiadomości.
Dzięki funkcji określanej jako „Generic Reflection” db4o może działać bez implementacji trwałych klas na serwerze. Ten tryb ma jednak ograniczenia.
Dynamiczna ewolucja schematu
db4o obsługuje automatyczną ewolucję schematu obiektów dla podstawowych zmian modelu klas (usuwanie/dodawanie nazw pól). Bardziej złożone modyfikacje modelu klas, takie jak zmiana nazwy pola, zmiana typu pola, przesunięcie hierarchii, nie są zautomatyzowane od razu po wyjęciu z pudełka, ale można je zautomatyzować, pisząc mały program do aktualizacji narzędzi (patrz dokumentacja ) .
Ta funkcja może być postrzegana jako przewaga nad modelem relacyjnym, w którym każda zmiana w schemacie skutkuje głównie ręcznym przeglądem kodu i aktualizacją w celu dopasowania do zmian w schemacie.
Zapytania natywne
Zamiast używać łańcuchowych interfejsów API (takich jak SQL , OQL , JDOQL, EJB QL i SODA), Native Queries (NQ) pozwalają programistom po prostu używać samego języka programowania (np. Java, C# lub VB.NET) do uzyskać dostęp do bazy danych, a tym samym uniknąć ciągłego, zmniejszającego produktywność przełączania kontekstu między językiem programowania a interfejsem API dostępu do danych. Zapytania natywne zapewniają również bezpieczeństwo typu , a także eliminują potrzebę oczyszczania przed wstrzyknięciem kodu (patrz SQL Injection ).
LINQ
LINQ jest w pełni zintegrowana z db4o dla platformy .NET w wersji 3.5. LINQ umożliwia tworzenie zorientowanych obiektowo zapytań o dowolnej złożoności z korzyścią dla sprawdzania czasu kompilacji, integracji IDE Intellisense i zautomatyzowanej refaktoryzacji.
Dzięki integracji z niektórymi bibliotekami open-source db4o umożliwia również zoptymalizowanie zapytań LINQ w Compact Framework.
LINQ może być używany zarówno do przechowywania danych relacyjnych, jak i obiektowych, zapewniając w ten sposób pomost między nimi. Może być również używany jako warstwa abstrakcji, umożliwiając łatwe przełączanie podstawowej technologii bazy danych.
Niedogodności
Wady i trudności napotykane przez inne Obiektowe Bazy Danych dotyczą również Db4o:
- Inną rzeczą, która działa przeciwko ODBMS, wydaje się być brak interoperacyjności z dużą liczbą narzędzi/funkcji, które są uważane za oczywiste w odniesieniu do SQL, w tym między innymi standardową łączność branżową, narzędzia do raportowania, narzędzia OLAP oraz standardy tworzenia kopii zapasowych i odzyskiwania . [ potrzebne źródło ] Obiektowe bazy danych również nie mają formalnych podstaw matematycznych, w przeciwieństwie do modelu relacyjnego , co z kolei prowadzi do słabości w obsłudze zapytań . Jednak niektóre systemy ODBMS oprócz dostępu nawigacyjnego w pełni obsługują SQL, np. Objectivity /SQL++, Matisse i InterSystems CACHÉ. Efektywne wykorzystanie może wymagać kompromisów, aby zachować synchronizację obu paradygmatów.
Wady charakterystyczne dla Db4o mogą obejmować:
- indeksowania pełnotekstowego , słaba wydajność wyszukiwania pełnotekstowego
- Brak indeksowania typów ciągów znaków , co oznacza, że wyszukiwanie tekstowe może być potencjalnie bardzo powolne
- „Nie ma ogólnego języka zapytań, takiego jak SQL , który mógłby być używany do analizy danych lub przez inne aplikacje. To nie pozwala db4o na dużą elastyczność w heterogenicznym środowisku”
- Replikacji nie można przeprowadzić administracyjnie — tzn. aby uzyskać replikację, należy zaprogramować aplikację. „Jest to sprzeczne z większością systemów RDBMS, w których administratorzy zarządzają serwerami i replikacją między nimi”.
- Usunięte pola nie są natychmiast usuwane, tylko ukrywane do następnej Defragmentacji [ potrzebne źródło ]
- Brak wbudowanej obsługi importu/eksportu danych do/z plików tekstowych, XML lub JSON
Przenośność i wdrażanie na wielu platformach
db4o obsługiwał JDK Javy w wersjach od 1.1.x do 6.0 i działa w środowiskach Java EE i Java SE . db4o działa również z Java ME obsługującymi odbicie, takimi jak CDC , Personal Profile , Symbian OS , SavaJe i Zaurus . W zależności od wymagań klientów, db4o będzie działać również na dialektach bez refleksji, takich jak CLDC , MIDP , BlackBerry i Palm OS .
db4o pomyślnie przetestowano na JavaFX i Silverlight . db4o działało na Androidzie .
db4o używa niestandardowej funkcji zwanej „ogólnym reflektorem” do reprezentowania informacji o klasie, gdy definicje klas nie są dostępne, co pozwala na użycie jej w mieszanym środowisku Java-.NET, na przykład klient Java - serwer .NET i odwrotnie. Ogólny reflektor pomaga również w konwersji projektu między środowiskami, ponieważ baza danych nie musi być konwertowana.
Dokumentacja i wsparcie
db4o udostępnia źródła dokumentacji: samouczek, dokumentację referencyjną, dokumentację API, prezentacje online i blogi. Informacje można również pobierać z forów i dodatków społecznościowych (artykuły, przetłumaczone źródła dokumentacji, przykładowe projekty itp.).
Dla użytkowników komercyjnych db4o proponuje subskrypcję dDN (db4o developer network) z gwarantowanym 24-godzinnym wsparciem i sesjami parowania na żywo z klientem – Xtreme Connect.
Menedżer obiektów
Object Management Enterprise (OME) to narzędzie do przeglądania baz danych db4o, które jest dostępne jako wtyczka do Eclipse i MS Visual Studio 2005/2008. OME umożliwia przeglądanie klas i obiektów w bazie danych, łączenie się z serwerem bazy danych, budowanie zapytań metodą przeciągnij i upuść oraz korzystanie ze statystyk bazy danych.
OME zapewnia pewne funkcje administracyjne, takie jak indeksowanie, defragmentacja i tworzenie kopii zapasowych. OME był początkowo sugerowany klientom jako produkt komercyjny dostępny tylko dla abonentów dDN. Od wersji db4o 7.8 OME zostało włączone do standardowej dystrybucji db4o, a źródło zostało udostępnione publicznie w repozytorium db4o svn.
Wersje
db4o udostępnia wersje deweloperskie, produkcyjne i stabilne. Wersja rozwojowa zapewnia najnowsze funkcje i jest udostępniana do testowania, zbierania opinii społeczności i oceny. Wersja produkcyjna jest przeznaczona do użytku w środowisku produkcyjnym i zawiera funkcje, które zostały już ocenione i sprawdzone przez czas. Wersja stabilna przeznaczona jest do wysyłki produktu finalnego.
db4o uruchamia również ciągłą kompilację, która jest wyzwalana przez każdą nową zmianę zatwierdzoną w repozytorium kodu SVN. Ta kompilacja jest otwarta dla społeczności i może służyć do oceny najnowszych zmian i pozyskiwania najnowszych funkcji.
Format nazwy kompilacji db4o ma na celu dostarczenie wszystkich niezbędnych informacji o wersji, czasie budowy i obsługiwanej platformie:
Na przykład: db4o-7.2.30.9165-java.zip
db4o – nazwa produktu, czyli silnika bazy danych db4o
7.2 – numer wydania
30 – numer iteracji, czyli kolejny numer identyfikujący tydzień rozwoju
9165 — numer wersji SVN, odpowiadający ostatniemu zatwierdzeniu, które uruchomiło kompilację
java – wersja Java db4o. Wersja .NET jest identyfikowana przez „net” dla wydań .NET 2.0 lub „net35” dla wersji .NET 3.5. Wersja .NET zawiera odpowiednią wersję Compact Framework.
Publiczne repozytorium SVN db4o jest również dostępne dla programistów w celu uzyskania kodu źródłowego i lokalnego budowania wersji z niestandardowymi modyfikacjami lub bez nich.
Poniżej znajduje się krótkie podsumowanie głównych cech buildów stabilnych, produkcyjnych i deweloperskich:
Wersja | Cechy |
---|---|
Stabilny (db4o-7.4) | Wersja Sharpen (konwerter Java na C#) |
Produkcja (db4o-7.4) | Wersja Sharpen (konwerter Java na C#) |
Rozwój (db4o-7.10) |
|
Ostatnia wersja Versant (db4o-8.0) z listopada 2012 r |
Java , .NET 3.5 , .NET 4.0 |
Dalsza lektura
- Stefan Edlich, Jim Paterson, Henrik Hörning, Reidar Hörning, Ostateczny przewodnik po db4o , Apress , 2006, ISBN 1-59059-656-0
- Ted Neward, The busy Java developer's Guide to db4o (seria 7 artykułów), IBM DeveloperWorks
Linki zewnętrzne
- Artykuł o RETSCAN, systemie skanowania siatkówki wykorzystującym db4o. Drdobbs.com.