Желательно ли использовать только индекс Lucene без базы данных?

Я занимаюсь разработкой приложения для iOS, которое будет состоять из около 600 книг, каждая длиной около 90 страниц (.pdf документы). Подход, который я выбрал, заключался в том, чтобы поместить весь текст в базу данных, разделенную на абзацы, которые я затем вызывал и отображал. Чтобы повысить скорость поиска, я проиндексировал все необходимые данные из базы данных с помощью CLucene и понял, что теперь у меня есть две копии моих данных, и я получаю лучшее время доступа из индекса, а не из базы данных, как ожидалось.

Мой вопрос: целесообразно или рекомендуется использовать приложение без базы данных и просто извлекать все данные из индекса, даже в тех случаях, когда поиск не выполняется. Это улучшит как скорость, так и размер моего приложения, поскольку база данных не будет включена, но желательно ли это?

Я был бы очень признателен за любую помощь / совет по этому вопросу, так как я неопытный в этой области, и впервые я использую какой-либо API поиска.

1 ответ

Решение

Не беспокойтесь о дублирующих данных. Однако нужно следить за тем, чтобы в ваших индексах Lucene сохранялись только необходимые данные. Так что, если вы не собираетесь отображать полные главы непосредственно из индекса, не храните их, просто индексируйте их. Таким образом, это не повторяющиеся данные.

Кроме того, в долгосрочной перспективе вы обнаружите, что если вы хотите, чтобы данные были редактируемыми, обслуживаемыми и поддерживающими резервное копирование, вам было бы легче хранить их в базе данных. Однако это не означает, что вы должны использовать реляционную базу данных, такую ​​как MySQL или MS SQL. Есть также много вариантов баз данных NoSQL.

Я не буду вдаваться в подробности о плюсах и минусах NoSQL, потому что вы можете это погуглить. Но вы можете, например, использовать MongoDB для хранения и обслуживания всех ваших данных вместо того, чтобы использовать базу данных и Lucene, и это все равно будет очень быстрым и масштабируемым решением.

Другие вопросы по тегам