2010-03-18 4 views
5

В качестве учебного упражнения я пытаюсь создать систему ведения блога.Разработка баз данных в системах ведения блога

Цель состоит в том, чтобы закодировать что-то, что позволит мне создавать несколько блогов, например blogger.com или wordpress.com, но значительно упрощается.

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

Лучше иметь один большой стол, содержащий сообщения из всех блогов всех пользователей (например, friendfeed), или было бы лучше создать отдельную таблицу для сообщений каждого блога?

Большое спасибо за вашу помощь, Peter.

ответ

3

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

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

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

+0

+1 Хороший ответ! – amelvin

+1

Кроме того, разделение на несколько таблиц означает, что вам нужно либо генерировать SQL «на лету», либо использовать сложные динамические псевдонимы, чтобы иметь одно приложение, которое использует * n * идентичные копии таблиц. Это потенциальный кошмар для обслуживания программного обеспечения. Если вы ошибетесь (т. Е. С динамически генерируемым SQL), это может быть кошмар безопасности. –

1

Это хороший вопрос (+1).

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

Если вы только ожидаете небольшого количества пользователей, тогда сосредоточьтесь на дизайне и игнорируйте масштабируемость.

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