分布式数据库:
数据库应该常注意的点:
1、事务
2、主从同步
3、分库
4、分表
5、数据库恢复和备份
6、数据库复制
7、垂直拆分和水平拆分 (分库和分表)
垂直拆分: 根据业务,把不同业务的表,拆分到不同的数据库中。
水平拆分: 把同一个表中的数据,拆分到两个或者多个数据库中。多个数据库中的表结构是一模一样的,数据入库的时候会
对数据库进行选择而已。
SQL路由的问题:
数据的分页处理:
业务分库后问题来了:
事务:不同业务拆分到不同的数据库,那么需要考虑以前单机中跨业务的事务如何处理。
使用分布式事务:其性能要明显低于之前的单机事务,而另外一种方法就是去掉事务或者不追求强事务支持。
根据业务对库进行拆分后,以前单库中可以使用表关联查询的也就需要改变了。
设计表的时候应该考虑的方面:
1、主键
每个表中的唯一字段,作为查询某记录的标准。
2、外键
存在关联之间的表,必不可少的字段,创建外键,也可以在数据库层对插入的数据做判断,不允许插入的外键,在关联表中的主键中不存在。
3、唯一性约束
对表中的某个或者某些字段做唯一性约束,可以在数据库层避免重复数据的插入。
4、查询效率
创建索引,在查询的时候可以提升查询效率
5、父子表
表与表之间的关联,在关系型数据库中表不是独立存在的,很多时候表与表之间是存在关联性的。
6、字段的类型
表设计的时候,字段类型是一个很关键的考虑点。
7、长度
表中字段长度的设计,如果插入的数据长度过长,会导致入库失败。
8、默认项
可以设置默认项 default
9、是否设置为NULL
如果在定义表结构的时候,字段定位为NOT NULL,那么插入的数据中该字段一定不能为空,不然就插入不成功。
10、数据库引擎
在设计Mysql数据库的时候,不同的引擎,其特性是不一样的。
11、编码格式
数据库也有自己的编码格式,格式问题会影响是否出现乱码。