Большие объемы статических данных для заполнения веб-страницы - хранение в базе данных или статические? - PullRequest
1 голос
/ 30 августа 2010

У меня есть большое количество (несколько гигабайт) архивных данных, которые я хочу сделать доступными для пользователей и поисковых систем через веб-интерфейс. Большая часть данных будет меняться редко, поэтому я обсуждаю лучший способ хранения и доставки данных.

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

Было бы более эффективно использовать пространство и ресурсы для хранения данных в базе данных MySQL и динамического генерирования страниц отображения или предварительного заполнения всех страниц отображения из базы данных и сохранения их в виде статического текста / html (восстановление страниц каждые несколько недель, если необходимо)?

Ответы [ 5 ]

2 голосов
/ 30 августа 2010

Ваша главная задача - поиск и просмотр данных. Вы, вероятно, не захотите создавать эту функциональность с нуля, а использовать один или несколько существующих продуктов. Поэтому я бы отбросил вопрос «файлы или базы данных» и заменил его словами «какой сервер / систему просмотра / поиска я собираюсь использовать?».

В этой области есть несколько мощных решений с открытым исходным кодом. Как только один пример, Apache Solr выглядит так, как будто он может быть вам полезен:

Solr - популярная, быстро развивающаяся платформа корпоративного поиска с открытым исходным кодом из проекта Apache Lucene. Его основные функции включают в себя мощный полнотекстовый поиск, выделение совпадений, граненый поиск, динамическую кластеризацию, интеграцию с базой данных и обработку документов (например, Word, PDF). Solr обладает высокой масштабируемостью, обеспечивает распределенный поиск и репликацию индексов, а также поддерживает функции поиска и навигации на многих крупнейших мировых интернет-сайтах.

Sphinx - еще одна популярная система с открытым исходным кодом, предназначенная для поиска в базах данных.

1 голос
/ 30 августа 2010

компромиссом будет сохранение данных в виде статических файлов на сервере и сохранение путей к файлам в вашей базе данных.

Простое «включение» должно поместить все эти данные на ваши веб-страницы.Таким образом, вы также избегаете дублирования данных на всех страницах, на которых вы хотите, чтобы данные присутствовали.

0 голосов
/ 30 августа 2010

Если ваша главная цель - для индексации Google или другими пользователями. Вам не нужна база данных. Поместите все статические данные на страницы и создайте файл sitemap.xml в корне веб-сервера для индексации веб-ботами ...

0 голосов
/ 30 августа 2010

Я думаю, это будет зависеть от количества «отображаемых страниц». Если есть относительно небольшое количество интересных страниц для отображения, тогда да. Однако я собираюсь предположить, что будет отображаться большое количество страниц (возможно, далеко до многих, которые нужно предварительно вычислить).

Я бы подумал, что вы начнете с того, что нормализуете некоторые из ваших таблиц в представления, которые вас интересуют. Таким образом, вы можете избежать необходимости объединяться повсюду. После этого, если производительность все еще была проблемой, какой-то механизм кэширования мог бы подойти для наиболее часто используемых страниц. (Веб-кеш и т. Д.) Конечно, я думаю, что ваша база данных автоматически сделает свое собственное кеширование.

Это все компромисс и сильно зависит от данных.

0 голосов
/ 30 августа 2010

Я надеюсь, что вы не размещаете все эти данные на одной странице.Если вы это сделаете, вы остановите веб-браузеры людей.Если данные велики и не сильно меняются, я бы придерживался статических страниц, возможно, программ для их регенерации при изменении данных.Это подход, используемый, например, движком блогов Movable Type.Если программа, которую вы используете для создания страниц, написана правильно, ее можно быстро и легко заменить на ту, которая генерирует страницы динамически по требованию.

...