Почему форумы хранят сообщения в базе данных?
Взглянув на то, как некоторые программы для форумов хранят данные в базе данных (например, phpBB использует базы данных MySQL для хранения практически всего), я начал задумываться, почему они так делают? Разве это не может быть так же быстро и эффективно использовать... может быть, xsl с xslt для хранения тем и сообщений на форуме? Или хотя бы хранить посты в теме?
4 ответа
Существует множество причин, по которым они используют базы данных, а не плоские файлы. Вот некоторые из моих голов.
Индексы и эффективный поиск
Вот еще пара постов, на которые вы можете посмотреть для получения дополнительной информации:
Но это именно то, для чего были разработаны и оптимизированы базы данных, для хранения и поиска данных. Использование базы данных позволяет разработчику форума сосредоточиться на своей проблеме и не беспокоиться о реализации хранилища. Не имеет смысла игнорировать всю работу, проделанную в мире баз данных, и вместо этого реализовывать собственное решение. Это займет больше времени, будет больше глючить, и не будет работать так быстро.
Механизмы баз данных решают все проблемы параллелизма. Представьте, что два пользователя пытаются писать на вашем форуме одновременно. Если вы сохраняете запись в файлах, первая попытка заблокирует файл, поэтому вторая должна ждать окончания первой.
В противном случае, если вы хотите выполнить поиск, гораздо быстрее сделать это в базе данных, чем сканировать все файлы.
Так что, по сути, не очень хорошая идея хранить данные, которые могут быть изменены одновременно пользователями, и поиск в базе данных намного эффективнее.
Просто, легкий доступ к данным. Гораздо проще найти сообщения между датой, созданной пользователем, или с определенными ключевыми словами. Вы можете сделать все вышеперечисленное с плоским хранилищем файлов, но это будет интенсивным и медленным. Если бы у вас была идея сохранить каждый пост в отдельном файле, у вас возникла бы проблема нехватки дискового пространства не из-за недостатка места, а из-за того, что вы бы использовали все доступные inode.
Программное обеспечение, подобное этому, обычно имеет функцию статического кэширования - неизменяемые страницы записываются в статические HTML-файлы, и они обслуживаются вместо попадания в базу данных.
Смешивание статического кэширования с реляционным хранилищем БД обеспечивает лучшее из обоих миров.