Как получить и отобразить сообщения на форуме? - PullRequest
3 голосов
/ 02 июня 2010

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

Спасибо.

Ответы [ 3 ]

3 голосов
/ 02 июня 2010

Вы никогда не получите все эти сообщения сразу. В большинстве случаев форумы показывают страницу с темами / сообщениями X, и вы просто получаете эти темы / сообщения X из базы данных каждый раз, когда страница обслуживается. СУРБД довольно хороши в этом. Форум является (должен быть) довольно динамичным, так что он действительно генерирует довольно хорошую нагрузку на базу данных, но это то, для чего база данных предназначена для хранения и извлечения данных.

1 голос
/ 02 июня 2010

Один новый (ish) способ сделать это - использовать Ориентированную на документы базу данных, такую ​​как CouchDB , где все об отдельной записи хранится в одном и том же документе, и этот документ загружается по запросу.

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

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

0 голосов
/ 02 июня 2010

Не беспокойтесь о устаревших данных. Facebook не ... их база данных только "в конце концов непротиворечива". Идея такая: убедиться, что комментарии всегда на 100%, всегда в курсе, это очень дорого. Это создает большую нагрузку на вашу БД. Хотя, как говорит Серти, именно для этого и создана БД, но является ли ваш физический ящик достаточным для загрузки, это другой вопрос.

Facebook и Digg, если назвать несколько других, использовали другой подход ... Неужели так важно, чтобы каждая загрузка каждой страницы была на 100% точной? Сколько загрузок страниц на самом деле приводит к тому, что каждый комментарий читается конечным пользователем в любом случае? Гораздо дешевле получить правильные комментарии «большую часть времени», и под «большинством» я подразумеваю что-то вы , чтобы решить. 10% шанс страницы с отсутствующими комментариями в порядке? вероятность 1%? Сколько узлов должно иметь правильные данные СЕЙЧАС. Когда я пишу новый комментарий, сколько узлов должно сказать, что они получили обновление, чтобы оно было успешным.

Мне нравится идея Кассандры, которая вкратце звучит так: «Сколько мы готовы потратить, чтобы комментарий тети Марты о картине крещения ее племянника был на 100% верным?»

Но это хороший вопрос для бесплатного веб-сайта, но это не так хорошо работает для бизнес-приложений.

...