Jackrabbit / JCR организация текстового содержимого данных - PullRequest
2 голосов
/ 06 апреля 2011

Я думал о том, как организовать «нормальный» текстовый контент (т. Е. Строку, HTML-код ...) в Jackrabbit. Есть ли рекомендуемые структуры для простого текстового содержимого (например, для файлов)?

Должен ли я хранить каждое текстовое содержимое в двоичном формате (как я делаю с файлами) Узел (nt: папка) -> Узел (nt: файл) -> Узел (jcr: содержимое со свойством jcr: data, которое содержит двоичный файл)

Или лучше иметь что-то вроде Узел (nt: папка) -> Узел (nt: неструктурированный со свойством jcr: message, содержащим строку)

Моя третья идея состояла в том, чтобы создать отдельное пространство имен для текстового содержимого Узел (nt: папка) -> Узел (my: текст со свойством jcr: message, в котором хранится строка) Узел (nt: папка) -> Узел (my: html со свойством jcr: message, в котором хранится строка) ...

Что, по вашему мнению, является лучшим решением? Было бы здорово обсудить это.

Ответы [ 2 ]

1 голос
/ 14 апреля 2011

Хранение текста и HTML-содержимого в виде структур nt: file делает его видимым через WebDAV и другие инструменты, которые понимают эти структуры.Это может быть полезно в зависимости от вашего приложения.

Если вам это не нужно, вы можете просто сохранить текстовое содержимое в качестве свойств.В этом случае использование стандартных имен свойств: jcr: title, jcr: description и т. Д., Как определено в разделе Стандартные типы узлов приложения спецификации JSR-283, помогает обеспечить согласованность.

См. Также http://wiki.apache.org/jackrabbit/DavidsModel, в котором содержатся некоторые соответствующие рекомендации.

1 голос
/ 06 апреля 2011

Я бы сохранял обычный текст в строковом свойстве, если только он не является большим (несколько килобайт) текстом.Это похоже на VARCHAR в реляционной базе данных.

Для действительно больших текстов, которые не являются «файлами», я бы использовал двоичное свойство (поток).Такие свойства хранятся в DataStore , который медленнее записывает и обращается к нему, чем строковое свойство, но не загружает весь элемент в память и сохраняет одни и те же данные только один раз.Это похоже на BLOB / CLOB в реляционной базе данных.

Для файлов я бы использовал nt:folder / nt:file.Это похоже на файл в файловой системе.

...