2013-11-21 3 views
0

나는 Mongo와 Java 드라이버 및 Morphia를 사용합니다. 그것이 내가 대신 "transactionUniqueIdentifier"의 "UUID"(짧은 속성 이름을 사용한다는 의미 하는가 나는 몽고가 {transactionUniqueIdentifier: "xjeer"}MongoDB : 긴 속성 이름은 더 큰 문서를 만들고 더 많은 메모리를 사용합니까?

같은 형태로 트랜잭션을 저장 콘솔에서 볼

public class Transaction { 

    @Id 
    private ObjectId id; 
    private String transactionUniqueIdentifier; 

} 

:이 클래스를 매핑하고) 작은 데이터베이스를 얻으려면? 또는, 나를 위해 그걸 처리 할 Mongo의 설정이 있습니다 (내부적으로 더 짧은 이름을 ...).
모든 포인터가 감사하겠습니다.

답변

1

morphia의 경우 문서 속성 이름이 기본적으로 Java 필드 이름과 일치합니다. 이름을 지정할 수는 있지만 @Property 어노테이션을 사용하여 mongodb로 직렬화하고 싶거나 원하는 이름을 제공하고 싶습니다.

+0

아마도 분명하지만 : @Property로 주석 처리 된 속성이 있어도 여전히 내 쿼리 할 수 ​​있습니다. 원래 Java 이름을 사용하는 doc? – seinecle

+0

예. Morphia는이를 적절하게 매핑합니다. – evanchooly

+0

@Property 주석을 많이 사용하지만 동일한 필드에 대해 두 가지 이름이 있으므로주의해야합니다. Java 필드 이름에도 uuid를 사용하는 것이 더 낫지는 않을까요? –

2

MongoDB에는 필드 이름의 내부 매핑이 없습니다.

더 짧은 이름을 만들지 여부는 Map Reduce에서 문서 사용, 서버의 전체 문서 크기 및 하드웨어를 포함하여 여러 가지 사항에 따라 다릅니다. 문서는지도에서 쉽게 처리 할 경우

예를 들어 transactionUniqueIdentifier보다는 uuid를 사용 줄이고 문서가 매우 작은 (의는 5킬로바이트 각각에 대해 가정 해 봅시다) 당신은 필드 이름의 다음 축소 (아마 실제로 필요하지) SSD를이 거의 쓸모 없게된다.

일부 사람들은 실제 사용이 아니라면 더 큰 걱정거리가 있다고 주장합니다.

그러나 긴 이름을 가진 많은 필드가 있거나 더 긴 이름을 가진 경우 transactionUniqueIdentifier보다 긴 이름을 사용하면 필드 이름을로드하는 데 대부분 시간을 할애 할 수 있습니다. 필드 값이 문서 값의 전체 크기보다 커지기 때문에 실제 값을로드하는 대신 디스크에서 문서를 가져옵니다.

아직 필드 이름을 압축 할 계획이 있지만 다른 기능이 우선적으로 적용됩니다.

+0

감사합니다. 나의 유스 케이스는 내가 가지고있는 하드 드라이브에 DB를 적합하게하고 싶다. 나는 쿼리의 속도에 대해 걱정할 필요가 없다. 데이터를 가져 오는 CSV 파일은 작고, MongoDB는 내가 가져온 파일이다. 비교에서 거대하다. 나는이 긴 Strings의 속성 이름에 대한 반복이이 거대한 크기의 db에 대한 이유라고 생각했습니다. 실제로 이것이 역할을한다는 것을 확인했습니다. – seinecle

+1

@seinecle 실로 그 여분의 정보로 당신은 방금 "거대한"부분이 분명히 그 필드 이름이라고 말할 것입니다. – Sammaye