2011-11-27 105 views
1

我在我的項目中使用Cassandra,並且需要存儲有關用戶(電子郵件,用戶名,密碼,名字和其他信息)的信息。這些數據也用於授權目的。Cassandra中的用戶信息存儲

我是設計Cassandra數據模型數據庫的新手。所以,我需要你的幫助來了解我是否正確地做到了這一點。

我有名爲「users」的密鑰空間。在這個密鑰空間中,我使用用戶的電子郵件作爲主鍵。我有以下專欄系列:名字,姓氏,用戶名,密碼。

主要問題如下:使用電子郵件作爲這個關鍵是個好主意嗎?

對於密碼 - 存儲它的MD5哈希值是否好,還是有更好的做法呢?

UPD 我上面有誤印。我的意思是 - 一個密鑰空間作爲數據庫「測試」,一個列家族「用戶」 - 用戶信息的收集和每個用戶財產的許多單獨的列。

回答

3

使用電子郵件作爲關鍵是很好,如果這是你如何查找你的用戶和電子郵件是唯一的。如果您通過用戶名和用戶名查找您的用戶是唯一的,那麼請使用用戶名作爲密鑰。如果您需要通過用戶名和電子郵件進行查找,那麼您需要第二個列族來映射用戶名 - >電子郵件。

不要存儲明文密碼。即使存儲密碼和鹽的md5也是不夠的。請參閱this post

+0

您發佈的鏈接看起來不再有效。在網站上搜索引用的帖子,網址如下:https://www.nccgroup.trust/us/about-us/newsroom-and-events/blog/2007/july/enough-with-the-rainbow-你需要知道的關於安全密碼方案/ –

+0

此外,似乎還有一篇新的博客文章 - 比參考文章(2015年3月和2007年7月)的當前更多:http ://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 

的設計取決於你想做的事情查找。如果您只需要通過電子郵件地址查找用戶,那麼您提出的建議就很好。但是,當用戶更改其電子郵件地址時會發生什麼?如果用戶名是固定的,那麼鍵入用戶名可能會更簡單...

[更新]如果您總是一次檢索所有用戶數據,並且您只通過鍵檢索數據,那麼您當然可以存儲所有信息嵌入到單個列中,如JSON或類似內容。但是,您因此失去了通過名稱,用戶名等查找用戶的能力。

+0

你是對的!關於很多專欄 - 這是錯誤打印。我的意思是 - 一個密鑰空間測試(db),一個列族「用戶」以及每個人物業的許多獨立列。 – dizpers