2014-04-23 4 views
-1

관계형 데이터베이스 작업 경험이 있고 최근에 MongoDB을 배우기 시작했습니다. 기본 질문이 있습니다.MongoDB 2.6.0 : 기본 삽입

테이블/컬렉션에 행/문서를 삽입한다고 가정합니다. 내가 볼 수있는 것은 : 관계형 데이터베이스에 대한

다음 insert 쿼리하지 table에 존재 않는 열을 포함

경우, 다음 삽입이 실패하고 오류가 발생합니다. 다른 Key를 들어

db.<CollectionName>.insert({"Key 1":"value 1", .... , "Key N":"value N"}) 


MongoDB를를 들어

는 새로운 FieldDocument에서 만들어지고 있습니다. 따라서 FieldCollection에 해당하는 수 (관계형 데이터베이스와 달리)에 제한이 없습니다. 이유는 무엇입니까?

1) 관계형 데이터베이스를 사용하면 장래성이 없어야합니다. 실수로 (실수로) 개발자가 다른 키 이름을 가진 레코드를 삽입하면 어떻게 될까요? 그러면 불필요하게 여분의 Field이 생성됩니까?

2) 에 몇 가지 특정 Field을 삽입 할 수 있도록 제한 할 수있는 방법 (이것이 MongoDB를 사용하는 올바른 방법인지 확실하지 않음)?

명확히 말하면, 나는 첫 수업 일에 상당히 혼란 스럽습니다.

+1

내 대답이 도움이되었는지 확실하지 않습니다. 나는 또한 MongoDB University (http://university.mongodb.com)를 연결하고자했습니다. 지금 Java 버전에 등록되었지만 DBAs 클래스 용 MongoDB가 있습니다. 무료이며 MongoDB가 관계형 데이터베이스와 다른 점과 그 이유를 비롯하여 모든 기본 사항을 배웁니다. – mttdbrd

답변

1

동일하지 않은 MongoDB의 키 이름이 일치하지 않습니다. 두 문서에 동일한 키/값 쌍이 다른 순서로 포함되어 있으면 일치하지 않습니다. MongoDB는 계획대로 설계되지 않았습니다. 디스크에서 전체 문서를 간단히 삽입하고 가져 오는 속도가 향상됩니다. MongoDB는 트랜잭션, 데이터 유효성 검사 등과 같은 복잡하고 시간 소모적 인 작업을 저장함으로써 성능과 확장 성을 얻습니다. 기본적으로 절감액은 개발자 (및 최종 사용자)에게 전달되지만 SQL/RDBMS가 실제 세계에서 작동하는 방식을 생각하면 어쨌든 응용 프로그램 개발자는 모든 종류의 유효성 검사를 수행해야합니다.

오타에 대한 질문 : 어떻게 키에 오타를 삽입 할 수 있습니까? 인간의 코드가 즉석에서 생성되고 있습니까? 컴파일 된 후에는 자신이나 다른 누군가가 수정하기 전까지 실행됩니다. (혹시라도) 불일치가 생기기 시작하면 오타가있는 문서를 쉽게 수정할 수 있습니다. Mongo는이 목적을위한 배경 업데이트도 있습니다.

MongoDB는 스키마가 없지만 코드는 사실상 스키마를 적용합니다. 그러나 당신의 불안은 필요하지 않습니다. Mongo는 문서를 쉽고 빠르게 검색하고 집계하는 정말 유연하고 강력한 집계 프레임 워크를 제공합니다.


편집 1 : 문서 당 16MB의 제한이 있으므로 영구히 키를 추가 할 수 없습니다. 언급되어야 할 생각.