writer
Junior Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Цитата: В Marlin, The Bat и других почтовиках, имеющих т.н. папки-фильтры (search folders) - поиск осуществляется каждый раз заново. И длиться он может десятки секунд и даже минуты (в зависимости от размера базы). Единственное, что они могут делать - это сохранять результаты предыдущего поиска. Но это практически не добавляет комфорта, т.к. для актуализации списка надо выполнять поиск заново. Короче, кто хоть раз попробовал поиск в почтовике Оперы, уже никогда не захочет пользоваться обычным поиском в других почтовиках. | Не совсем так. Не буду говорить про The Bat, п.ч. не знаю. В Марлине полный поиск для папки-фильтра выполняется однократно - при её создании. В дальнейшем при возникновении сообщения, которое потенциально может быть добавлено в папку-фильтр, происходит анализ - удовлетворяет ли оно необходимым условиям. Если удовлетворяет, то оно добавляется в папку-фильтр. Это происходит практически мгновенно и в фоновом режиме. То же самое и при удалении/изменении сообщения. Чем это лучше по сравнению с физическим хранением сообщений в одной папке и их полной индексацией? Тем, что фильтруется только то, что должно фильтроваться. Предположим, что у нас в какой-то папке хранится 20 тыс. сообщений, которые нам могут потребоваться раз в год. Но в случае хранения всех сообщений в одной папке все эти сообщения будут здорово влиять на размер индекса. А чем больше размер индекса, тем дольше выполняется поиск по индексу. Так что ещё неизвестно, что лучше. А ещё есть интересная ситуация, когда реально база сообщений лежит на сетевом диске. Тогда лишний сетевой трафик на чтение/запись огромного индекса будет довольно накладным. Скажете, что такая конфигурация маловероятна? Поверьте, именно таким образом многие админы и поступают с базами пользователей, п.ч. это удобно и безопасно. Можно сделать централизованный регулярный бэкап баз сообщений всех пользователей, например, и много чего другого. Ещё, предположим, при записи индекса произошла фатальная ошибка и индекс не удалось записать. После этого нужно заново индексировать всю (!) базу по всем индексам. Моё мнение, что иметь одну базу сообщений и индексировать её по всем полям возможно только для случая, когда у пользователя не так много сообщений. Конечно, для многих пользователей именно так и есть. Но всё же остаётся довольно ощутимая часть пользователей, почтовые базы у которых имеют довольно внушительный размер. |