Уточнение менеджеров JackRabbit
Я пытаюсь решить, какой тип персистентного менеджера использовать для моего проекта. Я прочитал эту запись вики о персистентности менеджеров.
Прежде всего, из-за JCR-2802 (все не связанные с PM устаревшие), есть только
BundleFsPersistenceManager
BundleDbPersistenceManager
Mysql,H2,PostgreSQL,Oracle,Derby,MSSQL - PersistenceManagers
и все эти InMem, Object, Xml PersistenceManagers устарели. (MemoryFileSystem все еще в порядке, хотя InMemPM устарела?)
Так что, как я вижу, BundleFsPersistenceManager использует LocalFileSystem для сохранения файлов (есть ли вики-запись, объясняющая способы хранения содержимого в файлах? - например, различные типы свойств узла, такие как nt:file) в файловой системе, а BundleDbPersistenceManager использует DbFileSystem хранить точно такие же файлы в СУБД? В противном случае индексация lucene и полнотекстовый поиск были бы невозможны, верно?
Так что причинами являются кластеризация и распределенная природа систем и атомарности... в противном случае реализация базы данных была бы избыточной, верно? Таким образом, у людей есть больше вариантов.
1 ответ
MemoryFileSystem все еще в порядке, в то время как InMemPM устарела?
Да... Немного грустно, что менеджер сохраняемости в памяти устарел, потому что он позволяет запускать быстрые юнит-тесты. Однако вы также можете использовать менеджер сохраняемости базы данных вместе с базой данных в памяти (такой как база данных H2).
Есть ли вики запись, объясняющая, как контент хранится в файлах?
Нет, потому что это детали реализации и могут быть изменены, вам никогда не нужно разбирать или записывать такие файлы самостоятельно, а вместо этого использовать Jackrabbit.
как различные типы свойств узла, такие как nt: file
Содержимое файла хранится в хранилище данных. Узел и данные о свойствах и ссылки на хранилище данных являются диспетчером сохранения.
В противном случае индексация lucene и полнотекстовый поиск были бы невозможны, верно?
Индексирование Lucene не зависит от менеджера постоянства или формата данных, которые использует менеджер постоянства. Внутренняя индексация Lucene не имеет прямого доступа к данным менеджера постоянства.
в противном случае реализация базы данных была бы избыточной, верно?
Просто некоторые люди предпочитают хранить все данные в базе данных (например, потому что у них уже есть база данных и они очень хорошо знают, как ее / резервировать / поддерживать). Кажется, что большинство в порядке для непосредственного хранения данных в файловой системе, однако в Jackrabbit нет встроенного менеджера персистентности на основе транзакционных файлов. Для этого вам нужно будет использовать расширение Jackrabbit, такое как (коммерческий) CRX от Adobe (заявление об отказе: я работаю для Adobe).