MarkLogic: Нужен ли для mlcp сервер XDBC?

Обязательно ли для mlcp нужен XDBC-сервер или он также работает с HTTP-сервером?


person Yash    schedule 26.07.2017    source источник


Ответы (2)


Это зависит от используемой вами версии MarkLogic — начиная с MarkLogic 8 (и, конечно, также и с 9) вы также можете работать с экземпляром REST API, нет необходимости настраивать отдельный сервер приложений XDBC. Подробнее об этих улучшениях можно прочитать в примечаниях к выпуску MarkLogic 8: https://docs.marklogic.com/8.0/guide/relnotes/chap3#id_46078

person Tamas    schedule 26.07.2017
comment
Возможно, стоит отметить, что, хотя это больше не является требованием для ML8+, в конце концов могут быть другие причины, по которым нужен отдельный сервер приложений, например, настройки безопасности или база данных подключенных модулей и т. д. - person grtjn; 26.07.2017

В документации указано «экземпляр REST API». Это относится конкретно к «серверам», созданным REST API MarkLogic. Подразумевается также «не модифицированный».

«Под капотом» в V8 все серверы «HTTP» поддерживают вариант протокола XCC, совместимый с http 1.1 (https://docs.marklogic.com/guide/xcc.pdf раздел 2.12.1). Но HTTP-серверы «поддерживают» функции, которые также нарушают это, например, использование переписчиков (которые активно используются в REST API). Частично для решения этой проблемы был введен декларативный рерайтер («XML Rewriter»), который позволяет маршрутизировать запросы на очень раннем этапе конвейера обработки. Средство перезаписи XML поддерживает синтаксис «xdbc passthrough», который при размещении в верхней части документа перехватывает запросы XDBC и обрабатывает их должным образом.

Это задокументировано в https://docs.marklogic.com/guide/app-dev/XMLrewriter, порт 8000 и недавно созданные серверы REST, включают что-то вроде этого:

 <match-path any-of="/eval /invoke /spawn /insert">
    <set-error-format>compatible</set-error-format>
    <dispatch xdbc="true">$0</dispatch>
  </match-path>

Порт 8002 не поддерживает xcc. Смешивание REST, не-REST-приложений и xdbc очень полезно, особенно в качестве «стандартной» начальной загрузки на порту 8000. Как упоминает grtjn, это не обязательно рекомендуется. Если бы у меня был выбор, я бы избегал этого и делал отдельные серверы по многим причинам. То же самое с смешиванием использования REST и «приложения» HTTP на одном сервере/порте. Есть много «движущихся частей», которые должны быть правильными, чтобы это работало хорошо, и это открывает потенциальные дыры в безопасности и неожиданное поведение, если вы не полностью понимаете, что происходит. Поскольку REST, приложения HTTP и XDBC построены на одной и той же технологии и базовом протоколе (HTTP 1.1) — ошибочный или хорошо составленный код может создавать запросы, которые могут выглядеть как любой из них.

-D

person DALDEI    schedule 26.07.2017