• english
  • polski
  • Speaker:Adam Warski

    Topic of presentation: Envers - easy entity versioning

    Language: Polish

    Adam Warski has been working for JBoss for years. In the company he is involved in Envers project and creating infrastructure for JBoss.org. He handles JBoss Feeds systems as well as a couple of smaller projects (in example Shotoku). He is a PhD student at Warsaw University, where he works on formal specifications, category theory and types theory.

    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