2010-10-11 14 views
68

Próbuję ocenić repozytoria zawartości (JSR283), takie jak Jackrabbit i ModeShape, ale muszę przyznać, że nie rozumiem, jaki problem został rozwiązany na pierwszym miejscu, a nawet jeśli jest to dobry wybór dla projektu. Jakie przypadki uważasz za najlepsze rozwiązanie? Czy to nie jest to samo, co relacyjne bazy danych, z wyjątkiem rozmiaru? Czemu? Dodatkowe punkty za wskazanie przykładów z prawdziwego świata.Kiedy używać JCR (repozytorium treści) względem innych opcji?

Z góry dziękuję.

+8

Wątpię, czy jestem jedyną osobą, która lubi wiedzieć, czym jest i co robi oraz kiedy i dlaczego warto z niego skorzystać, na wszelki wypadek, gdy napotkam problem, który byłby dla niego odpowiedni. . – cHao

+0

Przydałoby się, gdyby ktoś wyjaśnił, w jaki sposób repozytorium treści różni się od usługi katalogowej (LDAP). A co z tym, jak różni się od bazy danych NoSQL? – Ryan

Odpowiedz

79

JCR repozytoria są inne niż RDBMS typu, ponieważ repozytorium JCR:

  • jest hierarchiczny, pozwalając, aby zorganizować swoje treści w strukturze, które ściśle dopasowane do Twoich potrzeb i gdzie odnośne informacje są często przechowywane blisko siebie, a tym samym łatwo poruszać
  • jest elastyczny, dzięki czemu zawartość dostosować i rozwijać, przy użyciu systemu typu węzeł, który można całkowicie „schemaless” do pełna na restrykcyjne (np jak relacyjnej bazy danych)
  • wykorzystuje standardowy interfejs API Java (np. javax.jcr)
  • abstrakty, w których informacje są rzeczywiście przechowywane: wiele implementacji JCR może przechowywać treść w wielu relacyjnych bazach danych i innych magazynach, niektóre mogą wystawiać magazyny nie-JCR za pośrednictwem interfejsu API JCR, a niektóre mogą stowarzyszyć wiele sklepów w jedno, wirtualne repozytorium .
  • obsługuje zapytań i wyszukiwanie pełnotekstowe z pudełka
  • wspiera wydarzenia, blokowanie wersjonowanie oraz inne funkcje

pewno można zbudować wszystkie lub niektóre z tych funkcji we własnej aplikacji, ale że prawdopodobnie odejdzie od tego, co jest głównym celem twojej aplikacji.

Jakie aplikacje mogą korzystać z tych funkcji? Systemy zarządzania treścią od dawna korzystały z repozytoriów, a JCR (i Jackrabbit) naprawdę wyrosły z potrzeby wspólnego, standardowego interfejsu API, aby uzyskać dostęp do różnych repozytoriów treści (patrz JSR-170 i JSR-283).

Innym przykładem są systemy zarządzania dokumentami, które zarządzają plikami elektronicznymi (które często są obrazami dokumentów papierowych) i zapewniają wyszukiwanie i zapytanie. DMSy używały repozytoriów przez jakiś czas.

Systemy zarządzania artefaktami mogą korzystać z repozytoriów do zarządzania artefaktami cyfrowymi (często plikami) wraz z dodatkowymi informacjami (metadanymi). JCR działa tutaj świetnie, ponieważ możesz przechowywać metadane w tej samej lokalizacji, co pliki: te, które rozumieją te dodatkowe właściwości, mogą je zobaczyć, te, które ich nie obchodzą, nie muszą ich widzieć. Wiem, że Artifactory jest implementacją repozytorium Maven, która używa JCR. Istnieją również repozytoria do zarządzania artefaktami usług internetowych, artefaktami usług danych i artefaktami testów.

Jednak repozytoria JCR nie służą do zarządzania plikami. JCR używa prostego pojęcia hierarchii węzłów, w których węzły mogą zawierać nazwane właściwości (z jedną lub wieloma wartościami) i dzieci. Właściwości i węzeł podrzędny, które są dozwolone, są całkowicie dyktowane przez typy węzłów, które mogą być zmieniane i mieszane w zależności od potrzeby w zależności od węzła. JCR predefiniuje niektóre wbudowane typy węzłów, które są powszechnie potrzebne, takie jak te używane do reprezentowania plików i folderów w repozytorium. Możesz ponownie użyć tych wbudowanych typów, rozszerzyć je lub napisać własne. Wiele osób opowiada się za używaniem mixinów niemal jako aspektów lub aspektów, więc jeśli węzeł musi przyjąć aspekt, wystarczy dodać mixin do węzła.

JCR zaprojektowano tak, aby w łatwy sposób obsługiwał importowanie zawartości XML do repozytorium, w którym każdy element jest odwzorowany na węzeł, a każdy atrybut jest odwzorowany na atrybut. Wiele rzeczy jest reprezentowanych za pomocą XML (lub YAML lub JSON), a wszystko to może być łatwo reprezentowane i przechowywane w repozytorium JCR. Jako przykład rozważ repozytorium JCR, które przechowuje informacje o konfiguracji (które normalnie mogą być przechowywane w wielu plikach XML). JCR może zmieniać te informacje, umożliwiać dostęp do nich z wielu procesów, umożliwiać wysyłanie zapytań i wyszukiwanie oraz powiadamiać aplikacje o zmianach treści.

Istnieje kilka dobrych przeglądów JCR z większą liczbą szczegółów i przykładami. Kilka z nich to:

+0

Przedstawiamy API Java Content Repository autorstwa Titusa Barika <- link jest uszkodzony. –

Powiązane problemy