Хранение комментариев в базе данных


2 0

Михаил, как лучше, заносить комментарии к заметкам в ту же БД где и сама заметка, или создать отдельную БД для комментариев?

Всегда и во всех действиях пытаюсь найти смысл. Какой может быть смысл в отдельной базе данных? Если посмотреть на блоги, то в движке блога почти все запросы будут SELECT и только комментирование будет INSERT. Я так понимаю, что автор этого письма хочет обезопасить всю базу записей блога от взлома комментариев. Но отдельная база не всегда поможет. Дело в том, что если на сервере не правильно распределены права, то жопа настанет всем базам данных.

И вот тут мы подошли к тому, что защищаться лучше правами. Можно завести две учетных записи, одна будет с правами на SELECT на все таблицы и другая только с правами на INSERT на таблицу комментариев. Все будет в одной базе и если хакер взломает, то максимум что может сделать, так это насорить в таблице комментариев. Так что с точки зрения безопасности выносить комментарии в отдельную базу данных не вижу смысла.

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

С точки зрения производительности действительно может иметь смысл поместить комментарии в отдельную базу, если она находится на отдельном сервере. Но не думаю, что ты пишешь базу данных в стиле социальной сети, и у тебя будут миллионы посетителей в день, чтобы задумываться о такой гибкости. Даже для сотен тысяч посетителей в день один сервер базы данных вполне способен обшуршать данные записей и комментариев, если правильно построены индексы и структура таблиц не ушатана.

В ИТ есть еще одна причина – надежность. Может ли разделение на две таблицы повлиять на надежность? Не думаю. Если ушатается база данных комментариев, то у тебя сохранятся хотя бы заметки. Но если ушатается основная база, то комментарии без всего остального просто не имеют смысла. Для повышения надежности данных существуют другие, более надежные способы, типа резервного копирования, репликации, зеркалирования дисков и т.д.

Так что я никогда не разбивают таблицы одного сайта на две разных базы данных. У меня одна база на один сайт и каждый сайт использует только одну свою базу со своей учетной записью. Хотя из этого правила есть и исключения. Не помню какие, но какие-то два сайта используют одну и ту же базу данных, просто имена у таблиц имеют разные префиксы. А есть две базы, которые используют одну и ту же учетную запись. Риск? Согласен. Но я стараюсь следить за безопасностью так, чтобы никто не пролез в сценарии и не ушатал ни одной базы.


Понравилось? Кликни Лайк, чтобы я знал, какой контент более интересен читателям. Заметку пока еще никто не лайкал и ты можешь быть первым


Комментарии

Денис Сепетов

07 Aпреля 2011


Но не думаю, что ты пишешь базу данных в стиле социальной сети, и у тебя будут миллионы посетителей в день


Михаил, а если вообще маленький сайт (посещение не более 40-50 пользователей в день), то будет ли рациональней использовать простые файлы для хранения, нежели базу?

У себя я пока что сделал именно так, ведь кроме комментариев мне, собственно, хранить больше нечего. А их всего лишь слегка 2000 штук перевалило.


Михаил Фленов

08 Aпреля 2011

Файлы вообще не рекомендую использовать, даже если один посетитель в день.


Добавить Комментарий

Еще что-нибудь

Хотите найти еще что-то интересное почитать? Можно попробовать отфильтровать заметки на блоге по категориям.

О блоге

Программист, автор нескольких книг серии глазами хакера и просто блогер. Интересуюсь безопасностью, хотя хакером себя не считаю

Обратная связь

Без проблем вступаю в неразборчивые разговоры по e-mail. Стараюсь отвечать на письма всех читателей вне зависимости от страны проживания, вероисповедания, на русском или английском языке.

Пишите мне