2012-11-27 3 views
0

죄송합니다. 이전에 질문을 받았다면 질문을 공식화하는 방법을 생각할 수 없었습니다.데이터베이스의 "항목"사용자를 효율적으로 쿼리하는 방법은 무엇입니까? (amazon SimpleDB)

저는 2 개의 도메인을 사용하는 데이터베이스 (특히 Amazon SimpleDB)가 있습니다.

  • 도메인 1에는 몇 가지 일반 정보가있는 사용자 목록이 있습니다.

  • 도메인 2는 항목 정보가있는 항목의 목록입니다.

나는,이 경우, 각 항목은 (1) 사용자에 속할 수 있습니다 도메인 1에서 특정 사용자에게 속하는 모든 항목, 도메인 2가에서 속성 때문에 하나를 조회 할 수 있도록하려면 사용자 ID.

이 때까지 내가 최선의 선택은이 사용자가 (등 항목 1 & & 항목 2 & & 항목 3 & & ... 같은)를 가지고있는 항목의 목록과 단지 쿼리 도메인 1의 속성을 유지하는 것이라고 생각을 알고 이 속성에 대해. 어느 것이 내가 매우 효율적으로 만들 것이라고 생각하지만, 속성 제한이 1024 바이트이기 때문에 결국에는 공간이 부족할 것입니다 (내 항목 이름이 약간 길기 때문에).

이 경우 나는 모든 사용자 항목을 가져올 때마다 Domain2에서 "select * where userID = something"을 수행해야한다고 생각했지만 어떻게 든 이렇게 효율적으로 보이지 않습니다. (로컬 장치가 쿼리해야하는지 또는 최신 버전이 로컬에 있는지를 확인하기 위해 도메인 1의 항목과 마지막으로 업데이트 된 항목을 계속 유지할 수 있습니다.)

모든 조언은 훌륭합니다!

(또는 내가 데이터베이스에 유래이 물어해야합니까?)

답변

0

내가하지만, 데이터베이스 관점에서, 아마존-SimpleDB에 대해 알고하지 않습니다, 당신은 두 개의 테이블을 가지고 : 첫 번째 사용자 아마도 매장의 테이블 적어도 사용자 ID와 사용자 이름; 두 번째 항목은 항목 ID, 항목 이름 및 현재 소유자/사용자를 저장하는 ITEMS 테이블입니다.

사용자가 소유 한 항목 목록을 사용자 목록의 구분 된 목록에 저장하지 않으려는 경우. 이 목록을 횡단하면 고통 스러울 것입니다. 그 외에도 items 테이블에 이미있는 데이터 (사용자가 소유 한 항목)가 있습니다. 너무 걱정하지 않는 표준 SQL에서

, 당신은 수백만 개의 항목이있는 테이블을 처리하는 내장되어 특정 사용자가

select items.name 
from items inner join users 
on items.user = users.id 
where users.username = 'Luis' 

표준 데이터베이스를 소유하고있는 항목의 목록을 검색하려면 다음 쿼리를 작성합니다 효율성 (적어도 적절한 색인을 추가하는 한, items 테이블의 'user'필드에 색인이 필요합니다).

관련 문제