최근에 나는 물었다 :
NoSQL이 SQL보다 빠른 이유는 무엇입니까?
나는 그 질문의 전제에 동의하지 않았다 ... 그것은 개인적으로 나에게 넌센스입니다. SQL 대신 NoSQL을 사용하여 성능 향상을 볼 수 없습니다. 아마도 NoSQL을 통한 SQL 일 것입니다.
NoSQL에 대해 뭔가 빠졌습니까?
최근에 나는 물었다 :
NoSQL이 SQL보다 빠른 이유는 무엇입니까?
나는 그 질문의 전제에 동의하지 않았다 ... 그것은 개인적으로 나에게 넌센스입니다. SQL 대신 NoSQL을 사용하여 성능 향상을 볼 수 없습니다. 아마도 NoSQL을 통한 SQL 일 것입니다.
NoSQL에 대해 뭔가 빠졌습니까?
답변:
주변에는 NoSQL 솔루션이 많이 있으며 각 솔루션마다 고유 한 강점과 약점이 있으므로 다음과 같은 소금을 사용해야합니다.
그러나 기본적으로 많은 NoSQL 데이터베이스는 비정규 화에 의존하고 비정규 화 된 사례를 최적화하려고합니다. 예를 들어, 문서 중심 데이터베이스에서 주석과 함께 블로그 게시물을 읽고 있다고 가정합니다. 종종 댓글은 게시물 자체와 함께 저장됩니다. 즉, 동일한 위치에 저장되며 조인을 수행 할 필요가 없으므로 모두 함께 검색하는 것이 더 빠릅니다.
물론 SQL에서도 동일한 작업을 수행 할 수 있으며 비정규 화는 성능이 필요한 경우 일반적인 관행입니다. 많은 NoSQL 솔루션이 처음부터 항상 이런 식으로 사용되도록 설계되었습니다. 그런 다음 일반적인 상충 관계를 얻습니다. 예를 들어, 위의 예제에 주석을 추가하면 전체 문서를 저장해야하기 때문에 속도가 느려집니다. 그리고 비정규 화되면 응용 프로그램에서 데이터 무결성을 유지해야합니다.
또한 많은 NoSQL 솔루션에서는 임의 조인을 수행 할 수 없으므로 임의 쿼리가 불가능합니다. CouchDB와 같은 일부 데이터베이스는 필요한 쿼리를 미리 생각하고 DB 내부에서 준비해야합니다.
대체로, 비정규 화 된 스키마를 예상하고 해당 상황에 대한 읽기를 최적화하는 것으로 요약되며, 이는 관계 성이 높지 않고 쓰기보다 훨씬 더 많은 읽기가 필요한 데이터에 적합합니다.
NoSQL에 대해 누락 된 것은 NoSQl을 SQL과 비교할 수 없다는 것입니다. NoSQL은 SQL이 아닌 모든 지속성 기술의 이름입니다. 문서 DB, 키-값 DB, 이벤트 DB는 모두 NoSQL입니다. 저장된 데이터 구조, 쿼리, 성능 및 사용 가능한 도구 등 거의 모든 측면에서 서로 다릅니다.
따라서 누군가 인터뷰에서 그러한 질문을하면 이것이 정답입니다.
'NoSQL'(또는보다 정확하게는 비 관계형) 데이터베이스는 전통적인 데이터베이스의 일부 기능을 속도로 제공하지만 수평 확장성에는 더 중요합니다.
누락 된 기능은 콘크리트 제품에 따라 다르며 일반적으로 전체 ACID 속성 또는 결합 작업은 지원되지 않습니다. 이것이 성능 향상을위한 가격입니다.
NoSQL 데이터베이스는 일반적으로 데이터베이스를 중심으로 데이터를 디자인하는 경우에만 의미가 있습니다.
단순히 RDBMS 대체로 사용하려는 경우, 특히 많은 양의 RAM이있는 서버에 대해 지불 할 예산이 충분하지 않은 경우 성능이 저하 될 수 있습니다.
MySQL 디스크 공간 사용량과 MongoDB의 사용량을 비교하는이 기사를 참조하십시오. http://blog.trackerbird.com/content/mysql-vs-mongodb-disk-space-usage
어떤 NoSQL 데이터베이스입니까? 어떤 SQL 데이터베이스? 누군가 NoSQL이 SQL보다 빠르다고 말하면 멀리 가야합니다. 또는이 비디오를 시청하는 것이 좋습니다.
http://www.youtube.com/watch?v=b2F-DItXtZs
나는 NoSQL에 대해 주장하는 것의 절반이 잘못되었다고 말하지는 않을 것입니다. 그러나 나는 그것을 잘 이해하지 못하는 사람들로부터 NoSQL fanboyism이 많이 있다고 말할 것입니다.
SQL에는 물론 한계가 있지만 매우 성숙한 기술이기 때문에 잘 이해하고 있으며 사용법을 잘 알고있는 많은 개발자 풀이 있습니다. 모든 형태의 NoSQL에 대해 똑같이 말할 수는 없습니다.
RDBMS가 행 지향 데이터베이스 인 열 지향 데이터베이스에서 NoSql을 지원합니다. 예를 들어 이름, 연령, 판매소, 주소, EmployeeId 등이있는 Employee 테이블이 있습니다. MySql (RDBMS 지원) 및 HBase에 동일한 테이블을 넣습니다. (NoSQL 지원). 고객 / 고객이 1Lakh 직원 레코드에서 평균 연령 또는 판매소 세부 정보를 얻기 위해 쿼리를 작성하면 어떻게됩니까?
RDBMS에서는 각 행을 돌아 다니면서 결과에 대한 값과 합계 및 나누기를 수집합니다. Columnar 데이터베이스와 관련하여 하나의 모든 행 반복에 대해 걱정할 필요가 없습니다. 그러나 계산 속도가 더 빠른 하나의 행만 처리하십시오. 따라서이 방법은 때때로 NoSQL이 SQL보다 빠릅니다. 이 경우 NoSQL은 ACID 불만에 대해 신경 쓰지 않습니다.
데이터베이스에 대한 이론을 잊어 버리십시오 .. 일단 쿼리를 이해하면 포인트는 실제로 응용 프로그램에서 실제로 사용되는 방식으로 nosql 데이터베이스에 데이터를 저장할 수 있습니다.
예를 들어,이 예를 살펴보면 u는 주문이 많고 각 주문과 관련된 많은 항목이있는 고객 모델이 있고 나중에 구매할 때도 많은 저장 항목이있는 경우가 있습니다. 백만 주문. 그리고 고객은 대시 보드에 로그인하여이 정확한 데이터를 표시합니다. SQL 데이터베이스는 고객을 찾고 주문과 각 광고 항목 및 저장된 항목에 참여하는 데 얼마나 많은 작업을 수행해야하는지 보여줍니다. SQL 데이터베이스 에서이 모든 데이터는 어떤 방식으로 결합되어야 할 것입니다 ... 또는 u는 usercache라는 ur 데이터베이스에 컬렉션을 생성 하고이 데이터를 실제로 사용하는 방식으로 정확하게 저장할 수 있습니다. 따라서이 모든 데이터를 다시 가져 오기 위해 단일 필드 [id]에 대한 단일 쿼리 일 수 있습니다. 게다가 nosql 데이터베이스는
그렇다면 SQL DB는 nosql보다 빠르지 않은 한 단일 ID 필드를 빨리 쿼리 할 수 있습니까? 예. 그러나 SQL 데이터베이스는 하나의 테이블과 하나의 필드를 쿼리하여 필요한 모든 데이터를 반환 할 수 있습니까? 아니요, Json의 데이터를 큰 텍스트 필드 안에 저장하는 것과 같은 작업을 수행하지 않는 한. 그러나 이제는 향후 사용을 위해 데이터를 쿼리 할 수 없습니다.