2010-12-15 6 views
64

저는 MySQL을 사용하여 Ruby on Rails 애플리케이션을 구축했습니다.MongoDB 대 MySQL

현재 MongoDB는 점점 더 유명 해지고 있습니다. 이제는 시험해보기 시작했습니다.

문제는 내가 그래서 MySQL의 + 액티브 사용 사이의 성능 비교를하고 싶은

(그건 문제가있는 경우 mongoid 보석을 사용하고 있습니다) MongoDB를 작동하는 방법의 기본 이론을 모르는입니다 mongoid gem이 생성 한 모델은 누구나 알아낼 수 있습니까?

+7

http://www.xtranormal.com/watch/6995033/mongo-db-is-web-scale – dkroy

답변

55

What the heck are you actually using NoSQL for?이라는 제목의 문서는 NoSQL을 사용하는 장단점을 제시하는 데 아주 능숙합니다.

편집 : 또한 너무

재 편집을 http://blog.fatalmind.com/2011/05/13/choosing-nosql-for-the-right-reason/ 블로그 게시물을 읽어 : 내가 읽은 바로는 What’s left of NoSQL?

+1

제목이 암시 하듯이 NoSQL 구현을 사용하는 경우의 세부 사항이나 세부 사항에 대해서는 알지 못하지만 사례는 상당히 잘 만들어졌습니다. 할 수 있거나 최신 동향 또는 윙윙 거리는 단어/용어/기술을 사용하기 때문에 무언가를 사용하지 마십시오. 아마도 당신이 가지고있는 도구가 완벽하게 잘 작동하지만, 제대로 사용하지 못했을 것입니다. 속담처럼 : 나쁜 일꾼은 그의 도구를 비난합니다. 어느 쪽이든, 이야기의 도덕은 자리에 있습니다. –

+2

@MattSetter가 말했듯이, 당신이 할 수 있거나 트렌디 한 이유로 뭔가를 사용하지 마십시오. 나는 이것을 추가 할 것이다 : 대부분의 데이터는 관계형이나 문서 기반이 아니기 때문에 MongoDB는 확장하기가 쉽다. – wprl

8

나는 근본적인 이론을 많이 모른다. 그러나 이것은 내가 얻은 충고이다. MongoDB를 여러 서버에 걸쳐 실행하면된다. 그것이 빛날 때입니다. 내가 아는 한, NoSQL의 움직임은 여러 서버에서로드 균형 조정 관계형 데이터베이스의 고통으로 인해 거의 나타나지 않았습니다. 따라서 하나 이상의 서버에서 애플리케이션을 호스팅한다면 MySQL이 선호됩니다.

Doctrine project의 선량한 사람들은 최근에이 주제에 매우 유용한 blog post을 썼습니다.

+0

MongoDB에 여러 기능이있어 여러 서버에 더 적합합니다. ? – PeterWong

+0

많은 검색 솔루션과 마찬가지로 MongoDB는 "샤딩"을 사용합니다. 이는 여러 서버에서 데이터 범위를 분할하는 방법입니다. 또한 MongoDB는 관계형 데이터베이스의 많은 데이터 무결성 기능이 없기 때문에 두 개 이상의 서버 (마스터 및 슬레이브)에서 실행해야합니다. http : //en.wikipedia.org/wiki/MongoDB – Henrik

+1

관계형 데이터베이스는 샤딩을 지원합니다. NoSQL 솔루션은 트랜잭션을 지원하지 않으며 플러시 레코드에서 디스크로 자주 실패합니다. 데이터 일관성이 필요한 곳에서 사용하는 것이 좋습니다. –

3

: 내가 관련이 생각이 주제에 (2014 년 출판) 최근의 자료를 발견 지금까지 ... 여기에 그것이 있습니다.

표준 SQL은 기능이 풍부하기 때문에 성능이 저하됩니다. 즉, 여러 가지 중에서도 데이터 집합 (테이블/컬렉션)에서 조인 및 트랜잭션을 수행 할 수 있습니다.

이렇게하면 응용 프로그램 개발자가 응용 프로그램의 복잡성을 데이터베이스 계층으로 밀어 넣을 수 있습니다. 이는 데이터 무결성과 입증 된 기술에 의존하는 응용 프로그램의 나머지 ACID 속성에 대해 걱정할 필요가 없다는 장점이 있습니다. 극단적 인 확장 성의 부족은 예상되는 시간 제한 내에 응용 프로그램을 유지 관리 할 수있는 한 모든 프로젝트에서 효과적입니다. 따라서 고성능/고가의 관계형 데이터베이스 시스템을 구매해야하는 경우가 있습니다.

한편 Mongo DB는 관계형 데이터베이스와 관련된 본질적인 복잡성을 의도적으로 배제합니다. 확장 성이 뛰어난 성능을 제공합니다.

이 접근법은 응용 프로그램 개발자가 관계형 기능 부족을 해결하기 위해 응용 프로그램을 다시 설계하도록 강요합니다. 그 자체는 좋은 점이 있지만, 확장 성이 있다면 일반적으로 그만한 가치가 있습니다. 요구 사항. 데이터 요구 사항에 따라 MongoDB에서 ACID 속성을 사용하면 응용 프로그램이 필요에 따라 세우고 처리해야합니다.

+0

당신은 일반적으로 옳았 습니다만, Mongo는 문서 레벨에서 "주로"ACID를 준수하고 있음을 지적하고자합니다. 조인은 악마입니다. 데이터베이스 설계를 계획하여 여러 문서에 대한 조인 또는 쓰기의 필요성을 피하면 이러한 잠재적 인 함정을 모두 덜 문제가 될 수 있습니다. 스키마 정의는 앱에서 수행되지만 라이브러리를 사용하여 수행 할 수 있으므로 예를 들어 스키마 정의와 너무 다르지 않습니다. hibernate.xml 파일 (예를 들어, 스키마 정의가 데이터베이스가 아닌 앱에 적용됨). – wprl