Database design 高效检索的数据库设计

Database design 高效检索的数据库设计,database-design,relational-database,Database Design,Relational Database,这是我的面试问题之一。有一个巨大的数据库,它将保存数以百万计的员工记录。我应该能够有效地查询任何字段,如名字,姓氏,年龄,位置等,结果应该很快检索。您将如何着手设计数据库。我的回答基于索引等,但面试不满意。关于如何实际完成此设计,有什么建议吗?我不确定问题的背景,但据我所知,您被问及的是数据建模,而不是现有数据库/查询的“纯”优化 我将采用以下方法。企业可以有“操作数据库”或OLTP(针对输入新数据进行了优化)(最小索引集,高度规范化)和“决策支持数据库”(数据仓库,OLAP系统),从规范化的角

这是我的面试问题之一。有一个巨大的数据库,它将保存数以百万计的员工记录。我应该能够有效地查询任何字段,如名字,姓氏,年龄,位置等,结果应该很快检索。您将如何着手设计数据库。我的回答基于索引等,但面试不满意。关于如何实际完成此设计,有什么建议吗?

我不确定问题的背景,但据我所知,您被问及的是数据建模,而不是现有数据库/查询的“纯”优化

我将采用以下方法。企业可以有“操作数据库”或OLTP(针对输入新数据进行了优化)(最小索引集,高度规范化)和“决策支持数据库”(数据仓库,OLAP系统),从规范化的角度来看,这两个数据库有很多冗余,但允许您快速按不同的标准进行搜索。从OLTP系统建模数据仓库是一个相当大的主题,需要对业务需求有深入的理解


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

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

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

示例:

  • 雷迪斯

  • 卡桑德拉

  • 沙发

  • 蒙哥达


    • 也许面试官想要一个关键词:
      正常化

      世界上所有的索引都不会帮助一个正常化的数据库——也许有问题的“员工记录”包含姓名、地址。。。每一份记录上都有项目、假期、病假等记录

      我相信,线索就在“数百万”员工记录中。即使是最大的政府部门也没有“数百万”员工,因此数据库也没有正常化