왜 MongoDB가 SQL DB보다 훨씬 빠른지에 대한 구체적이고 구체적인 이유가 있습니까?
좋아요, 왜 MongoDB가 그렇게 빠른지에 대한 질문들이 있습니다.
나는 그 대답들에 감사하지만, 그것들은 꽤 일반적입니다.네, 알아요.
- MongoDB는 문서 기반인데, 왜 문서 기반이 되는 것이 훨씬 더 빠른 속도로 이어질 수 있습니까?
- MongoDB는 noSQL이지만 noSQL은 왜 더 높은 성능을 의미합니까?
- SQL은 일관성, ACID 등에 있어서 MongoDB보다 훨씬 더 많은 것을 하고 있지만, MongoDB도 데이터를 안전하게 유지하고 인덱싱을 유지하는 등 비슷한 일을 하고 있다고 생각합니다.
좋아요, 이 질문을 쓰는 이유는
- MongoDB의 성과가 높은 세부적이고 구체적인 이유는 무엇입니까?
- SQL은 정확히 무엇을 하지만 MongoDB는 그렇게 하지 않기 때문에 매우 높은 성능을 얻을 수 있습니까?
- 및 전문가이 귀하에게 "MongoDB SQL"이라고
"Why MongoDB is so fast"
어떻게 대답하시겠습니까?대답하는 것: 분명히그냥대뿐입니다할답뿐다▁obviously니입:▁answering▁just할."because MongoDB is noSQL"
충분하지 않습니다.
감사해요.
먼저 사과와 사과를 비교해 보겠습니다. MongoDB를 사용한 읽기 및 쓰기는 RDBMS에 비클러스터된 인덱스가 없는 테이블의 기본 키별 단일 읽기 및 쓰기와 같습니다.
정확히 이를 벤치마킹해 보겠습니다. http://mysqlha.blogspot.de/2010/09/mysql-versus-mongodb-yet-another-silly.html
그리고 정확히 같은 원시적인 작업을 공정하게 비교했을 때 속도 차이가 크지 않다는 것이 밝혀졌습니다.사실 MySQL이 조금 더 빠릅니다.저는 그들이 동등하다고 생각합니다.
왜 그럴까요? 사실 두 시스템 모두 이 특정 벤치마크에서 비슷한 작업을 수행하고 있기 때문입니다.기본 키로 검색된 단일 행을 반환하는 것은 실제로 그렇게 많은 작업이 아닙니다.이것은 매우 빠른 작업입니다.저는 교차 프로세스 통신 간접비가 그것의 큰 부분이라고 생각합니다.
MySQL의 조정된 코드가 MongoDB의 약간 덜 체계적인 오버헤드(논리적인 잠금 및 다른 작은 것들이 없음)를 능가하는 것 같습니다.
이것은 흥미로운 결론으로 이어집니다.MySQL을 문서 데이터베이스처럼 사용하여 뛰어난 성능을 얻을 수 있습니다.
만약 인터뷰 진행자가 "문서나 스타일에 신경 쓰지 않고, 훨씬 빠른 데이터베이스만 필요한데, MySQL이나 MongoDB를 사용해야 한다고 생각하십니까?"라고 말한다면, 제가 뭐라고 대답할까요?
잠시 성능을 무시하고 두 시스템의 상대적인 강도를 살펴보는 것이 좋습니다.MongoDB에는 확장(웨이업) 및 복제와 같은 것들이 떠오릅니다.MySQL의 경우 풍부한 쿼리, 동시성 모델, 향상된 툴링 및 성숙도 등과 같은 훨씬 더 많은 기능이 있습니다.
기본적으로 기능을 성능과 교환할 수 있습니다.그렇게 할 의향이 있습니까?그것은 일반적으로 이루어질 수 없는 선택입니다.어떤 대가를 치르더라도 성능을 원하는 경우 다른 기술을 추가하기 전에 MySQL을 먼저 조정하는 것이 좋습니다.
클라이언트가 단일 행/문서를 기본 키로 검색할 때 다음과 같이 수행됩니다.두 시스템 간의 차이점에 주석을 달겠습니다.
- 클라이언트가 이진 명령을 빌드합니다(동일).
- 클라이언트가 TCP를 통해 전송(동일)
- 서버가 명령 구문 분석(동일)
- 서버가 캐시에서 쿼리 계획 액세스(SQL만, MongoDB, HandlerSocket은 아님)
- 서버가 B-Tree 구성 요소에게 행에 액세스하도록 요청합니다(동일).
- 서버가 행(동일)으로 이어지는 B-Tree 경로에서 물리적 읽기 전용 잠금을 사용합니다.
- 서버가 행에 대한 논리적 잠금을 사용합니다(SQL만, MongoDB, HandlerSocket은 사용 안 함).
- 서버가 행을 직렬화하여 TCP를 통해 전송(동일)
- 클라이언트가 이를 역직렬화(동일)
일반적인 SQL 기반 RDBMS에는 두 단계만 추가할 수 있습니다.그렇기 때문에 별 차이가 없습니다.
일반적으로 MySQL과 MongoDB는 단일 시스템의 "내구성" 쓰기 성능이 매우 유사합니다.단순한 키/값 조회는 거의 동일합니다.MySQL을 그런 식으로 사용하려는 경우.문서 지원은 분명히 생산성 측면에서 큰 이점이며 성능 측면에서도 큰 이점입니다.
자동 샤딩 기능이 있는 경우...MongoDB는 설명할 수 없는 방식으로 더 빠릅니다.적절한 설계를 통해 코드에 논리를 포함하지 않고 바로 확장할 수 있습니다.
읽기/쓰기 분할 기능도 거의 모든 드라이버에 내장되어 있습니다.대부분은 10개의 유전자에 의해 후원되거나 개발되었습니다.
저는 이전에 애플리케이션의 크기를 조정하고 읽기/쓰기 분할 코드를 작성했으며, 샤딩을 위한 해시를 배포하고, 작업을 지속적으로 실행하고, gzip을 mysql "문서" 저장소에 추가한 적이 있습니다.에휴.
단순하고 집중적이기 때문에 더 빠릅니다.이 모든 것을 염두에 두고 설계되었습니다.범용 하드웨어에 대한 확장이 우선입니다.RDBMS의 우선순위는 상당히 다릅니다.
기본적으로 mongo는 인덱싱을 수행하지 않으며 트랜잭션도 없습니다.그러나 mysql 테이블을 압축 해제하도록 구성하고 자동 커밋을 설정하면 속도 차이가 크게 나지 않습니다. 디스크에 비트를 쓰는 데는 일정 시간이 걸립니다.
그러나 mongo는 쉽게 확장할 수 있도록 설계되었습니다.샤드를 사용하면 마스터-마스터 복제의 복잡성 없이 쓰기를 수평적으로 확장하고 훨씬 더 나은 성능을 얻을 수 있습니다.복제 세트를 사용하여 읽기를 수평으로 확장할 수 있습니다. 따라서 시스템적인 성능 향상이 있지만 각 쿼리가 반드시 더 빠른 것은 아닙니다.
언급URL : https://stackoverflow.com/questions/11244553/any-detailed-and-specific-reasons-for-why-mongodb-is-much-faster-than-sql-dbs
'code' 카테고리의 다른 글
파이썬 3에서 바이트와 문자열을 변환하는 방법은 무엇입니까? (0) | 2023.05.13 |
---|---|
1999년 10월 12일의 의미는 무엇입니까? (0) | 2023.05.08 |
로컬에서 실행되는 도커 컨테이너에서 Azure Keyvault에 액세스하는 방법은 무엇입니까? (0) | 2023.05.08 |
단위 테스트와 함께 애플리케이션 통찰력을 사용하시겠습니까? (0) | 2023.05.08 |
텍스트 상자를 부동값으로 바인딩합니다.도트/콤마를 입력할 수 없습니다. (0) | 2023.05.08 |