Почему форумы хранят сообщения в базе данных?

Взглянув на то, как некоторые программы для форумов хранят данные в базе данных (например, phpBB использует базы данных MySQL для хранения практически всего), я начал задумываться, почему они так делают? Разве это не может быть так же быстро и эффективно использовать... может быть, xsl с xslt для хранения тем и сообщений на форуме? Или хотя бы хранить посты в теме?

4 ответа

Решение

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

Ссылочная целостность

Индексы и эффективный поиск

SQL-соединения

Вот еще пара постов, на которые вы можете посмотреть для получения дополнительной информации:

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

Зачем использовать MySQL поверх плоских файлов?

Зачем использовать базу данных SQL?

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

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

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

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

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

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

Смешивание статического кэширования с реляционным хранилищем БД обеспечивает лучшее из обоих миров.

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