База данных для сайта
Из статьи вы узнаете, как база данных (БД) влияет на производительность сайта. Как проверить, грамотно ли спроектирована база данных. Какие признаки говорят об ошибках БД. Почему сайту нужна БД и что из себя представляет. И в конце статьи подготовили для вас чек-лист «Как проверить Базу данных сайта на ошибки».
Знаете, где хранится контент вашего сайта? Для информации, размещаемой на сайте, нужно найти место хранения. Контент (включая тексты, картинки, файлы для скачивания) хранится не просто на сайте, а в определенном месте. Объясню, не углубляясь в техническую часть, а на понятном для вас языке.
Что такое база данных сайта
База данных сайта — это файл или несколько файлов, в которые занесены данные (например, тексты медиа, ссылки) отображаемые на страницах сайта.
- тексты новостей, статей, комментариев, ссылки;
- имена, электронные адреса и другая информация о пользователях;
- картинки, иллюстрации, gif, анимации.
БД применяется к сайтам, поддерживающим динамическое изменение контента. То есть, когда на сайте, например, систематически публикуются новости, статьи, предусмотрено комментирование пользователями.
Использование базы данных (далее БД) позволяет уменьшить скорость открытия страниц и увеличить безопасность сайта. А также позволяет добавлять контент через систему управления сайта, не обращаясь к разработчику.
- Информация заносится, хранится и меняется в БД, когда вы заполняете сайт в системе управления.
- Можно делать резервные копии, что гарантирует возврат контента, если с сайтом что-то случилось.
Информация записывается в базе данных и постоянно меняется (перезаписывается) в зависимости от того, как меняется контент на сайте. Для сохранности контента делают резервную копию. Для корпоративных сайтов, форумов, информационных порталов резервную копию БД делают один или несколько раз в сутки. Для менее активных сайтов раз в пару дней.
- список заявок с сайта;
- данные о зарегистрированных пользователях;
- ссылки и настройки сайта;
- установленные плагины и настройки;
- медиа материалы;
- и другая информация.
Без стабильного соединения сайта с базой данных, не просмотреть страницы. Чем больше контента и плагинов на веб-сайте, тем больше вес базы данных. Это напрямую влияет на скорость загрузки сайта в браузере.
Вес материалов, загружаемых на сайт, напрямую влияет на скорость загрузки страниц. Чем тяжелее база данных, тем медленнее открываются страницы.
Рекомендации, как не утяжелять вес сайта
- Размещать видео на сайте с помощью ссылки на другие источники, а не загружать видео на сайт.
- Картинки публиковать весом не тяжелее 200кб и в формате jpg.
- Сжимать размер pdf-файла с помощью онлайн-конвертора.
- Папку с файлами для скачивания лучше переводить в формат «.zip».
Далее вы узнаете, где на сайте хранится контент сайта и как проверить, что контент хранится в базе данных.
Где хранится контент сайта
Если вы не разработчик своего сайта, то внешне определить, существует ли у сайта БД или нет, невозможно. Когда у сайта существует база данных, то у вас имеется пароль и логин для входа в систему управления, где заполняются страницы. Если БД нет, значит войти в систему управления сайта нельзя.
Зачастую контент сайта хранится в базе данных. Сохраняется контент в БД через систему управления сайтом, когда вы заполняете страницы. Также контент может храниться в верстке сайта, то есть в коде и не попадает в БД.
Разница между хранением контента в базе данных и на сайте
Контент хранится в базе данных сайта в виде структурированных таблиц. Сайт обращается к базе данных, запрашивает материал и отображает его на страницах. При этом менеджер добавляет/изменяет/удаляет контент через систему управления сайта.
В верстке сайта контент хранится в виде строчек кода и сразу отображается на сайте. Разница в том, что менеджер не сможет добавить/изменить/удалить контент в верстке без помощи технического специалиста.
Ниже рассмотрим оба варианта хранения контента. И как понять, где хранится контент вашего сайта.
Вариант 1: контент хранится в базе данных сайта
Как понять, что контент сохраняется именно в БД: войдя на страницу через систему управления сайта, вы увидите поля для заполнения текста и картинок.
- Заходите в систему управления сайтом.
- В меню находите страницу, которую хотите отредактировать, и нажимаете «редактировать».
- Страница открывается с полями для заполнения, где меняете текст и картинки.
- Вносите изменения и публикуете.
Ниже на скриншоте показываю, как выглядит страница с полями для заполнения в системе управления сайтом.
Вариант 2: контент хранится в верстке
Как понять, что контент хранится в верстке (в коде страницы): в системе управления для страницы нет полей заполнения. В этом случае, в качестве места для хранения контента используется, например, html (язык разметки файлов для просмотра веб-страниц сайта в браузере. Не является БД).
Два способа проверить, что контент хранится в коде
- Заходите в систему управления сайта, вводя логин и пароль.
- В меню сайта находите страницу, которую нужно редактировать и открываете.
- Открывается пустая страница без возможности редактировать тексты и публиковать картинки. То есть без заполнителей, как на скриншоте ниже.
Это значит, что контент хранится в коде страницы, а не в базе данных веб-сайта. Ниже на скриншоте показываем, как выглядит пустая страница в системе управления.
Как тогда меняется контент на странице? Разработчик меняет контент на сайте версткой: открывает проект, где видит сайт в виде строчек кода и вносит корректировки.
Когда на сайте отсутствует система управления, то можно считать, что не разработана БД. Если осталась связь с разработчиками, то обратитесь к ним. Отправьте письмо с просьбой подключить систему управления к сайту и предоставить вам логин и пароль для входа.
Далее рассказываю, как мы проектируем базу данных веб-сайта. Какие инструменты используем. Что будет, если неправильно спроектировать базу данных и как понять, что спроектирована неправильно. Что случится с сайтом, если не исправить ошибку.
С помощью каких инструментов мы проектируем базу данных сайта
Для проектирования базы данных существует множество инструментов. И выбираются по пожеланиям владельца будущего проекта и техническое задание. Также зависит от системы управления.
Например, наши разработчики часто используют MsSQL — систему управления реляционными базами данных, разработанной корпорацией Microsoft. Подходит для работы с крупными БД и менее масштабными. MsSQL – распространенный и технологичный инструмент, который используют многие компании.
- Высокая скорость обработки информации и функциональность системы управления база данных. Результат: высокая производительность.
- Язык запросов SQL многофункционален, позволяет редактировать данные таблиц без препятствий. Результат: скорость выполнения правок на сайте.
Что будет, если спроектировать базу данных неправильно
Ниже описываю стандартные последствия, по которым можно без специальных знаний проверить базу данных сайта. И понять, правильно ли разработчик спроектировал базу данных. И как ошибки БД повлияют на сайт, если не исправить.
- Большой вес БД.
- Данные из БД медленно загружаются.
- Страница сайта долго открывается или выдает ошибку.
- Элементы на сайте, такие как кнопки «Регистрация», «Купить» срабатывают с задержкой или не срабатывают вообще.
- Некоторые элементы на сайте не отображаются или появляются с ошибкой.
- Для пользователя — сайт крайне медленно открывается, по нажатию на кнопки всплывают ошибки или ничего не происходит, не подгружается часть страницы или контент. В итоге вызывает раздражение. И далее пользователь уходит, так как в современном мире никто не готов ждать долгую загрузку сайта.
- Для владельца сайта — потеря ресурсов (время, бюджет) и доходов (заявки).
Например. Разработчик оставил БД в плохом состоянии, побеспокоившись только о внешнем виде сайта. Понадобилось внести изменения. В лучшем случае, чтобы разобраться, куда добавить новые данные нужно просмотреть весь проект, а это время. В худшем — переделывать проект, что несет накладные расходы для партнера.
База данных проектируется для каждого веб-сайта. БД — это как фундамент, основание, на котором держится сайт. Без БД сайту неоткуда подтягивать информацию, чтобы отображать тексты, картинки, блоки, данные зарегистрированных пользователей и заявки.
- каждый раз или через раз, все или один элемент на сайте не отображается;
- по нажатию на кнопки ничего не происходит или появляется ошибка;
- при редактировании данные на сайте не обновляются.
Правильно ли работает БД вашего сайта? Проверьте это с помощью Чек-листа проверки БД.
Или сохраните файл себе на компьютер — Скачайте чек-лист проверки БД.
Если вы обнаружили на своем сайте хотя бы 2 проблемы, то база данных нуждается в доработке.
Что такое корень сайта
Выясняем, что такое корневая директория, где находится корень сайта, и для чего она может понадобиться.
Что за корневая папка?
Корневая папка (корневой каталог, корень, root) — это ключевая директория компьютера или сервера. В частности, на базе Linux. С нее начинается файловая система, в ней хранятся все остальные подкаталоги, содержащие системные и пользовательские файлы.
Что касается сервера, это может быть точно такая же папка root, как и в любом дистрибутиве Linux, если мы говорим о выделенном сервере (физическом или виртуальном). Она будет содержать в себе те же компоненты, что и обычный компьютер. А в случае с виртуальным хостингом эта папка может называться public_html или www. Там будут только данные сайта. Получить доступ к «настоящему» root там не получится.
Тем не менее эта директория тоже будет считаться корнем сайта, и этот термин будет уместно использовать в отношении условных public_html или www. И в различных инструкциях авторы будут ссылаться именно на нее, упоминая root.
Содержимое папки root
Как я уже сказал ранее, корневой каталог может представлять собой разные сущности в зависимости от типа сервера.
Например, на стандартной VDS/VPS такая директория может содержать в себе следующие папки:
- /bin с системными программами, файлами и компонентами, необходимыми для загрузки ОС;
- /boot с компонентами загрузчика, включающими в себя ядро Linux и базовый набор файлов для старта сервера;
- /dev с файлами, привязанными к конкретным устройствам, подключаемым к системе;
- /etc с другими скриптами и файлами, от которых не зависит запуск сервера.
Таких подкаталогов в корне может быть больше. Все зависит от конфигурации компьютера и ОС.
На виртуальном хостинге же папка public_html или ее аналог не содержит ничего, она пустая по умолчанию. В нее помещают HTML-документы, JS-скрипты и CSS-файлы необходимые для работы размещаемого сайта. Скорее всего, корнем для вас станет директория, в которую будет помещен файл index.html с главной страницей вашего ресурса.
Где находится корень сайта?
Зависит от того, что подразумевается под местоположением директории. Ведь мы уже выяснили, что корнем может быть папка www. Для html корнем станет именно директория, указанная в настройках сервера. А в случае с PHP, к примеру, это будет именно корневой каталог системы. В CMS WordPress — это хранилище в интерфейсе самой платформы, в Bitrix для поиска корня есть команда GetCurPage().
Для чего нужен корневой каталог?
Это основа вашего сервера и сайта. В нем лежат все ключевые компоненты. Он нужен для работы ресурса в целом. Удалите что-то из корня и распрощаетесь с рабочей операционной системой.
Если же говорить о конкретном применении root-каталога вебмастерами на практике, то речь пойдет о:
- Загрузке файла Robots.txt, куда будут прописываться страницы, запрещенные для индексации поисковыми машинами. Через нее скрывают разного рода техническую информацию и конфиденциальные данные.
- Добавлении документа sitemap.xml (карта сайта), где расписывается структура страниц, чтобы поисковому боту было проще ориентироваться на сайте.
- Хранении данных, необходимых для подтверждения прав на владение ресурсом. Туда добавляют скрипты с настройками сторонних ресурсов для интеграции с ними (например, скрипт Яндекс.Метрики).
- Хранении архива с резервной копией данных сайта. Бэкап необходим для восстановления проекта после сбоя и потери файлов.
- Для установки CMS (соответствующие установочные скрипты запускаются именно из root-каталога).
Как зайти в корень сайта
Вход в корневую директорию требуется довольно частно, и есть как минимум четыре способа туда зайти.
Основной — через терминал. То есть при помощи командной строки и текстовых утилит. Но есть и специализированное программное обеспечение с графическим интерфейсом.
В корень можно зайти через FTP (как на сервер, так и на виртуальный хостинг). А еще у некоторых хостинг-провайдеров имеется фирменный файловый менеджер для работы с файлами сервера через браузер.
Через терминал
Чтобы управлять сервером через терминал, надо подключиться к нему через Secure Shell (SSH). Для этого:
- Запускаем терминал (в macOS или Linux).
- Вводим команду ssh root@IP-адрес сайта.
- Указываем пароль администратора для авторизации.
В Windows для выполнения этой задачи потребуется установить приложение PuTTY и указать IP-адрес сайта в нем.
Если вы управляете сервером через протокол SSH, то проще всего будет зайти в корневой каталог, используя встроенную в Linux команду для перемещения по жесткому диску. Речь идет о команде cd. Когда вы используете ее без дополнительных опций (не указывая конкретный путь), то она автоматически отправляет пользователя в корневую директорию сервера.
Сразу же можно проверить его содержимое, воспользовавшись командой ls.
Через FTP-клиент
При аренде сервера или виртуального хостинга провайдер выдает пользователю адрес, логин и пароль. Используя их, можно подключиться к своему ресурсу через программное обеспечение для работы с FTP.
Рассмотрим эту процедуру на примере утилиты FileZilla:
- Заходим на официальный сайт разработчика программы и скачиваем ее.
- Открываем FileZilla и заполняем поля хост, имя пользователя и пароль в верхней части интерфейса.
- Затем кликаем по кнопке «Быстрое соединение», чтобы получить доступ к корневой директории.
FTP-клиенты мало чем отличаются от файловых менеджеров. Большая их часть визуально напоминает Total Commander. Перед вами появится двухпанельный интерфейс: в одной из панелей будут локальные файлы и папки, во второй — файлы и папки хостинга.
Для управления используются горячие клавиши или элементы в верхней панели FileZilla.
Через панель управления хостинга
Я уже говорил ранее, что некоторые провайдеры предоставляют доступ к файлам на сервере через собственное веб-приложение. Расскажу о том, как работает такое приложение у Timeweb (для управления виртуальным хостингом).
- Открываем сайт Timeweb.
- Заходим в саму ПУ.
- Переходим во вкладку «Файловый менеджер».
- Открываем директорию public_html.
Если вы пользуетесь услугами другого хостинга, то в нем наверняка есть альтернативное схожее решение для управления файлами сервера напрямую через браузер. Можете уточнить у техподдержки или самостоятельно поискать в ПУ пункт с названием «Файловый менеджер».
Через стороннюю панель управления
Некоторые вебмастера используют для управления сайтом программы в духе ISPmanager. Расскажу о переходе в корень виртуального выделенного сервера на ее примере.
- Заходим в панель ISPmanager.
- Авторизуемся, используя данные администратора.
- Открываем меню «Система».
- Выбираем подпункт «Менеджер файлов».
Через файловый менеджер
В Explorer (Windows) и в Finder (macOS) есть встроенная поддержка протокола FTP. То есть для подключения к серверу не нужно скачивать стороннее ПО. Достаточно ввести FTP-адрес в соответствующее поле файлового менеджера операционной системы.
В macOS это делается следующим образом:
- Открываем Finder.
- Одновременно нажимаем клавиши Cmd + K.
- Указываем адрес сервера в формате ftp://IP-адрес сайта
- Кликаем по кнопке «Подключиться».
- Авторизуемся, используя данные, которые выдал хостинг.
В Windows:
- Открываем Explorer.
- Вводим во встроенную поисковую строку ftp://IP-адрес сайта
- Авторизуемся, используя данные, которые выдал хостинг.
Корневая папка станет частью файловой системы. С ней можно будет взаимодействовать, как с любым другим каталогом. То есть копировать туда файлы или редактировать их. Правда, для этого потребуются права администратора.
Как загружать файлы в корневой каталог?
Загружать файлы в корень сервера можно через одну из панелей управления указанных выше или через FTP-клиент.
- Открываем FileZilla (мы уже скачали, установили и настроили ее ранее в инструкции по подключению через FTP).
- Напротив строки «Локальный сайт» вводим путь до файлов на диске, которые надо загрузить в root.
- Напротив строки «Удаленный сайт» вводим путь до root-каталога. Например, до папки public_html.
- Выделяем папку, которую нужно перенести, и открываем меню «Файл».
- В появившемся списке опций выбираем «Загрузить на сервер» или просто жмем на Enter.
В случае с виртуальным хостингом Timeweb достаточно открыть фирменный менеджер файлов через браузер и перетащить в него файлы с жесткого диска. Здесь полноценно поддерживается Drag & Drop. Но такой метод менее удобен, так как он требует держать браузер открытым и отнимает много времени на загрузку большого количества файлов.
На этом ликбез можно заканчивать. Вы узнали, что такое «корень», зачем он нужен и как загрузить в него файлы. Осталось выбрать наиболее удобный способ для подключения к хранилищу сервера и управления им.
База данных сайта
База данных по автомобилям состоит из множества таблиц. Это модели: ВАЗ, ГАЗ, FORD, VW, Ferrari и т.д. Каждая таблица имеет поля.
ВАЗ: 2101, 2104, 2105, 2107 и т.д.
В каждом поле внесены записи со значениям-характеристиками: цветовые гаммы, ЛС, мощность движка и т.д.
Таблицы связаны специальными отношениями, поэтому с записями можно работать: объединять, сортировать, делать выборку посредством указания одного запроса. Современные веб-ресурсы используют базы данных для своего функционирования.
Базы данных и организация веб-ресурса
Каждый сайт состоит из HTML-страниц. На них есть определенный каркас — то, что одинаково на любой странице. И есть контент — на каждой странице он разный.
Раньше интернет-сайты создавали на чистом HTML, и это было неудобно, так как все данные были представлены как отдельные HTML-файлы. Нельзя было осуществлять поиск, группировку, сортировку информации. К тому же, информация могла часто дублироваться. При появлении PHP у веб-мастеров появилась возможность разделения сайта на его каркас и данные в базе. Теперь структуру сайта можно хранить отдельно от контента, что позволяет быстрее и удобнее администрировать веб-ресурс, легко дорабатывать его дизайн и функционал.
Структура веб-ресурса хранится в коде или в отдельных шаблонах (специальных файлах). Контент размещается в базе данных — определенном наборе таблиц с однотипными данными.
Допустим, мы создаем обычный сайт-визитку. У нас будет отдельная структура веб-сайта и база данных. В базе будут представлены несколько таблиц: 1 — с содержимым страниц, 2 — с новостной лентой, 3 — с фотогалереей.
Преимущества использования базы банных
- Быстрое управление посредством СУБД. Любая система управления БД работает на языке запросов SQL. К примеру, для сортировки данных достаточно указать всего лишь один параметр в SQL-запросе.
- Четкое структурирование и организация логики. К примеру, можно сделать выборку и точно узнать, сколько фото размещены в альбоме “Наше производство”. Или на сайте театра можно точно узнать, в каких спектаклях работает один катер.
- С применением БД легко решаются такие вопросы как поиск, сортировка, пагинация (разбиение на материалов постранично), работа пользователей в личном кабинете.
Как работать с БД
Если вы в совершенстве владеете html и css, то все равно обращаетесь к Dreamweaver, чтобы снизить сложность работы с версткой сайта. Для работы с БД необходима также программа обработки SQL под названием MySQL. Она установлена на хостинге в оболочке phpMyAdmin.
По умолчанию сама БД сайта находится в каталоге data на веб-сервере интернет-проекта. К примеру, если БД имеет название bd, то все ее значения находятся в data/bd. Как правило, на хостинге доступ к файлам БД закрыт, их следует “вытягивать” посредством запросов SQL через консоль. Упрощает работу с запросами именно MySQL. Для того чтобы попасть в MySQL, необходимо зайти по ссылке, которую дает хостинг-провайдер, и ввести логин-пароль от базы.
Подключение базы к сайту происходит в конфигурационном файле при помощи указания названия, пользователя и пароля. Название файла и его и месторасположение зависит от вида вашей CMS. Для MODx это config.inc по пути /core/config/.
Резервное копирование — почему оно необходимо
Необходимо периодически создавать бэкапы — резервные копии сайта и базы данных. Обычно хостинги предоставляют услуги по созданию копий сайта.
- Чтобы “откатить” неудачные изменения на сайте и вернуться к предыдущей версии.
- Для восстановления веб-ресурса после вирусной атаки или взлома сайта.
- Для восстановления после сбоев.
Восстановить предыдущую версию можно с той даты, за которую сохранены база и конфигурация сайта. Легче периодически делать копии, чем восстанавливать портал с нуля.
Что хранится БД сайта и где она лежит?
Долгое время думал, что в базе MySQL хранится вся текстовая информация сайта. Но несколько раз во время сбоев на сервере замечал, что на сайте перестают отображаться одни блоки, но остаются другие.
Один раз при переносе сайта у базы не правильно сохранилась кодировка. Все статьи в ленте остались нормальными. Кракозябры появились только в боковых модулях — «последнее», «похожее», «комментарии» и т.д. Это значит, что статичные статьи хранятся не в базе, а в отдельных файлах?
Куда складывается база физически на сайте? Почему ее нельзя копировать/скачивать/закачивать напрямую, как файл, а нужно делать все операции через phpMyAdmin?
Понимаю, что вопросов много. Достаточно будет коротких ответов. На уровне действий и операций проблем нет. Все пока получается)))). Хочется чуть чуть понимать «физический смысл» своих действий.
Причин может быть много. Один из вариантов — движок кеширует часть блоков в такой форме, что кодировка уже не влияет. Соответственно, если сбросить кеш движка, то всё станет кракозябрами.
При установке MySQL на сервер определяется путь, где хранятся файлы с таблицами. Есть папки по названиям баз данных. А в них файлы по таблицам. На shared-хостинге доступа к файлам СУБД нет. Данные нужно вытягивать через SQL. phpMyAdmin — один из интерфейсов. SQL-запросы можно задавать из юникс-шелла, из скриптов, через настольные приложения для управления СУБД.
Смотря как организована система. Есть такие, которые кэш хранят в БД, тогда у вас все будет криво отображаться.
Должно лечиться запросом «SET NAMES utf8», к примеру.
А вообще я настоятельно рекомендую изучит базу вашего сайта и часть кода системы для понимания процессов, невидимых глазу. Сразу куча нелепых вопросов пропадет.
Robotti, Дима, Мас, спасибо за ответы!
Особенно за идею по поводу кэширования. Даже не подумал, что может быть еще и этот фактор. Появилось несколько уточняющих вопросов, но лучше создам для них отдельную тему.
Получается, что сайт и база лежат в разных местах. И все, что их связывает (например, в Joomla) — это файл configuration.php? Только через него скрипт сайта может взаимодействовать со своей базой (находить ее)? Если я знаю имя и пасс базы соседа по виртуальному хостингу — мой сайт может «взаимодействовать» с его базой?
Если к CMS-ке приделан дополнительный форум как компонент (например, FireBoard в Joomla) — база форума при установке встраивается в базу самого сайта?
Есть еще вопрос по поводу работы с базами — пользователь базы. Каждый раз, при создании нового сайта на локалке — в phpMyAdmin создаю новую базу и нового пользователя. Нужно ли это делать или можно использовать (указывать) базу и пользователя от предыдущей сайто-сборки (если она уже не нужна)?
Или если создать новую базу — можно ли в качестве пользователя к ней указать уже существующего (который создавался для предыдущей базы)?
И примерно то же самое про хостинг — если на одном хост-аккаунте можно создать например 3БД (и 3 домена) — то можно ли к 3-м разным БД указать одного и того-же пользователя?
Если да, то стоит ли это делать с точки зрения безопасности?
> Или если создать новую базу — можно ли в качестве пользователя к ней указать уже существующего (который создавался для предыдущей базы)?
Обычно создается 1 пользователь и добавляется, как администратор к нескольким БД.
Можно в 1 БД складывать несколько сайтов. У многих систем/форумов даже есть такая опция — префикс у таблицы. Делаешь форуму префикс forum_, к сайту префикс site_ и сайт с форумом мирно уживаются в одной базе.
Вопрос с безопасностью использования сайта и форума в одной базе очевиден — если сломают базу сайта, то без проблем могут уничтожить и форум.
> И примерно то же самое про хостинг — если на одном хост-аккаунте можно создать например 3БД (и 3 домена) — то можно ли к 3-м разным БД указать одного и того-же пользователя?
> Если да, то стоит ли это делать с точки зрения безопасности?
Если к 3 БД прикрутить 1 пользователя, то следовательно взломав, слив данные конфига с параметрами доступа к БД, злоумышленник может получить доступ и к другим БД.
Другой вопрос как будет взломщик работать с БД, если обычно сервера MySQL закрыты из вне.
> Если к CMS-ке приделан дополнительный форум как компонент (например, FireBoard в Joomla) — база форума при установке встраивается в базу самого сайта?