在未来几年将如何扩张
|
表结构优化: 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的区别。 (编辑:柳州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |


