programing

MongoDB를 사용할 때 Memcache를 권장합니까?

css3 2023. 7. 4. 22:03

MongoDB를 사용할 때 Memcache를 권장합니까?

mongoDB와 같은 NoSQL 데이터베이스를 사용할 때 Memcache를 추천하는지 알고 싶습니다.

memcache를 사용한다는 개념은 "추가 RAM"이 어딘가에 있다는 생각에서 비롯되었습니다.MongoDB와 MySQL(및 대부분의 DB)은 얻을 수 있는 모든 RAM을 사용합니다.

매우 일반적인 MySQL/Memcache의 경우 Memcache를 사용하는 것이 쿼리 속도를 높이는 것보다 서버의 쿼리 로드를 줄이는 것에 더 가깝다는 것은 잘 문서화되어 있습니다.좋은 memcache 구현은 기본적으로 가장 일반적인 데이터를 메모리에 저장하여 데이터베이스 서버가 더 큰 데이터를 처리할 수 있도록 합니다.

사실, memcache의 사용은 일반적으로 시스템 성능을 유지하기 위해 memcache에 의존하게 됩니다.

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

웹 서버에 추가 RAM이 있는 경우 Memcache를 사용할 수 있습니다.물론 Mongo를 웹 서버에서 로컬로 실행할 수도 있습니다.마스터로부터 필요한 데이터를 슬레이브하기만 하면 됩니다.

다른 컴퓨터에 여분의 RAM이 있다면 memcache를 사용하는 것은 의미가 없습니다.MongoDB 복제본 세트 또는 샤드에 노드를 추가하기만 하면 됩니다.MongoDB가 실제로 빛을 발하는 곳입니다.샤딩/복제로 인해 Mongo Horizontal에 RAM을 추가하여 성능을 높일 수 있습니다.SQL을 사용하면 조인 확장이 원활하지 않기 때문에 "서버를 더 추가"하기가 매우 어렵습니다.그러나 Mongo를 사용하면 문제에 "노드를 더 추가"할 수 있습니다.

MongoDB는 어쨌든 모든 것을 메모리에 저장하고 키 값 기반 시스템으로서 비슷한 맥락에서 작동하지만, MongoDB는 BSON 객체를 내부에 저장할 수 있기 때문에 더 유연하다고 생각합니다.

(확인을 위해 MongoDB는 JSON의 특수한 형태인 BSON을 사용하여 객체 내의 객체를 포함한 모든 데이터를 저장합니다.)

처음에는 안 돼요.성능 문제가 발생하면 나중에 캐슁 계층(memcache)을 추가합니다.그러나 예를 들어 Redis를 사용할 경우 Redis가 이미 모든 것을 메모리에 저장하기 때문에 아무것도 얻을 수 없습니다.

정답은 사용 사례에 따라 달라집니다.
일반적으로 RAM에 액세스하는 것이 디스크에 액세스하는 것보다 훨씬 빠릅니다.
가장 빠른 SSD 드라이브도 RAM보다 액세스 속도가 약 100배 느립니다.

이제 Mongo가 캐싱 시스템을 갖추고 있는지(아마도 그렇게 될 것입니다) 또는 제거 정책이 무엇인지는 모르겠지만 프로그래머로서 원하는 대로 항목을 저장/검색 및 삭제할 수 있는 캐시를 선호합니다.그래서 저는 Mongo에서도 캐싱 솔루션을 사용하는 것을 선호합니다.

요약하자면, 이러한 솔루션을 사용하는 목적에 따라 달라집니다.모든 가능한 사용법을 다루는 답은 하나도 없습니다.

언급URL : https://stackoverflow.com/questions/4276384/is-memcache-recommended-when-using-mongodb