这是我的面试问题之一。有一个庞大的数据库将保存数百万条员工记录。我应该能够有效地根据名字、姓氏、年龄、位置等任何字段进行查询,并且应该快速检索结果。您将如何设计数据库。我根据索引等回答,但面试不满意。关于这个设计是如何完成的有什么建议吗?
问问题
85 次
3 回答
0
这些要求建议我考虑使用键值存储而不是传统的 SQL 数据库。
键值存储将允许您进行相对非结构化的查询(即您不需要提前定义模式)并且专为非常快速的读取而设计。
例子:
雷迪斯
卡桑德拉
长椅
MongoDB
于 2013-04-13T15:00:27.183 回答
0
也许面试官想要一个关键词:normalisation
世界上所有的索引都不会帮助一个非规范化的数据库——也许有问题的“员工记录”包含姓名、地址……在每条记录上,记录是项目、假期、病假、等等
我相信,线索就在“数百万”“员工”记录中。即使是最大的政府部门也没有“数百万”员工,因此数据库没有标准化。
于 2013-04-14T06:19:21.797 回答
0
我不确定问题的上下文,但据我了解,您被问及数据建模,而不是现有数据库/查询的“纯”优化。
我会采用以下方法。企业可以拥有针对输入新数据(最少的索引集,高度规范化)进行优化的“操作数据库”或 OLTP,以及从规范化角度来看具有大量冗余的“决策支持数据库”(数据仓库、OLAP 系统),但允许您非常快速地按不同的标准进行搜索。从 OLTP 系统建模数据仓库是一个相当大的话题,需要深入了解业务需求。
为了回答有关通过员工搜索的问题,我建议构建一个简单的星型模式(其中每个搜索条件由一个维度表表示)。然后可以在模型之上添加适当的技术,如索引、分区、物化视图。
于 2013-04-13T14:57:11.883 回答