
是根据主要查询条件,水平分表。例如,用户关系表, 根据用户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)进行分库,或者按照业务功能块进行分库。水平分库方式主要根据用户属性(如地市)拆分物理数据库。一种常见的方式是将全省划分为个大区。
垂直分库方式:根据业务维度和数据的访问量等,进行数据的分离,剥离为多个数据库。例如,将一些公用的配置信息存储到一个数据库中进行单独维护。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)