加入收藏 | 设为首页 | 会员中心 | 我要投稿 柳州站长网 (https://www.0772zz.cn/)- 基础存储、数据迁移、云安全、数据计算、数据湖!
当前位置: 首页 > 站长资讯 > 外闻 > 正文

在未来几年将如何扩张

发布时间:2021-02-03 13:49:57 所属栏目:外闻 来源:互联网
导读:表结构优化: 1、尽量使用TINYINT、SMALLINT、MEDIUM_INT作为整数类型而非INT,如果非负则加上UNSIGNED 。 2、VARCHAR的长度只分配真正需要的空间 。 3、尽量使用TIMESTAMP而非DATETIME 。 4、单表不要有太多字段,建议在20以内。 5、避免使用NULL字段,很难

表结构优化:

1、尽量使用TINYINT、SMALLINT、MEDIUM_INT作为整数类型而非INT,如果非负则加上UNSIGNED 。

2、VARCHAR的长度只分配真正需要的空间 。

3、尽量使用TIMESTAMP而非DATETIME 。

4、单表不要有太多字段,建议在20以内。

5、避免使用NULL字段,很难查询优化且占用额外索引空间。字符串默认为''。

读写分离:

只在主服务器上写,只在从服务器上读。对应到数据库集群一般都是一主一从、一主多从。业务服务器把需要写的操作都写到主数据库中,读的操作都去从库查询。主库会同步数据到从库保证数据的一致性。一般 读写分离 的实现方式有两种:代码封装跟数据库中间件。

分库分表:分库分表分为垂直和水平两个方式,一般是先垂直后水平。

1、垂直分库:将应用分为若干模块,比如订单模块、用户模块、商品模块、支付模块等等。其实就是微服务的理念。

2、垂直分表:一般将不常用字段跟数据较大的字段做拆分。

3、水平分表:根据场景选择什么字段作分表字段,比如淘宝日订单1000万,用userId作分表字段,数据查询支持到最近6个月的订单,超过6个月的做归档处理,那么6个月的数据量就是18亿,分1024张表,每个表存200W数据,hash(userId)%100找到对应表格。

4、ID生成器:分布式ID 需要跨库全局唯一方便查询存储-检索数据,确保唯一性跟数字递增性。

目前主要流行的分库分表工具 就是Mycat和sharding-sphere。

TiDB:开源分布式数据库,结合了传统的 RDBMS 和NoSQL 的最佳特性。TiDB 兼容 MySQL,支持无限的水平扩展,具备强一致性和高可用性。TiDB 的目标是为 OLTP(Online Transactional Processing) 和 OLAP (Online Analytical Processing) 场景提供一站式的解决方案。TiDB 具备如下核心特点
 

ofType:完整的Java类名和限定名。propert所映射的属性的类型。

其余和association基本一致。

association和collection都具备延迟加载功能。

延迟加载:先从单表查询,需要时再查关联表,大大的提高了数据库性能,因为相对来说单表查询比多表查询要快。

xml和注解的关系

上面我们已经讲了两种方式的实现,下面来对比一下,两种方式的关系:

xml方式

必须有个一个XxxMapper.xml与之对应,方法名对应xml中的id,方法入参和方法出参都必须对应起来,很容易出问题。我们在开发的时候有的是可以使用代码生成器生成,但是有的是必须自己手写,有的公司也是要求必须手写,所以这里需要注意。

注解方式

不需要XxxMapper.xml文件,只需要在对应XxxMapper.java中的方法上加上注解就搞定了,但是这里是有坑的。毕竟把sql放到了我们的Java代码里了。

优缺点

xml方式: 增加了xml文件,修改麻烦,条件不确定(ifelse判断),容易出错,特殊转义字符比如大于小于 。

注解方式:复杂sql不好用,搜集sql不方便,管理不方便,修改需重新编译

总结

本文讲述了Mybatis的两种映射方式,以及一些注意点,一些关系和区别。

实体属性名和数据库表字段名不一样的情况下,xml和注解分别是如何处理的。resultType和resultMap的区别。

(编辑:柳州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读