2012-06-06 1 views
0

의 사용자 테이블을 설계하는 방법 :내가 hypertable 데이터베이스에서 다음 필드와 사용자 테이블을 설계 할 hypertable

rowkey  : (unique Guid) 
username  : (unique in the table) 
email  : (unique in the table) 
passwordHash : (string field) 
passwordSalt : (string field) 
firstName : (string field) 
lastName  : (string field) 

이제 rowkey는 사용자의 ID와 나는이 ID를 많이 참조 (hypertable에서 유일한 자동 기본 키 옵션은 guid입니다.) 변경된 경우 사용자 이름을 변경할 수 있기 때문에 내가 행 키로 사용자 이름을 사용하지 않는 이유는 내가 업데이트해야 할 것입니다. 전체 데이터베이스에 많은 것들이 있습니다. 동일한 역할이 전자 메일 필드에도 추가됩니다.

사용자는 사용자 이름이나 이메일을 사용하여 로그인 할 수 있습니다. 그래서 전체 행을 이메일 또는 사용자 이름으로 검색해야합니다.

이 표를 설계 할 수 있도록 도와주세요.

+0

왜 전자 메일을 행키로 사용하지 않습니까? 이것에 이상적입니다. 특히 전자 메일로 찾아야하는 경우에 특히 좋습니다. – Suman

+0

사용자가 전자 메일을 변경하면 모든 테이블의 모든 참조를 업데이트해야합니다. 나는 열쇠에서 변화하지 않을 어떤 가치가 필요하다. 나는 ID와 이메일 및 사용자 이름에 대한 quires의 동일한 금액을 갖습니다 – ygaradon

+0

아, 나는 전자 메일 변경 또는 사용자 이름뿐 아니라 볼 수 있습니까? 둘 중 하나 또는 둘 다를 변경할 수 있다면 HBase 또는 외부에서 색인을 사용해야합니다. – Suman

답변

1

하이퍼 링크 소스를 다운로드하거나 소스를 온라인으로 검색하면 트위터와 같은 마이크로 블로깅 사이트를 구현하는 PHP 예제 프로젝트를 찾을 수 있습니다. 기본적으로 요청한 사용자 테이블과 동일한 사용자 테이블을 구현합니다 (한 가지 차이점은 사용자 이름을 행 키로 사용함). 하지만 쉽게 변경할 수 있으며 대신 GUID를 사용할 수 있습니다.

(비록 사용자의 관점에서, 난 당신이 아주 드물게 사용자 이름을 변경할 생각하고, 나는 이메일 주소 변경. 이러한 기능을 제공하는 웹 페이지를 모르거나 위치는 물론 필요하다.) 여기

데이터베이스를 생성하는 스크립트입니다 ("프로필"표 찾기). https://github.com/cruppstahl/hypertable/blob/v0.9.5/examples/php/microblog/setup.hql

+0

트위터 예제에서의 문제점은 이메일이나 사용자 이름으로 사용자가 로그인하면 이메일이나 사용자 이름으로 쿼리해야하기 때문이다. guid (rowkey)가 아닌 입니다. 하이퍼 테이블은 열 지향 데이터베이스이므로 두 열에 대한 쿼리의 경우 가장 좋은 방법은 사용자 이름 및 전자 메일 열 필드에 열 한정자 기능을 사용하는 것입니다. 로그인 : 사용자 이름 로그인 : 전자 메일 을 입력 한 다음 " 계정에서 login = "username/email"을 선택하십시오. 그런 다음 행키를 찾아서 행키로 다시 쿼리하십시오. – ygaradon

+0

행 키로 사용자 이름 (또는 전자 메일)을 사용하면 유일한 문제는 모두를 복사해야한다는 것입니다 사용자가 사용자 이름 (또는 전자 메일)을 변경하자마자 그 행이 표시됩니다. 단점은 없지만 GUID를 사용하려면 사용자 이름 (또는 전자 메일)을 GUID에 매핑하는 하나의 열 패밀리 만 가질 수 있습니다. 셀 값은 사용자 이름을 포함하고 행 키는 GUID입니다. 'guid = "[email protected]" '그리고 행 키를 가져옵니다. "guid"열 패밀리에 보조 색인을 생성해야합니다. 이를 위해 열 한정어가 필요하지 않습니다. – cruppstahl

관련 문제