MarkLogic - Индекс диапазона свойств для подмножества документов в базе данных - PullRequest
0 голосов
/ 06 декабря 2018

MarkLogic версия - 9.0-6.2

В нашей базе данных data-hub-FINAL каждый объект имеет свойство с именем "TransactionRequestDtTm", что означает, что буквально каждый документ в базе данных имеет это свойство.

Для одной конкретной коллекции у меня есть требование извлекать документы, у которых TransactionRequestDtTm больше, чем временная метка ввода.Я имею в виду использование индекса диапазона для свойства TransactionRequestDtTm, но, насколько я понимаю, MarkLogic вытянет все документы, имеющие свойство TransactionRequestDtTm, в память при инициализации.В моем случае это означает, что вся база данных будет помещена в память.

Пожалуйста, исправьте мое понимание, если реальное поведение отличается.Есть ли способ указать, что индекс диапазона требуется только для определенной коллекции (может использоваться другое имя свойства)?Пожалуйста, предложите!

1 Ответ

0 голосов
/ 06 декабря 2018

Без индекса диапазона MarkLogic действительно должен был бы проверить каждый документ, чтобы проверить метку времени.С помощью умного кода он, вероятно, мог бы делать это потоковым способом, поэтому он не уничтожит всю вашу память, но и не будет быстрым.

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

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

Используйте поиск cts, чтобы поиграть с этим, и убедитесь, что вы выбрали только первые 10 документов.Вы увидите, что это будет очень быстро.

HTH!

...