2010-11-25 3 views

답변

54

(단지 설명을 위해, MongoDB를 객체 내에서 객체를 포함하는 모든 데이터를 저장. BSON, JSON의 전문 양식을 사용) "추가 RAM "어딘가에 앉아있다. MongoDB와 MySQL (그리고 대다수의 DB)은 얻을 수있는 모든 RAM을 필요로합니다.

매우 일반적인 MySQL/Memcache의 경우 Memcache를 사용하면 쿼리 속도를 높이는 것보다 서버에서 쿼리로드를 줄이는 것이 더 잘 설명되어 있습니다. 좋은 memcache 구현은 기본적으로 메모리에 가장 보편적 인 데이터를 유지하려고 시도하므로 데이터베이스 서버가 더 큰 데이터를 처리 할 수 ​​있습니다.

는 사실, memcache에의 사용은 일반적으로 시스템의 성능을 유지하기 memcache에에 의존이 될 것을 내 경험이었다.

원래 질문으로 돌아가서, 여분의 RAM은 어디 있습니까?

웹 서버에 여분의 RAM이있는 경우 Memcache를 사용할 수 있습니다. 물론 Mongo를 웹 서버에서 로컬로 실행할 수도 있습니다. 마스터에서 필요한 데이터를 슬레이브하십시오.

다른 컴퓨터에 여분의 RAM이있는 경우 실제로 memcache를 사용하는 것이 중요하지 않습니다. MongoDB 복제 세트 나 샤드에 노드를 추가하기 만하면됩니다. 이것은 MongoDB가 실제로 빛나는 곳입니다. 샤딩/복제 때문에 Mongo에 RAM을 추가하여 성능을 향상시킬 수 있습니다. SQL을 사용하면 조인이 확장되지 않기 때문에 "서버를 추가하는 것"이 ​​매우 어렵습니다. 그러나 Mongo를 사용하면 문제에 "노드를 더 추가"하는 것이 가능합니다.

3

처음으로. 성능 문제가 발생하면 나중에 캐싱 계층 (memcache)을 추가하십시오. 예를 들어 Redis를 사용하려고한다면 Redis는 모든 것을 메모리에 저장하므로 아무 것도 얻지 못할 것입니다.

11

MongoDB는 메모리에 모든 것을 저장하고 비슷한 맥락에서 작동하지만 키 - 값 기반 시스템이지만 MongoDB는 유연성이 뛰어나며 BSON 객체를 자체 내에 저장할 수 있습니다.

memcache에 사용의 개념은 당신이 가지고있는 생각에서 비롯된

+3

그 기능 덕분에 다른 키 - 값 데이터베이스보다 mongoDB가 더 좋아졌습니다 :) –

+4

이 답변은 정확하지 않습니다. MongoDB는 키 - 값 저장소가 아니며 모든 것을 RAM에 저장하지 않습니다. 다른. – Sammaye

0

답변은 사용 사례에 따라 다릅니다.
일반적으로 RAM 액세스는 디스크 액세스보다 훨씬 빠릅니다.
심지어 가장 빠른 SSD 드라이브는 RAM보다 액세스가 약 100 배 더 느립니다.

이제 Mongo가 캐싱 시스템 (대부분 가능) 또는 퇴거 정책이 있는지 모르겠지만 프로그래머는 내가 저장/검색 및 삭제할 수있는 캐시를 선호합니다 항목을 자유롭게 사용할 수 있습니다. 따라서 Mongo와 함께 캐싱 솔루션을 사용하는 것을 선호합니다.

요약하면 실제로 이러한 솔루션을 사용하는 대상에 따라 다릅니다. 가능한 모든 용도를 다룰 수있는 답변이 없습니다.

관련 문제