Bezdepbonusu7Программирование: статьи и ответы

Вопрос

RavenDb Почему TransformResults помещен в индекс

Автор вопроса: SiberianGuyОтветов: 3

Почему live projections является частью индекса (свойство TransformResults)? Индекс используется для запроса документа, а проекция используется для преобразования документа. Так почему же они должны быть объединены?

Если бы живые проекции не были частью индекса, можно было бы иметь несколько живых проекций для одного и того же индекса. В результате будет меньше индексов, и я думаю, что производительность RavenDb будет немного лучше.

Обновление. Было бы здорово, если бы динамические прогнозы работали с оператором Select, размещенным в запросе (например, Where для фильтрации).

ravendb

Ответы

Ответ 1 · рейтинг 4 · Matt Warren

На самом деле это справедливый вопрос. Я думаю, что ответ заключается в том, что размещение TransformResults в индексе является наиболее распространенным вариантом использования, и его было проще реализовать, учитывая существующую структуру индексирования в RavenDB.

Если есть подлинные сценарии, в которых вы хотели бы определить TransformResults во время запроса специальным образом, опубликуйте запрос функции в списке рассылки.

Однако я уверен, что ответ будет

Я бы принял запрос на это

Поскольку вы первый, кто попросит эту функцию ;-)

Ответ 2 · рейтинг 3 · Ayende Rahien

Поскольку нам нужно место для их размещения, большинство индексов имеют только одну функцию преобразования результата, так что это было хорошее место для этого. Это также уменьшает количество вещей, которые вам нужно знать о RavenDB. В противном случае у вас будет проблема верхнего уровня под названием Transformers, которая обычно используется только с одним индексом, поэтому возникает вопрос, почему они разделены.

Ответ 3 · рейтинг 2 · Daniel Lang

Посмотрите здесь: http://ravendb.net/docs/client-api/querying/handling-document-relationships

Важная часть заключается в следующем:

Функция, объявленная в TransformResults, будет выполняться по результатам запроса.

Это означает, что функция TransformResults будет выполняться во время запроса, а не во время индексации. Это принципиальное отличие, очевидно.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы