SQL 대 noSQL (속도)
사람들이 SQL과 noSQL을 비교하고 각각의 장단점을 결론을 내릴 때, 아무도 이야기하지 않는 것은 속도입니다.
일반적으로 SQL 쿼리를 수행하는 것이 noSQL 쿼리를 수행하는 것 보다 빠르지 않습니까?
제 말은, 이것은 정말 명백한 결론이 될 것입니다. 왜냐하면 당신이 데이터베이스의 구조 를 안다면 당신이 모르는 것보다 항상 더 빨리 무언가를 찾을 수 있기 때문 입니다.
그러나 사람들은 이것을 언급하지 않는 것 같으므로 내 결론이 옳은지 틀린지 알고 싶습니다.
noSQL 시스템의 정의는 매우 광범위합니다. 즉, SQL을 사용하지 않는 데이터베이스 / RDBMS가 아닙니다. 따라서 귀하의 질문에 대한 답변은 간단히 "상황에 따라 다릅니다"입니다.
일부 noSQL 시스템은 기본적으로 영구 키 / 값 저장소 (예 : Project Voldemort )입니다. 쿼리가 "주어진 키에 대한 값 조회"유형 인 경우 이러한 시스템은 훨씬 더 작은 기능 세트 만 있으면되므로 RDBMS보다 더 빠릅니다 (또는 최소한 이어야합니다 ).
또 다른 인기있는 noSQL 시스템 유형은 문서 데이터베이스 (예 : CouchDB )입니다. 이러한 데이터베이스에는 사전 정의 된 데이터 구조가 없습니다. 이들의 속도 이점은 비정규 화 및 실행할 쿼리에 맞게 조정 된 데이터 레이아웃 생성에 크게 의존합니다. 예를 들어 블로그의 경우 댓글과 함께 블로그 게시물을 문서에 저장할 수 있습니다. 이렇게하면 조인 및 조회의 필요성이 줄어들어 쿼리 속도가 빨라지지만 쿼리와 관련된 유연성도 줄어들 수 있습니다.
noSQL을 사용하는 경향이있는 사람들은 사용 사례에 적합하기 때문에 특별히 사용합니다. 정상적인 RDBMS 테이블 관계 및 제약 조건과 데이터의 ACID-ity에서 분리되어 훨씬 빠르게 실행되도록하는 것이 매우 쉽습니다.
사용자가 사이트에서 매우 제한된 작업 만 수행하기 때문에 NoSQL을 사용하는 Twitter 또는 정확히 하나의 트윗 인 Twitter를 고려해보십시오. 그리고 (1) 다른 사람이 귀하의 트윗을 수정할 수없고 (2) 일반적으로 여러 장치에서 동시에 트윗하지 않기 때문에 동시성은 존재하지 않는 것으로 간주 될 수 있습니다.
아인슈타인이 말했듯이 속도는 상대적입니다.
장바구니와 같은 마스터 / 디테일 단순 애플리케이션을 저장해야하는 경우 SQL 애플리케이션에서 여러 개의 Insert 문을 수행해야하며 구매를 위해 쿼리를 수행 할 때 정보의 데이터 세트를 얻을 수 있습니다. NoSQL을 사용하고 있고 잘 사용하고 있다면 하나의 간단한 "레코드"(djondb와 같은 NoSQL 데이터베이스의 용어를 사용하는 경우 문서)에 단일 주문에 대한 모든 데이터가있을 것입니다.
따라서 주문을 저장하기 위해 여러 삽입을 수행해야하고 데이터베이스에 하나의 간단한 삽입 만 필요한 경우 단일 요구 사항을 달성하기 위해 수행해야하는 작업의 수로 애플리케이션의 성능을 측정 할 수 있다고 생각합니다. djondb와 같이 데이터베이스 계층에 대한 호출을 10 배 적게 사용하기 때문에 NoSQL 세계에서 성능이 10 배 빨라집니다.
내 요점을 설명하기 위해 NoSQL과 SQL 데이터 모델 접근 방식의 차이점에 대해 언젠가 작성한 예제를 연결하겠습니다. http://djondb.com/blog/?p=4 , 자체 참조라는 것을 알고 있지만 기본적으로 작성했습니다. 이 질문을 해결하기 위해 RDBMS 사용자가 가질 수있는 가장 어려운 질문이며 NoSQL이 SQL 세계와 다른 이유를 설명하는 좋은 방법이며, "nasa를 사용하기 때문이 아니라 항상 더 나은 성능을 얻을 수있는 이유"입니다. "기술을 사용하는 이유는 NoSQL을 통해 개발자가 더 적은 작업을 수행하고 더 많은 것을 얻을 수 있으며 더 적은 코드를 통해 성능을 높일 수 있기 때문입니다.
답은 상황에 따라 다릅니다. 일반적으로 말해서 NoSQL DATABASES ( "쿼리"없음)의 목표는 확장 성입니다. RDBMS는 일반적으로 기존의 방법 (복제, 클러스터링, 파티셔닝)으로 더 이상 확장 할 수없는 특정 시점 (수백만 및 수백만 행에 대해 이야기하고 있음)에 약간의 엄격한 제한이 있으며, 요구 사항이 계속 증가하기 때문에 더 많은 것이 필요합니다. 또는 확장을 관리하더라도 전체 설정이 매우 복잡합니다. 또는 읽기를 확장 할 수 있지만 쓰기는 할 수 없습니다.
그리고 쿼리는 서버의 특정 구현, 수행중인 쿼리 유형, 테이블의 열 등에 따라 달라집니다. 쿼리는 RDBMS의 일부일뿐입니다.
1000 명 데이터에 대한 SQL과 같은 관계형 데이터베이스의 쿼리 시간은 2000ms이고 neo4j와 같은 그래프 데이터베이스는 2ms입니다. 더 많은 노드를 크레이트하면 1000000 속도 안정 2ms
참고 URL : https://stackoverflow.com/questions/13397979/sql-versus-nosql-speed
'Program Club' 카테고리의 다른 글
| SQL에서 max (count (*))를 할 수 있습니까? (0) | 2020.11.20 |
|---|---|
| C 문자열에서 '\ 0'뒤의 메모리는 어떻게됩니까? (0) | 2020.11.20 |
| node-gyp 빌드 오류 창 x64 (0) | 2020.11.20 |
| SpringData JPA는 네이티브 쿼리 결과를 Non-Entity POJO에 매핑합니다. (0) | 2020.11.20 |
| Ruby의 자연어 처리 (0) | 2020.11.20 |