大数据互联网架构阶段 大型电商项目数据库设计时应该注意的点
大型电商项目数据库设计时应该注意的点
一、 id的设计
- int(int)类型: 性能高 , 但是分布式数据库时 , id易重复
- long(bigint)类型:性能高 , 比int类型容纳的数据更多 , 但是还是会重复
- String(varchar) : 使用UUID , 几乎不会重复 , 但是性能略低
- 大型电商的数据库是分布式的么?
- 究其原因 , 数据库分布式设计就是为了提高数据库的性能 , 能抗住更大的访问量 , 但是仅仅靠增加数据库服务器台数 , 来应对高并发, 似乎成本过高, 而且效果并不显著 , 所以 , 大型电商项目的数据库一般采用中央集中式 , 后再引入缓存数据库 , 此时大量重复的查询操作交给缓存数据库 , 大大的减小了数据库的压力 , 而且缓存存在于内存中 , 用户获得数据的时间也更短 。
二、 价格的设计
- 一般价格使用double表示 , 但是double类型的数据对降低数据库的执行效率 ,而电商项目以性能最高为目的来设计整个架构 。 所以价格采用int存储
- 在前台提交数据时 , 先乘100 , 的到一个整数 , 进行存储 , 在查询时 , 前台在通过js将介个除以100 , 得到真实的价格 。 这儿样就把数据库的压力分散到所有的客户机中 。
三 、 图片上传存储的设计
- 在前台页面将图片进行上传 , 然后将图片保存在服务器本地 。
- 电商项目中以性能为核心, 肯定不能把图片存在数据库中(这样会破坏索引)
- 把图片上传到服务器中后
- 判断是否是图片
- 判断是否是病毒
- 重新生成唯一的名字
- 生成实际存储路径(需要考虑 , 同一文件夹下同名文件的问题 , 同一文件夹下问价过多导致目录访问时间过长 , 或不能访问的问题)
- 生成虚拟访问路径
- 创建实际路径对应的文件目录 , 并存储
- 把虚拟访问路径存在数据库中
- 然后把虚拟访问路径返回客户端 , 供图片回显使用 。
- 索引介绍:
- 索引存在的目的就是为了减少磁盘IO的次数
- 如 : 生活中查字典 , 会用到字典索引:
- 查“李”
- 找L
- 找Li
- 找李
- 还有一些 笔画法, 偏旁法 , , 都惩治为索引 。
- B-Tree无论数据量多大, 三次IO即可查出数据
- 索引的特点是有序的
- 所以 , 像:图片 、 商品描述这样的大字段尽量不要存在数据库中 , 破坏数据库索引之后 , 查询将从索引查找变为遍历查找 , 非常慢
四、 尽量使用单表设计
- 在能使用单表设计的情况下尽量使用单表设计 , 避免外键关联
- 外键关联性能问题:
- 数据库需要内部维护外键关联(本身是if语句) , 在主从不锁表的情况下我们在代码中维护他
- 在数据库中设计到增 、 删、 该 ,的操作都会触发相关的操作去检查外键 , 从而不得不小号额外的资源 。
- 最主要的问题: 外键的存在很容易导致数据库的死锁 。
四、 商品描述的设计
- 商品描述属于大字段 , 而在数据库中大字段的存在会破坏表的索引 , 导致查询操作十分的慢 ,所以要分表存储
大数据互联网架构阶段 大型电商项目数据库设计时应该注意的点相关推荐
- 大数据实战|怎样实现大型电商热销榜?
上次给粉丝的福利,购买极客时间课程,浪尖这里返现:球友24元,非球友10元或者8折入球.大家还记得吗,发现很多粉丝比较滞后,这两天还陆续找我要返现,,,今天看了一下,极客时间优惠还剩两天吧,过了这两天 ...
- 大数据 互联网架构阶段 电商项目简介
电商项目简介 零.目录 电商项目特点 电商项目技术难点 电商项目简介 开发工具 电商项目架构 开发环境 一.电商项目特点 分布式 数十台服务器,甚至百台.千台.万台,包括:Nigix负载均衡集群.To ...
- 大数据互联网架构阶段 QuartZ定时任务+RabbitMQ消息队列
QuartZ定时任务+RabbitMQ消息队列 一 .QuartZ定时任务解决订单系统遗留问题 情景分析: 在电商项目中 , 订单生成后 , 数据库商品数量-1 , 但是用户迟迟不进行支付操作 , 这 ...
- 大数据互联网架构阶段 前台系统架构 跨域请求
电商项目 前台系统的架构 零.目录 前台架构设计 前台分类树 跨域请求技术 jsonp httpClient 一 .前台架构设计 不能直接访问数据库 , 需要通过后台访问数据 架构: 单通道连接资源 ...
- 大数据互联网架构阶段 全文检索技术
全文检索 一. 全文检索的引出 我们生活中的数据总体分为两种:结构化数据 和非结构化数据 . 结构化数据: 指具有固定格式或有限长度的数据,如数据库,元数据等. 非结构化数据: 指不定长或无固定格式的 ...
- 大数据互联网架构阶段 Redis(二)
Redis(二) 零 . 目录 将缓存引入电商项目 主从复制 哨兵模式 集群容忍度 CAP理论 十. 将缓存引入电商项目 使用Spring框架维护Jedis池对象 引入一个配置文件 applicati ...
- 大数据 互联网架构阶段 Nginx的使用
Nginx 一.情景分析 如何构建一个tomcat集群 , 两种构建方式 但是此时将项目部署到tomcat集群上之后用户还是只能通过固定的ip和端口访问固定的服务器 ,并没有达到构建tomcat集群时 ...
- 大数据 互联网架构阶段 Redis
Redis 零. 目录 高并发思路 电商网站中缓存数据库的设计 缓存介绍 按照redis redis常用命令 redis其他数据结构 数据分布式存储 Jedis客户端 哈希一致性 补充 一. 高并发思 ...
- 大数据 互联网架构阶段 Redis(三)redis集群
Redis(三) redis集群 一. redis哨兵模式的缺点 问题一 : 横向扩展不方便 , 一旦扩展 , 无论代码结构多么简单, 都需要修改 问题二 : 散列分布式算法是hash一致性 , 无论 ...
最新文章
- hbuilderX的upx单位是什么鬼?
- 为何苹果为何苹果甘愿冒险自主研发芯片?
- 学会这几招,你也可以用 Redis 做实时订阅推送!
- 程序环境——翻译环境与执行环境
- 怎么获取codeforces的数据_手把手教你学会新媒体运营——如何通过数据分析来优化新媒体运营...
- 公共方法-完整的for循环-for else
- python url拼接_教你写python爬虫——用python爬原图
- Shell 编程:Bash空格的那点事
- (97)FPGA边沿检测(上升沿检测)
- 小明交友第五次2018.6.24
- gitlab releases
- Emacs里一些古老的术语
- 百度大脑 EasyDL 专业版最新上线自研超大规模视觉预训练模型
- img 图片加载出错时 显示默认图片
- [Python]_ELVE_centos7安装Python3.7.1与Python2共存
- java double精度丢失 0.1+0.2不等于0.3
- python第六章答案_python第六章
- Origin制图之热力图(hot-map)
- Win10,Win11系统安全中心提醒“找到可能不需要的应用”弹窗,如何关闭?
- 电影评分数据分析python_豆瓣电影简单评分模型-从收集数据到建模分析
热门文章
- node.js 函数定义和调用
- Java字节码(.class文件)格式详解(一)
- vs2012搭建gtest环境
- Freescale MC9S08AW60汇编学习笔记(五)
- 一步步学习微软InfoPath2010和SP2010--第四章节--处理SP列表表单(6)--列表表单的局限...
- oracle11g 隐藏参数_oracle隐含参数的查看与修改
- 计算机中心述职报告诉,计算中心述职报告
- 浏览器接收响应数据过大_DOM总结:数据通信(HTTP协议和Ajax)
- gulp 项目构建 代码压缩与混淆
- 文件内容批量修改工具