破解既有的行业痛点,解决信息流、业务流、资金流、物流等工业电商核心的方案
解决商品、商家与海关和国检系统备案,订单跨境支付和一键报关的方案
提供车源发布、车源查找、求购发布、报关报检、汽车物流、汽车配件相关服务
全网平台搭建,多触点连接用户,母婴店,专卖店、卖场、商城系统多模式并存
“互联网+零售” 对实体进行补充,又能让企业通过大数据更好地了解消费者需求
汽车配件电商平台能够打通产业链、提高工作效率、去中间化、降低成本等
农产品电商平台直连农产品产地,溯源追溯,传统农业与互联网+进行优质结合
在线考试/教育培训/职业技能/企业内训等,提供教育各个行业的解决方案
使用Spring Boot开发风格做到一键启动和部署,简化分布式系统开发,易二次开发和维护
易写区块链,定制开发私链、联盟链、公链,提供所有源代码,适合二次开发
平台自营+供应商入驻,的高并发解决方案,SpringCloud Alibaba技术架构
区块链+溯源不可篡改,溯源追溯,传统行业(例如农业等)与区块链进行优质结合
供求、求购方数据整合,双向打通货源“供应链”和全渠道“销售链”的电商平台
知识付费/教育培训/职业技能/企业内训等,源码100%开源的在线课堂软件
互联网的技术架构、全新的UI设计、丰富促销体系、多种支付方式、快递实时跟踪
多题型、题库测试、错题收集、章节练习、试卷练习、考试记录、自动判卷、发放证书
易写科技电商系统主体框架全部采用Apache主流框架进行开发,没有任何二次封装,方便二次开发
采用SpringCloud Alibaba技术架构,基于Maven构建,数据库读写分离、支持分库分表、独立图片和搜索服务器等
易写科技商城由京东、海尔电商公司互联网人开发而成,拥有解决高并发、高可用、秒杀等电商方面丰富的经验
易写科技商城代码和数据库开源,数据库每个表、每个字段都有注释,代码每个方法都有注释
易写科技商城系统可以有效防止SQL注入、XSS攻击、CSRF攻击、核心模块采用MD5加密传输,保证系统和数据安全
易写科技商城系统不仅在架构和代码层面把细节做到了,并且在业务流程也是
1、 表的命名:使用有意义的英文词汇,词汇中间以下划线分割,全部采用小写;如示例表表名student_info,数据库字段名的修改代价很大,因为无法进行预发布,所以字段名称需要慎重考虑。
2、 表必须有无符号int型自增主键,对应示例表中id字段。
必须得有主键的原因:采用RBR模式复制,无主键的表删除,会导致备库夯住;
使用自增的原因:数据写入可以提高插入性能,避免page分裂,减少表碎片。
mysql复制主要有三种方式:基于SQL语句的复制(statement-based replication, SBR),基于行的复制(row-based replication, RBR),混合模式复制(mixed-based replication, MBR)。对应的,binlog的格式也有三种:STATEMENT,ROW,MIXED。
3、 必须把字段定义为NOT NULL并且提供默认值。
原因:a.null的列使索引、统计都更加复杂,使优化更加困难;b.NULL并不是空值,也会占用空间,所以在MySQL进行比较时,NULL会参与字段比较,所以对效率有一部分影响。
4、 所有表、字段都应该有 comment ,来描述表、字段所代表的含义,方便同事查看。
5、 能用smallint或者tinyint的情况就不用int,如一些状态位就使用的是smallint。
原因:使用smallint或者tinyint能节约存储空间。
bigint
从 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807) 的整型数据(所有数字)。存储大小为 8 个字节。
P.S. bigint已经有长度了,在mysql建表中的length,只是用于显示的位数
int
从 -2^31 (-2,147,483,648) 到 2^31 – 1 (2,147,483,647) 的整型数据(所有数字)。存储大小为 4 个字节。int 的 SQL-92 同义字为 integer。
smallint
从 -2^15 (-32,768) 到 2^15 – 1 (32,767) 的整型数据。存储大小为 2 个字节。
tinyint
从 0 到 255 的整型数据。存储大小为 1 字节。
6、 涉及到金额的字段使用DECIMAL。
7、 电话号码建议使用varchar(20),如示例表字段phone_number。
原因:a.涉及到区号或者国家代号,可能出现+-();b.不会有谁用手机号做运算;c.varchar可以支持模糊查询。
8、 表建议增加create_time和update_time,以记录某条数据的创建时间和修改时间。
注意:这里5.5和5.6有区别,5.5使用的是TIMESTAMP,并且5.5不支持多个CURRENT_TIMESTAMP 默认值,因此如上示例设计;5.6版本使用了datetime,因为datetime支持的范围更广(范围为:'1000-01-01 00:00:00'到'9999-12-31 23:59:59'),并且create_time和update_time两个字段都设置了CURRENT_TIMESTAMP(从5.6.5开始支持多个字段默认值设置为CURRENT_TIMESTAMP),原因:增加这两个字段方便统计和归档。
9、 表建议包含一个状态标记字段,来标识数据是否被删除,而不使用物理删除;比如示例表字段status。
10、 使用唯一索引约束字段值唯一的数据,唯一索引以uniq_字段名方式命名;如表中的uniq_stu_num。
11、 在经常作为查询条件的字段上添加索引,普通索引以idx_字段名方式命名;如示例表中的idx_stu_score。
12、 经常同时出现在where条件中的几个字段可以放在联合索引中;如idx_update_time_tuition;需要注意的是应该把选择性更大的列放在联合索引的最左边。
13、 尽量不使用TEXT、BLOB类型,原因:会浪费更多的磁盘和内存空间,非必要的大量的大字段查询会淘汰掉热数据,导致内存命中率急剧降低,影响数据库性能。
14、 使用innodb存储引擎,原因:innodb支持事务,是行级锁,并发性能更好、CPU及内存缓存页优化使得资源利用率更高。
15、 建议使用utf8mb4字符集
16、 表达是与否概念的字段,必须使用 is_xxx 的方式命名,数据类型是 unsigned tinyint ( 1表示是,0表示否)。说明:任何字段如果为非负数,必须是 unsigned。
17、 如果存储的字符串长度几乎相等,使用 char 定长字符串类型。
18、 varchar 是可变长字符串,不预先分配存储空间,长度不要超过 5000,如果存储长 度大于此值,定义字段类型为 text,独立出来一张表,用主键来对应,避免影响其它字段索 引效率。
19、 如果修改字段含义或对字段表示的状态追加时,需要及时更新字段注释。
20、 字段允许适当冗余,以 高性能,但是必须考虑数据同步的情况。冗余字段应遵循:
1) 不是频繁修改的字段;
2) 不是 varchar 超长字段,更不能是 text 字段;
3) 比如用户名称,手机号码等。
21、 业务上具有唯一特性的字段,即使是组合字段,也必须建成唯一索引。
说明:不要以为唯一索引影响了 insert 速度,这个速度损耗可以忽略,但 高查找速度是明 显的;另外,即使在应用层做了非常完善的校验控制,只要没有唯一索引,根据墨菲定律,必 然有脏数据产生。
22、 超过三个表禁止 join。需要 join 的字段,数据类型必须一致;多表关联查询 时,保证被关联的字段需要有索引。
说明:即使双表 join 也要注意表索引、SQL 性能。
23、 在 varchar 字段上建立索引时,必须指定索引长度,没必要对全字段建立索引,根据 实际文本区分度决定索引长度即可。
说明:索引的长度与区分度是一对矛盾体,一般对字符串类型数据,长度为 20 的索引,区分 度会高达 90%以上,可以使用 count(distinct left(列名, 索引长度))/count(*)的区分度 来确定。
24、 页面搜索严禁左模糊或者全模糊,如果需要请走搜索引擎来解决。
25、 创建索引时避免有如下极端误解:
1) 宁滥勿缺。误认为一个查询就需要建一个索引;
2) 宁缺勿滥。误认为索引会消耗空间、严重拖慢更新和新增速度。
工作日:9:00-18:00
售前:18612670879
微信:18612670879
Q Q:43006111