2011-11-27 4 views
1

내 프로젝트에서 카산드라를 사용하며 사용자 (이메일, 사용자 이름, 비밀번호, 이름 및 기타 추가 정보)에 대한 정보를 저장해야합니다. 이 데이터는 인증 목적으로도 사용됩니다.카사 드라의 사용자 정보 저장

저는 Cassandra의 데이터 모델을위한 데이터베이스를 디자인하는 데있어서 새로운 기술입니다. 그래서이 일을 제대로했는지 이해하기 위해서는 당신의 도움이 필요합니다.

"users"라는 키 공간이 있습니다. 이 키 공간에서 사용자의 전자 메일을 기본 키로 사용합니다. 나는 다음과 같은 컬럼 계열을 가지고있다 : 이름, 성, 사용자 이름, 암호.

주요 질문은 다음과 같습니다. 전자 메일을 키로 사용하는 것이 좋은 생각입니까?

비밀번호 - MD5 해시를 저장하는 것이 좋습니까? 아니면 더 나은 방법이 있습니까?

UPD 위의 내용이 잘못되었습니다. 내 말은 - 데이터베이스 "Test"와 같은 하나의 키 공간, 하나의 열 패밀리 "사용자"- 각 사용자의 속성에 대한 사용자 정보 및 많은 별도의 열 모음.

답변

3

전자 메일을 키로 사용하는 것이 사용자를 조회하는 방법과 전자 메일이 고유 할 경우 유용합니다. 사용자 이름으로 사용자를 조회하고 사용자 이름이 고유 한 경우 사용자 이름을 키로 사용하십시오. 사용자 이름과 전자 메일로 조회해야하는 경우 사용자 이름 -> 전자 메일을 매핑하는 두 번째 열 패밀리가 필요합니다.

일반 텍스트 암호를 저장하지 마십시오. 비밀 번호와 소금의 md5를 저장하는 것만으로는 충분하지 않습니다. this post

+0

게시 한 링크가 더 이상 유효하지 않습니다. 웹 사이트를 검색 할 때 다음 URL에서 참조 된 게시물을 찾았습니다. https://www.nccgroup.trust/us/about-us/newsroom-and-events/blog/2007/july/enough-with-the-rainbow- 안전한 비밀번호 체계/ –

+0

또한 새로운 블로그 게시가 나타납니다. 참조 된 게시물 (2015 년 3 월과 2007 년 7 월)보다 훨씬 최신 인 https : //www.nccgroup.trust/us/about-us/newsroom-and-events/blog/2015/march/enough-with-the-salts-updates-on-secure-password-schemes/ –

3

사용자의 각 속성에 대해 별도의 열 패밀리가 필요하지 않습니다. 당신은 예를 들어, 여러 열이 단일 열 가족 모두를 넣을 수 있습니다 :

key -> firstname lastname username password 
     John   Smith  jsmith  1AB3C4GA16GH134G 

디자인은 당신이 원하는 조회에 따라 달라집니다. 자신의 전자 메일 주소로 사용자를 조회하기 만하면 제안한 내용이 문제가되지 않습니다. 그러나 사용자가 이메일 주소를 변경하면 어떻게됩니까? 사용자 이름이 고정되면 사용자 이름을 입력하는 것이 더 간단 할 수 있습니다 ...

[UPDATE] 항상 모든 사용자 데이터를 한 번에 검색하고 키로 데이터를 검색하는 경우 모든 정보를 저장할 수 있습니다 단일 열에 JSON 또는 이와 유사한 형태로 포함됩니다. 그러나 이름, 사용자 이름 등으로 사용자를 찾는 능력이 손실됩니다.

+0

맞습니다! 열 가족이 많은 경우 - 잘못 인쇄 된 것입니다. 내 말은 - 하나의 키 스페이스 Test (db), 하나의 열 패밀리 "사용자"및 각 개인 속성에 대한 많은 별도의 열을 의미합니다. – dizpers