常见后端数据存储问题解决方案
1、mysql数据准确性
常见电商系统中,如订单服务、现金券服务、活动类服务等,这类服务中经常会出现一些并发更新数据的情况,如何保证数据准确性。虽然有些操作可通过"状态"字段做了类似乐观锁的处理。但理论上还是会出现ABA的问题,而且规则不够统一,不同业务可能情况不太一样。可以考虑通过加入在数据库中加入"版本号"统一处理,通过注解的形式,把这部分代码抽象出来。
2、性能优化--缓存的使用
- 大量数据直接查询数据库性能较差,可以考虑将更多数据放入redis,提升查询性能
- 使用redis做重要业务时,注意避免mysql与redis数据不一致影响
- redis是单线程的,这是它的一大优点,但有时候也会成为问题来源,如一些耗时较长的操作会造成redis阻塞,对整个系统的稳定性造成影响
3、性能优化--分库分表
对于一些数据量很大的表,sql层面再怎么优化,依然解决不了查询慢的问题。这是因为随着数据量的增加,索引树的深度会增加。加之有些查询数据的区分度不高。在sql层面去优化是解决不了这类问题的。这时可以考虑引入分库分表的方案了。mysql一般5kw左右就可以考虑分表了。核心思路就是根据业务特点把数据分不同的表存储,以此提升数据查询性能。常见的方案有按时间维度(年、月)分表,按用户id维度分表
4、性能优化--冷热数据
常用的数据存储中,有些表虽然数据量比较大,但业务上真正常用的就是近一年,或者半年的数据。这些常用的数据称为热数据,不常用的为冷数据。根据分而冶之的思想,将冷热数据分开存储。这样在热数据查询上可以获得更好的性能,同时冷数据可以选用便宜的存储设备,降低成本。例如elasticsearch中仅保存近一年的数据,其它数据换作mysql存储。这样elasticsearch中的数据量将减少,查询时速度更快,同时减小数据容量,降低成本。
5、不停服切换数据源
如上如果采用冷热数据分离的方式存储elasticsearch中的数据,或者引入分表的方案,那将涉及到数据迁移。如何做到不停服切换数据源,且出现较大问题后能马上切换到原有方案,将是整个方案的重点之一。
总结:数据存储没有完美、通用的解决方案,大多是根据不同的业务场景,有不同的处理方式,总结起来有如下方向
空间换时间:多保存数据副本,分担数据查询压力
常用案例:
主从复制(mysql主从、redis主从)
异构数据(elasticsearch + cannal数据同步 ,elasticsearch + 消息队列数据同步)
分而冶之:根据数据特点,按一定的逻辑将数据分开存储,从而获得性能上的提升
垂直拆分:微服务,按业务领域分库。。。
水平拆分:多租户分库、按时间维度分表、按用户维度分表。。。
非关系型数据库: Elasticsearch 、Redis。。。
常见后端数据存储问题解决方案相关推荐
- 12 | 存储优化(上):常见的数据存储方法有哪些?
通过专栏前面我讲的 I/O 优化基础知识,相信你肯定了解了文件系统和磁盘的一些机制,以及不同 I/O 方式的使用场景以及优缺点,并且可以掌握如何在线上监控 I/O 操作. 万丈高楼平地起,在理解并掌握 ...
- 常见档案数据存储载体介绍及特性比较
· 一.载体概述 · 目前市面上常见的档案数据存储载体包括磁存储载体.光存储载体.电存储载体.胶片存储载体四大类(简称:磁.光.电.胶),每类存储载体又包含一些细分类型,如下表所示. 载体 类型 子类 ...
- ios字典存bool_iOS 常见的数据存储方式
一.plist 存储 //获取Plist文件的全路径NSString *path = [[NSBundle mainBundle] pathForResource:@"shops" ...
- 视频大数据存储平台解决方案(ppt)
选编:悟道方案网 www.518doc.com 大数据分析包含检索数据库和海量视频文件资料,检索数据库主要用来关联带标签的分类主题资料和具体视频文件,使用户能快速检索到对应分类的存储位置:云计算虚拟化 ...
- 数据存储四种常见方式
常见的数据存储方式有四种:在线存储.近线存储.脱机存储和站外保护. 不同的存储方式提供不同的获取便利性.安全性和成本开销等级. 在大多数场景中,四种存储方式被混合使用以达到最有效的存储策略. 来看一看 ...
- android 常见数据存储
Android 存储基础 android分区:分区简单的说就是将设备中的存储划分为一些互不重叠的部分,每个部分都可以单独格式化,用作不同的目的,这样系统就可以灵活的针对单独分区做不同的操作,例如在系统 ...
- 数据存储的四种常见方式
作者将本文同时发布到:EMC中文支持论坛 https://community.emc.com/docs/DOC-26345 介绍 常见的数据存储方式有四种:在线存储.近线存储.脱机存储和站外保护.不同 ...
- 《iOS取证实战:调查、分析与移动安全》一3.4 数据存储方式
3.4 数据存储方式 iPhone上的数据以很多方式进行存储.下面的小节涵盖了每一个数据存储的形式以供审查者了解潜在的证据如何定位或恢复. 内部存储: SQLite 数据库文件: 属性列表: 网络: ...
- Android移动应用基础教程【数据存储】
本章目录 一.数据存储方式 二.文件存储 1.将数据存入文件中 1.1.内部存储 1.2.外部存储 2.从文件中读取数据 2.1.读取内部存储中的文件的数据 2.2.读取外部存储中的文件数据 3.申请 ...
- 基于HBase的大数据存储在京东的应用场景
引言 HBase是一个高可靠性.高性能.面向列.可伸缩的分布式存储系统,适用于结构化的存储,底层依赖于Hadoop的HDFS,利用HBase技术可在廉价PCServer上搭建起大规模结构化存储集群.因 ...
最新文章
- [转]VC无负担实现XP风格界面
- 不用车载传感器,也能L4级自动驾驶?清华百度联手发布全球首个纯路侧感知自动驾驶方案...
- Oracle 原理: PL/SQL基础
- html在表单左上角显示文字,js+css实现增加表单可用性之提示文字
- CSUOJ 1196- Staginner 去爬山
- 《常见问题集》Maven
- meteor 检测运行环境,手机或者桌面
- python批量添加水印_手把手教你用Python批量给图片添加水印!知了干货分享!
- 玛雅日历和2012年12月,whats的新政
- 批量添加-动态拼接字符串
- java 两个url对比_一个URL模式中的两个slu ..
- 微软Project项目管理软件简介与安装配置
- Paperreading——SCRDet Towards More Robust Detection for Small, Cluttered and Rotated Objects
- 清华周界详解《基于图神经网络的事实验证》 | 百万人学AI
- 孕期饮食新理念——初光孕妇餐 让孕期营养更科学
- 电脑桌面云便签怎么通过便签快捷键设置窗口置顶或置底?
- 全球软件开发大会QCon上海2014盛大开幕
- 为什么使用微服务?要不要使用微服务?
- PPSIG:CTR-GCN 动作识别
- 解决新装 Windows 11 系统触摸板多指操作无法使用的问题