python 数据结构定义_【Python】数据结构如何定义以及清理 例如订单的附带商品信息数据...
订单内商品数据应该怎么保存
方案一
在订单创建的时候直接把商品数据保存在订单里面,作为订单的一个附属字段
这样子后续修改商品,不会对已经在订单内的商品任何影响
问题:如果商品修改不频繁的情况下,会大量增加订单数据的大小,同一个商品下10单,10个单里面都有商品数据(特别是需求显示商品的字段较多时,比如规格,产地,单位等等等等)
方案二
在订单创建的时候,对商品生成一个快照存在一个商品快照表中(同一个商品可含多个快照,订单创建时判断商品快照是否为最新,最新则不新生成快照),订单内存储商品快照ID,显示订单商品时,用ID去取商品快照显示
这样子后续修改商品,不会对已经在订单内的商品任何影响,
问题:比如订单只保存最近一年,一年以前订单自动归档,那商品快照表就需要单独处理判断商品的快照是否该归档,如果商品快照不定期归档,数据量会无限变大
方案三
创建订单直接保存商品ID,显示商品的时候在去商品表里查询商品
这样子最节省空间
问题:如果商品删除或者修改了之后,订单也会跟着变
请问大家这样子的数据究竟怎么存合适,方便清理归档,快速查询,节省空间。
回答
最开始用的方案三,发现有问题,然后改的联合使用你的方案一和方案二
订单里面存产品id和版本号还有其他关键信息,如商品名称、价格、供应商等。(查询的时候不用连表)
然后商品还有一个带版本号的历史表,可以根据订单里的产品id和版本号关联查询到。
求大神们赐教,这个问题困扰我好久了,一直拿不定主义到底用何种方式存储。要考虑到以后订单量超大的情况,所以就怕以后需要重写,不敢随便定义。
使用方案二比较好,其中快照的字段可以不完全照办商品表的 — 快照一般不需要筛选只是用来查看,可以把多个相关字段合并成一个字段。
Just my 2 cents.
尽管不熟悉此类业务,但是否可以考虑在商品表中保存变动信息。
attr_history: [
{
attr: name,
value: value,
start: new Date(2016, 1, 1),
end: new Date(2016, 4, 1)
},
{
attr: name,
value: value,
start: new Date(2016, 1, 1),
end: new Date(2016, 4, 1)
}]
方案一:“10个单里面都有商品数据”,比如一个20160901版本的商品,有1000个人买了,没必要每个订单里面都存一下这个版本的商品数据,冗余过度
方案三:业务不合理的啊
方案二:其实就算不说订单这事,也需要保存一个商品的所有历史版本(快照)。
问题解决:商品快照可以采取一个定期归档的措施,归档可以采取转移至只读数据库等措施。另为了提高使用性能和使用时长,可以对商品快照进行分表,比如201609一个商品快照表,201610一个,具体看你们的业务量和具体的业务需求了。
python 数据结构定义_【Python】数据结构如何定义以及清理 例如订单的附带商品信息数据...相关推荐
- Python爬虫实战,requests+openpyxl模块,爬取手机商品信息数据(附源码)
前言 今天给大家介绍的是Python爬取手机商品信息数据,在这里给需要的小伙伴们代码,并且给出一点小心得. 首先是爬取之前应该尽可能伪装成浏览器而不被识别出来是爬虫,基本的是加请求头,但是这样的纯文本 ...
- python 100实例_[Python] Python 100例
题目1:有四个数字:1.2.3.4,能组成多少个互不相同且无重复数字的三位数?各是多少? 程序分析:可填在百位.十位.个位的数字都是1.2.3.4.组成所有的排列后再去 掉不满足条件的排列. #程序源 ...
- python世界地图代码_[python] 几行代码也能玩转世界地图?
前些天收到某位大佬的求助,说是需要给根据数据给安徽省地市来绘制个图,用不同颜色来直观表示数据.当时就想到了Python提供一个绘制地图的库-- Pyecharts. Pyecharts是一个用于生成e ...
- python 病毒 基因_#Python#提取基因对应的蛋白质名
提取基因对应的蛋白质官方名 最开始,是需要将基因跟其编码的蛋白质对应起来,找遍了各种数据库都没发现有相关的注释文件,Uniprot作为处理蛋白质的大佬,结果里都有,肯定有办法能够满足需求. 搜索TP5 ...
- python keyboard模块_[python] PyMouse、PyKeyboard用python操作鼠标和键盘
1.PyUserInput 简介 PyUserInput是一个使用python的跨平台的操作鼠标和键盘的模块,非常方便使用.支持的平台及依赖如下: Linux - Xlib Mac - Quartz, ...
- Python爬虫模拟浏览器的headers、cookie,爬取淘宝网商品信息
一. 淘宝商品信息定向爬虫 二. 爬虫基础:正则表达式 三. 淘宝页面查看与分析 四. 爬虫源码 一. 淘宝商品信息定向爬虫 注意淘宝的robots.txt不允许任何爬虫爬取,我们只在技术层面探讨这一 ...
- python获取登录按钮_Python:Selenium模拟Chrome浏览器抓取淘宝商品信息
对于采用异步加载技术的网页,有时候想通过逆向工程的方式来设计爬虫进行爬取会比较困难,因此,要想通过python获取异步加载数据往往可以使用Selenium模拟浏览器的方式来获取. Selenium是一 ...
- python计算数据百分比_概率计算:定义概率分布数据结构,Python实现概率分布计算...
使用Python实现马尔科夫随机场.蒙特卡洛采样等随机过程算法的前提,就是用Python实现概率的计算.并不只是数值计算,而是能够将随机模拟中常用的各种概率相关的操作,都能用计算机的数据结构来表达,其 ...
- python数据结构题目_《数据结构与算法Python语言描述》习题第二章第三题(python版)...
ADT Rational: #定义有理数的抽象数据类型 Rational(self, int num, int den) #构造有理数num/den +(self, Rational r2) #求出本 ...
最新文章
- 腾讯ARC、华中科大联合提出QueryInst,开启基于Query的实例分割新思路
- gnujaxp.jar与struts2中的xwork核心包冲突
- c++构造函数以及类中变量初始化顺序
- 嵌入式程序员面试时应该知道的16个问题
- ps2020的antlib文件在哪_ant design pro 新增页面
- python 异常_一文掌握 Python 异常处理的所有知识点
- Java中实现使用split方法分隔字符串
- Linux 守护进程创建原理及简易方法
- php 获取当月的阴历值,PHP计算节日、节气、农阳历互换的代码
- base64 string 放不下_String、byte[]、Base64相互转换,不要再用错了
- 如何在AD上重定向电脑加域后默认保存位置?
- #2013年Google官方技术求职大礼包#面试求职技巧篇
- 【WPS表格】快速填充数据的多种方法
- 前后端交互node服务器
- Kali linux 学习笔记(七十五)拒绝服务——teardrop 2020.4.15
- 【数据分析入门】R语言读写文本文件及RDATA文件
- Ubuntu子系统折腾记
- 【Kotlin开发者社区文章集锦】66篇精选技术精华文章
- Android秀翻天的操作——使用协程进行网络请求
- 1.21(0/1 Knapsack)
热门文章
- 初学python需要安装哪些-致Python初学者 Anaconda入门使用指南完整版
- mac屏保时钟_OneClock 不息屏的极简时钟,不仅仅是翻页时钟那么简单!
- android 代码添加图片不显示,Android开发 从代码里设置Drawable图片不显示的问题
- 太原理工大学自考计算机应用难,太原理工大学人工智能精彩试题+问题详解
- linux7给用户授权,CentOS7 添加新用户并授权
- c语言能让制表符空9个字符码,C语言编程规范 – 嗨!大佟!
- python 堆栈_利用Python列表实现堆栈(二):实现
- 【Windows】将notepad++添加到右键菜单中
- java数据库的量级_程序员学Python还是Java?分析了8张图后得出这个结论
- html大气网页模板,HTML蓝色大气形式扁平企业官网网页模板代码