2010-06-02 5 views
3

저는 개념적 질문에 어려움을 겪고 있습니다. 수천 개의 게시물 및/또는 스레드가있는 포럼이있을 때 사이트에 표시 될 모든 게시물을 어떻게 검색합니까? 다른 사람이 귀하의 페이지를 방문 할 때마다 데이터베이스에 연결 한 다음 배열의 모든 게시물을 캡처하여 표시합니까? 확실히 이것은 매우 귀하의 서버에 부담이 될 것 같아 불필요한 데이터베이스를 많이 읽습니다. 누군가이 주제에 대해 밝힐 수 있습니까?포럼에서 게시물을 검색하고 표시하는 방법은 무엇입니까?

감사합니다.

답변

1

이 작업을 수행하는 새로운 방법은 CouchDB과 같은 문서 지향 데이터베이스를 사용하는 것입니다. 여기서는 개별 게시물에 대한 모든 내용이 동일한 문서에 저장되며 해당 문서가 요청에 따라로드됩니다.

이 경우 문서 지향 데이터베이스는 포럼 또는 블로그 유형 사이트에서 매우 잘 작동합니다.

관계형 데이터베이스가 실행되는 한 일종의 캐싱이 구현되어 있지 않은 한 데이터베이스가로드 될 때마다 데이터베이스가 손상 될 것이라고 확신합니다. 그런 다음 데이터가 오래되어서는 안된다는 것에 대해 걱정해야합니다. 문제의 완전히 새로운 엉망입니다.)

+0

흥미 롭다. 나는 존재했던 데이터베이스를 몰랐다. 귀하의 답변에 감사드립니다. – vince

3

한번에 모든 게시물을 검색하지 마십시오. 대부분의 경우 포럼은 X 스레드/게시물 페이지를 표시하며 페이지가 제공 될 때마다 해당 X 스레드/게시물을 데이터베이스에서 가져옵니다. RDBMS는 이것에 꽤 능숙합니다. 포럼은 매우 동적이어서 실제로 데이터베이스에 꽤 좋은로드를 생성하지만 이것은 데이터베이스가 만들어지고 데이터를 저장하고 검색하는 것입니다.

+0

그렇다면 일반적으로 db에 상당한 양의 부하를 걸면 좋습니다. 알아 둘만한. 감사. – vince

+1

페이 스북이 수백만 개의 게시물을 처리 할 수 ​​있다면 귀하의 사이트도 가능할 것이라고 확신합니다. – ggfan

+0

@@ ggfan, ... 슈퍼맨이 잠옷으로 과속 총을 막을 수 있다면 확신 할 수 있습니다. –

0

부실 데이터에 대해 많이 염려하지 마십시오. 페이스 북은 ... 그들의 데이터베이스는 단지 "궁극적으로 일관성이있다". 아이디어는 다음과 같습니다. 주석이 항상 100 %인지 확인하고 최신 정보가 항상 매우 비쌉니다. 그것은 DB에 큰 부담을줍니다. Serty가 말했듯이 그것은 DB가 만들어지는 것이지만 물리적 박스가 부하에 충분한 지 여부는 또 다른 문제입니다.

몇 가지 이름을 짓는 데 Facebook과 Digg는 다른 접근 방식을 취했습니다. 모든 페이지의 모든로드가 100 % 정확해야한다는 것이 정말로 중요합니까? 실제로 최종 사용자가 읽는 모든 단일 주석을 얼마나 많은 페이지가로드합니까? '대부분의'시간과 '대부분'에 대한 의견을 얻으려면 훨씬 저렴합니다. 결정하십시오. 누락 된 댓글이있는 페이지의 10 % 확률입니까? 1 %의 기회입니까? 얼마나 많은 노드가 올바른 데이터를 가질 필요가 있습니다. 새로운 코멘트를 쓸 때 얼마나 많은 노드가 성공적으로 업데이트되었는지 말할 필요가 있습니다.

저는 카산드라 뒤에있는 아이디어를 좋아합니다. "마사의 이모에게 세례 그림 100 %에 대한 의견을 듣기 위해 얼마나 많은 돈을 기꺼이 쓸 것인가?"

하지만 무료 웹 사이트는 괜찮은 질문이지만 비즈니스 응용 프로그램에는 적합하지 않습니다.

관련 문제