• english
  • polski
  • Prelegent: Adam Warski

    Temat prezentacji: Envers - proste wersjonowanie encji

    Język: polski

    Adam Warski od 3 lat jest współpracownikiem JBossa, gdzie poza projektem  Envers, zajmuje się tworzeniem infrastruktury dla portalu JBoss.ORG,  systemu JBoss Feeds, oraz innymi  mniejszymi projektami (m.in. Shotoku).  Jest doktorantem na Uniwersytecie Warszawskim, gdzie  zajmuje się specyfikacjami formalnymi, teorią kategorii i teorią  typów. Odwiedź stronę Adama.

    Abstrakt: Prezentacja będzie podzielona na dwie części. W pierwszej  przedstawiony zostanie problem wersjonowania encji. Istnieje parę wzorców  projektowych, które umożliwiają przechowywanie historycznych danych  [2]. Wzorce te rozwiązują różne problemy - potrzeba wersjonowania  pojawia się w paru typach sytuacji. Są również różnice w  łatwości implementacji i użycia tych wzorców. Przedstawione zostaną  najważniejsze wzorce, ich stopień trudności, zastosowanie oraz  główne wady i zalety.

    Druga część prezentacji poświęcona będzie projektowi Envers. Jest  to biblioteka napisana w Javie, współpracująca z Hibernate [3] i  Hibernate Entity Manager, umożliwiająca łatwe wersjonowanie encji za  pomocą użycia anotacji @Versioned. Proces zapisywania danych  historycznych jest zupełnie niewidoczny dla programisty i odbywa się  bez jego interwencji. Nie ma też wpływu na korzystanie z “aktualnych”  danych - przebiega to bez żadnych zmian. Do odczytywania danych  historycznych służy prosty i przejrzysty interfejs. Dla każdej  transakcji, w której zostały zmienione wersjonowane dane, tworzona  jest rewizja, podobnie jak w systemie kontroli wersji Subversion [4].   Poza wersjonowaniem podstawowych danych - napisów, liczb, itd., można  też wersjonować relacje między encjami. Dzięki temu możemy  odtworzyć stan bazy danych z danej rewizji (łącznie ze wszystkimi  związkami między encjami). Można też tworzyć zapytania do danych  historycznych [5].

    Jako przykład zastosowania biblioteki do rozwiązania typowego  problemu pokazane zostanie, jak zaimplementować “bi-temporalne” wersjonowanie  [6]. Na koniec prelegent przedstawi krótkie podsumowanie głównych cech biblioteki  - jej zalet i wad oraz opisze sytuacje, w których biblioteki można  użyć; ponieważ jest to implementacja jednego z paru sposobów na  rozwiązanie problemu wersjonowania encji, nie zawsze można ją  zastosować.

    [1] http://www.jboss.org/envers/
    [2] http://martinfowler.com/ap2/timeNarrative.html
    [3] http://www.hibernate.org/
    [4] http://subversion.tigris.org/
    [5] http://www.jboss.org/envers/queries.html
    [6] http://www.warski.org/blog/?p=14

    Proidea