查看更多当前 - 案例分析 - 数据库系统
简单
案例题
2017年5月第4题
#必须掌握
#超纲

阅读以下关于数据库分析与建模的叙述,在答题纸上回答问题1至问题 3。

某电子商务企业随着业务不断发展,销售订单不断增加,每月订单超过了50万笔,急需开发一套新的互联网电子订单系统。同时该电商希望建立相应的数据中心,能够对订单数据进行分析挖掘,以便更好地服务用户。
王工负责订单系统的数据库设计与开发,初步设计的核心订单关系模式为:
orders(order_no,customer_no ,order_date,product_no,price,......);
考虑订单数据过多,单一表的设计会对系统性能产生较大影响,仅仅采用索引不足以解决性能问题。因此,需要将订单表拆分,按月存储。
王工采用反规范化设计方法来解决,给出了相应的解决方案。李工负责数据中心的设计与开发。李工认为王工的解决方案存在问题,建议采用数据物理分区技术。在解决性能问题的同时,也为后续的数据迁移、数据挖掘和分析等工作提供支持。

分值(8分

常见的反规范化设计包括增加冗余列、增加派生列、重新组表和表分割。为解决题干所述需求,王工采用的是哪种方法?请用300字以内的文字解释说明该方法,并指出其优缺点。

参考答案

王工采用的是表分割的方式进行反规范化设计。
表分割包括水平分割与垂直分割两种形式:
水平分割:根据一列或多列数据的值把数据行放到两个独立的表中。
垂直分割:把主码和一些列放到一个表,然后把主码和另外的列放到另一个表中。
优点:
(1)表分割的方式将数据分布到多个逻辑与物理上均独立的不同的表。对于电子商务中的订单,最频繁的操作针对的是当月的订单表,表分割后有效地减少了操作表(即当月订单表)的记录数,可有效提升性能。同时按月进行表分割后,也可以针对各月份数据进行管理,有利于数据迁移、备份和管理。
缺点:
(1)表分割的方式从逻辑上破坏了关系概念的完整性,由一个关系变为多个关系。因此,进行历史数据的数据挖掘和分析时,必须执行多表集合并操作,相对于单表形式,复杂度较高,增加了数据维护的难度,应用软件设计和实现也更为复杂。

凯恩解析

王工采用的表分割是反规范化设计的一种常见方式。表分割的目的是通过拆分表格来减轻数据库负载,提升性能。具体来说,表分割包括水平分割垂直分割两种形式。

  1. 水平分割:水平分割是将数据按某一列的值(例如时间)分割成多个表,例如按月将订单数据存储到不同的表中。查询当月订单时,只需要访问相应月份的表,从而避免了全表扫描,提升了性能。
  2. 垂直分割:垂直分割则是将表中的列根据业务需求分割到不同的表中。例如,一个订单表中可能包含客户信息、商品信息等,垂直分割后,客户信息和商品信息可以分别存储到不同的表中。

优点是

  • 提升查询性能:由于每个分割后的表包含的数据量较小,查询时无需扫描整个表,减少了查询时间,尤其是在处理大数据量时效果显著。
  • 数据管理灵活:每个表的数据量相对较小,便于进行管理,如备份、恢复、迁移等。按月分割后,每个月的数据可以独立处理,有助于提高系统的可扩展性。

缺点是

  • 破坏数据的完整性:表分割后,数据的完整性和一致性管理变得更为复杂。跨表查询时需要进行集合操作,这增加了查询的复杂度。
  • 维护困难:随着时间推移,分割后的表越来越多,DBA需要手动维护分表策略,特别是在查询历史数据时,跨表查询可能会增加系统的负担。
联系我们
隐私协议
用户协议
微信公众号
知乎
小红书
浙ICP备2021029036号
@2022-2026
嘉兴市安芯网络科技有限公司 版权所有