나는 그들이 문서를 연결하는 링크를 사용한다고 문서 OrientDB 페이지 http://www.orientechnologies.com/orientdb-vs-mongodb/에서링크
을 연결하는 용어 '링크'와 혼동입니다.
MongoDB http://docs.mongodb.org/manual/core/data-modeling-introduction/에서 문서를 참조 할 수 있으므로 문서를 연결하거나 참조하는 데 차이가 없습니다.
나는 그들이 문서를 연결하는 링크를 사용한다고 문서 OrientDB 페이지 http://www.orientechnologies.com/orientdb-vs-mongodb/에서링크
을 연결하는 용어 '링크'와 혼동입니다.
MongoDB http://docs.mongodb.org/manual/core/data-modeling-introduction/에서 문서를 참조 할 수 있으므로 문서를 연결하거나 참조하는 데 차이가 없습니다.
문서 지향 데이터베이스의 목표는 런타임시 메모리에있는 실제 개체의 일종의 데이터베이스 스키마와 일치하도록 데이터가 분할되는 정도 인 "임피던스 불일치"를 줄이는 것입니다. 문서를 사용하면 여러 개체를 여러 테이블로 분할하지 않고 전체 개체를 디스크에 직렬화하고 검색 할 때 다시 결합 할 수 있습니다.
링크 된 문서는 참조 된 문서와 동일합니다. 그것들은 단순히 같은 것을 말하는 두 가지 방법 일뿐입니다. 쿼리시 이러한 링크가 어떻게 처리되는지는 데이터베이스 구현마다 다릅니다.
말하자면, 임베디드 문서는 단순히 부모 내부의 부모 유형과 관련된 객체 유형을 저장하는 행위입니다.
Achievement
는 임의의 클래스입니다
class User
{
string Name
List<Achievement> Achievements
}
(그 내용이 예를 들어 문제가되지 않습니다) : 예를 들어, 다음과 같이 I 클래스가 있습니다. 나는이 사용하여 링크 된 문서를 저장한다면
, 나는 성과 모음의 Achievement
객체에 대한 링크가있는 사용자에 대한 성과의 목록이있는 성과 모음의 사용자 컬렉션에서 User
및 Achievement
을 저장합니다. 데이터베이스 엔진 자체에서 일종의 결합 절차가 필요합니다. 그러나 포함 된 문서를 사용하는 경우 User
문서 내에 Achievements가있는 사용자 컬렉션에 User
을 저장하면됩니다. 포함 된 문서에 대한 데이터의
JSON 표현은 다음과 같이 (약) 보일 것이다
{
"name":"John Q Taxpayer",
"achievements":
[
{
"name":"High Score",
"point":10000
},
{
"name":"Low Score",
"point":-10000
}
]
}
을 링크 된 문서가 같은 것을 보일 수있는 반면 : { "이름": "존 Q 납세자를 " "성과 " [ "somelink1 ","somelink2 " ] }
성과 컬렉션 {내부"somelink1" { "이름": "높은 점수", "포인트": 10000 } "somelink2" { "이름": "높은 점수", "포인트": 10000 } }
다음은 대략적인 표현입니다.
요약하면 링크 된 문서는 RDBMS PK/FK 관계와 매우 유사합니다. 이를 통해 하나의 콜렉션에있는 여러 문서가 다른 콜렉션의 단일 문서를 참조 할 수 있으므로 저장된 데이터의 중복 제거에 도움이됩니다.그러나 데이터베이스 엔진이 여러 개의 디스크 I/O 호출을 수행하여 최종 문서를 구성하여 사용자 코드에 반환해야하는 복잡성이 추가됩니다. 임베디드 문서가 메모리의 객체와 더 가깝게 일치하므로 임피던스 불일치가 줄어들고 (이론적으로) 디스크 I/O 호출 수가 줄어 듭니다.
현재 임피던스 불일치에 읽을 수 있습니다 http://en.wikipedia.org/wiki/Object-relational_impedance_mismatch
UPDATE
나는 추가해야합니다, 당신의 요구에 구현 할 수있는 권리 데이터베이스를 선택하는 것이 처음부터 매우 중요하다. 각 데이터베이스에 대해 많은 질문이있는 경우 각 공급 업체에 문의하여 교육 자료를 얻는 것이 좋습니다. MongoDB는 MongoDB University에서 자신의 제품과 최상의 사용법에 대해 더 많은 것을 배우기 위해 취할 수있는 2 가지 무료 강좌를 제공합니다. OrientDB는 교육을 제공하지만 무료는 아닙니다. 직접 연락하여 사전 판매 교육을받는 것이 가장 좋을 수도 있습니다 (DB 라이센스를 얻으려는 경우) 일반적으로 사전 판매 컨설턴트와 연락하여 제품 평가에 도움을줍니다 .
MongoDB는 객체 ID가 외래 키와 같은 RDBMS와 유사합니다. 이는 런타임에 비용이 많이 드는 "JOIN"을 의미합니다. 대신 OrientDB에는 한 번만 생성되고 런타임 비용이 매우 낮은 직접 링크가 있습니다.