2013-04-13 73 views
0

這是我的面試問題之一。有一個巨大的數據庫將持有數百萬員工記錄。我應該能夠基於任何字段如姓,名,年齡,位置等進行高效查詢,並且應該快速檢索結果。你將如何去設計數據庫。我根據索引等回答,但採訪並不滿意。有關這個設計如何實際完成的任何建議?高效檢索的數據庫設計

回答

0

我不確定問題的背景,但據我瞭解,您被問到有關數據建模的問題,而不是關於現有數據庫/查詢的「純」優化。

我會採用以下方法。一個企業可以擁有針對輸入新數據而優化的「操作數據庫」或OLTP(最小化的索引集,高度規範化)以及從規範化角度看具有大量冗餘的「決策支持數據庫」(數據倉庫,OLAP系統)但是可以讓你快速搜索不同的標準。從OLTP系統建模數據倉庫是一個相當重要的話題,需要深刻理解業務需求。

要回答關於通過員工搜索的問題,我建議構建一個簡單的星型模式(其中每個搜索條件由維度表格表示)。然後可以在模型的頂部添加適當的技術,如索引,分區,物化視圖。

0

這些要求建議考慮一個鍵值存儲給我,而不是傳統的SQL數據庫。

鍵值存儲將允許您執行相對非結構化的查詢(即,您不需要提前定義架構)並且設計用於非常快速的讀取。

實例:

  • Redis的

  • 卡桑德拉

  • 長椅

  • 的MongoDB

0

也許面試官想要一個關鍵詞:normalisation

世界上所有的指數都不會幫助規範化的數據庫 - 可能是問題中的「員工記錄」包含名稱,地址...,每個記錄和記錄都是項目,休假日,病假等。

我相信,這條線索是在'數以百萬計''員工'記錄中。即使是最大的政府部門也沒有'數百萬'的員工,所以數據庫沒有正常化。