2012-01-27 2 views
1

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

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

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

ответ

4

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

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

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

Я принимаю нагрузочный запрос на что

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

+1

Это не тот объект, с которым я не могу жить. Но я всегда думал, что прогнозы работают с помощью оператора Select, поэтому я с удивлением обнаружил, что проекции работают не на Select. – SiberianGuy

+0

У вас есть некоторые опции, см. Этот ответ http://stackoverflow.com/a/7836337/4500 –

2

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

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

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

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

+0

Вы правы, они разные. Но вопрос в том, почему они настолько различны, оба помещаются внутри индекса. Для меня живые прогнозы больше похожи на часть запроса (например, Where cluase), чем часть индекса. – SiberianGuy

3

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

+0

Как насчет размещения прогнозов в методе выбора запроса? Поэтому я могу использовать Order для заказа, где для фильтрации, и было бы неплохо использовать Select для проецирования. – SiberianGuy

+0

Вы можете сделать это в некоторой степени, см. Http://stackoverflow.com/a/7836337/4500 –

Смежные вопросы