2010-06-02 2 views
3

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

Спасибо.

ответ

1

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

Похоже, что в этом случае Document Oriented Database будет работать очень хорошо для сайта форума или блога.

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

+0

Интересно, я не знал, что такие базы данных существуют. Спасибо за Ваш ответ. – vince

3

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

+0

Я вижу, так что в общем случае вполне нормально размещать нагрузку на db. Хорошо знать. Благодарю. – vince

+1

Если facebook может обрабатывать миллионы сообщений, я уверен, что ваш сайт тоже может быть :) – ggfan

+0

@@ ggfan, как ... если Супермен может остановить ускоряющуюся пулю со своей пижамой, я уверен, что вы тоже сможете. –

0

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

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

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

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

Смежные вопросы