开发中如何应对大量数据

SQL或者NoSQL的方案

问题:

本人开发的点餐系统,20家酒店每日200张账单,如此以来一年就能积累出百万张订单数据,每张订单中包含的菜品单品自定义菜品组合菜品几个到几十个,想想数据量就很恐怖,在这些数据之上需要实现许多报表,如哪个员工销售了哪些类别菜品的数量,员工在不同餐段的绩效,账单优惠统计,不同的菜品有的打折有的不打折…

解决:

如果按照传统的开发思路,账单应该是一个关系表,账单号和菜品id都是外键,那么这张关系表的数据量将会达到千万级,随着时间的推移,用户变多,数据轻松达到几十亿级,这样的一张关系表,想想就挺头疼。于是想到一个比较折衷的方法,当时知道MySQL5.7版本可以支持JSON了,于是用一个很长的JSON字符串来存每一个账单,账单的菜品信息,支付信息,操作人信息等都内置进去,然后其他字段存一些整体性信息,索引性信息。

效果:

优势:账单信息更新方便,更新只需要按照索引取出修改再更新即可,一次操作只涉及一个表的一行数据,关系少容易分片存储。
缺点:key-value的JSON因为每一行数据都要从新存储key,所以存在较大的空间浪费。更新容易读取困难,想要写个erp的报表,费那个劲,逐行读出来反序列化JSON字符串,遍历json(也许可以直接用MySQL实现,我不会,应该也不容易吧)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值