数据库反范式化表设计和表的垂直和水平拆分什么意思?

数据库反范式化表设计和表的垂直和水平拆分什么意思?,第1张

1.水平拆分:

是根据主要查询条件,水平分表。例如,用户关系表, 根据用户id:

用户id为 1, 2, 3, 4,5 的五个用户,采用取模的方式水平分表。将uid mod 3,取余数

这样,id为1,4的用户就在 t_user_1 的表里, id 为2,5 的用户在 t_user_2的表里,id为3的就在t_user_3的表里。这样,所有用户就平均水平分布在三个表里。

查询时,根据查询条件,动态算出,该用户信息存储在哪个表里

2.垂直拆分:

是根据数据量进行分表。例如,网购订单表:

数据量过大,可能单表几千万条数据。那么,垂直分表, 将id为1-1000000放在第一张表里。

将id 1000000-2000000的放在第二张表里。这样,就实现了垂直分表。

查询时,根据查询条件,动态算出,该订单信息存储在哪个表里

同样可以,水平分库, 垂直分库。 也可以两者相结合,形成数据库矩阵集群。 数据表的矩阵。

数据库范式

目前关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、第四范式(4NF)和第五范式(5NF,又称完美范式)。

具体可查看:http://baike.baidu.com/link?url=JlYxe21nUpGPzKprX5xF5SZRKop23u9OnXAaZNdtFBEAM4oCKxWgFtCgC8QhCYlE8oSFRatUvhPptcmwVSWfG_

为了维持范式,会降低数据库的查询性能,大量冗余信息等。在实际生产环境,很多情况下,不能去实现这种范式,所以要违反范式的定义,就是反范式数据库设计。

范式只是一个理想化状态,仅用于关系型数据库。

常见的分库方式有水平性和垂直性。一般来说,就是按照用户属性(地市或者ID的hash)进行分库,或者按照业务功能块进行分库。

水平分库方式主要根据用户属性(如地市)拆分物理数据库。一种常见的方式是将全省划分为个大区。

垂直分库方式:根据业务维度和数据的访问量等,进行数据的分离,剥离为多个数据库。例如,将一些公用的配置信息存储到一个数据库中进行单独维护。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9985551.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-04
下一篇2023-05-04

发表评论

登录后才能评论

评论列表(0条)

    保存