2013-04-13 140 views
0

这是我的面试问题之一。有一个巨大的数据库将持有数百万员工记录。我应该能够基于任何字段如姓,名,年龄,位置等进行高效查询,并且应该快速检索结果。你将如何去设计数据库。我根据索引等回答,但采访并不满意。有关这个设计如何实际完成的任何建议?高效检索的数据库设计

回答

0

我不确定问题的背景,但据我了解,您被问到有关数据建模的问题,而不是关于现有数据库/查询的“纯”优化。

我会采用以下方法。一个企业可以拥有针对输入新数据而优化的“操作数据库”或OLTP(最小化的索引集,高度规范化)以及从规范化角度看具有大量冗余的“决策支持数据库”(数据仓库,OLAP系统)但是可以让你快速搜索不同的标准。从OLTP系统建模数据仓库是一个相当重要的话题,需要深刻理解业务需求。

要回答关于通过员工搜索的问题,我建议构建一个简单的星型模式(其中每个搜索条件由维度表格表示)。然后可以在模型的顶部添加适当的技术,如索引,分区,物化视图。

0

这些要求建议考虑一个键值存储给我,而不是传统的SQL数据库。

键值存储将允许您执行相对非结构化的查询(即,您不需要提前定义架构)并且设计用于非常快速的读取。

实例:

  • Redis的

  • 卡桑德拉

  • 长椅

  • 的MongoDB

0

也许面试官想要一个关键词:normalisation

世界上所有的指数都不会帮助规范化的数据库 - 可能是问题中的“员工记录”包含名称,地址...,每个记录和记录都是项目,休假日,病假等。

我相信,这条线索是在'数以百万计''员工'记录中。即使是最大的政府部门也没有'数百万'的员工,所以数据库没有正常化。