2011-07-04 3 views
2

기업, 사용자, 시계열 데이터와 같은 다양한 개체에 태그를 추가한다고 가정 해 보겠습니다. 나는 같은 검색어를 원할 것입니다. X 태그가있는 회사를 찾으십시오.NoSQL 데이터베이스를 사용할 때 조인 개체를 만드는 것이 합리적입니까?

이제 모든 객체에 태그 행을 추가 한 다음 쿼리에 대한 답변을 MapReduce로 추가 할 수 있습니다.

또는 내가 행을 취소하고 다른 OBJECTID (예를 들어 Company, User, TimeSeries)와 Tag OBJECTID를 연결할 것 TagAssociation 개체를 만들 수 있습니다. 그런 다음 MapReduce를 사용하지 않고 이러한 쿼리를 더 빨리 수행 할 수있었습니다. 하지만 친숙한 NoSQL 인터페이스로 RDBMS를 사용하고있는 것처럼 느껴집니다. NoSQL의 이러한 조인 객체가 합당한 방법인가, 아니면 NoSQL을 적절히 사용하지 않는 것입니까?

답변

1

설명하는 것은 실제로 색인입니다. 쿼리 속도를 높이기 위해 미리 특정 태그가있는 항목 목록을 저장합니다. 색인을 설정하는 것이 쉽고/더 관용적 인 방법이 있습니다.

또한 TagAssociation 객체를 쿼리하는 방법에 대해 생각해 보셨습니까? MapReduce를 사용하여 Tag 및 Company 속성을 쿼리하지 않습니까?

+0

네, 각각의'TagAssociation' 객체가'하나 taggable 객체의 ObjectID' ('회사','User','TimeSeries')하고있을 것'ObjectID' '개체. 따라서 쿼리는 태그 필드에이'ObjectID'를 가진 모든'TagAssociation' 객체를 찾는 것과 같습니다. 그런 다음 MapReduce없이 * X * 태그가있는 모든 항목을 찾습니다. 어떤 의미에서는 인덱스라고 생각합니다. 저는 SQL 데이터베이스에서 비정규 화와 유사하다고 항상 생각했습니다. 그리고 제가 잘못하고 잘못했는지 천천히하는지 궁금합니다. 모든 도움에 감사드립니다! –

+0

이것이 보조 색인이라고 들었습니다. –

1

일반적으로 대용량 데이터 세트에는 map/reduce가 사용되며이 정보 유형이 필요하지 않습니다. 사람들은 자체 색인을 설정합니다 (때로는 현재 데이터에서지도/축소).

또 다른 방법은 조인 등을 할 수있는 playOrm입니다 (그러나 전체 테이블이 아닌 파티션에서). 이런 식으로 1 월의 파티션을 가져 오거나 1234 계정의 파티션을 가져 와서 일반 SQL을 사용하여 쿼리 할 수 ​​있다면 다른 것과 결합하십시오. playOrm은 무의미한 일반적인 noSQL 색인 패턴을 사용하여 색인을 생성합니다. 나중에

, 딘 한`태그의

관련 문제