关系型、非关系型数据库存储选型盘点大全
工作中总是遇到数据存储相关的Bug工单 , 新需求开发设计中也多多少少会有数据模型设计和存储相关的问题 。 经过几次存储方案设计选型和讨论后发现需要有更全面的思考框架 。 日常开发中常用的存储方案选型很多都是“拿来主义”的 , 凭借着经验、习惯选用 , 但对它们的细节特性或约束少有研究 。 除了手边会用的存储方案 , 也应该关注市面上更合适的存储方案 。 一定的技术预研和储备能够帮助未来更好的技术方案设计 。
故写了这篇文章 , 抛出我的观察和思考 , 希望日后可以将一些更先进(合适)的技术引入公司业务 , 助力业务发展 。
存储选型的考虑要素
存储选型的目的还是为了我们的使用场景和用户服务 , 因此在选型前需要回答一些业务指标&技术指标方面的问题 , 以便于我们清楚存储选型的应用环境 。 用户量:用户量预估多少?几百几万还是几亿?数据量:数据量预估多少?日均增量能有多少?读写偏好:数据是读多一些还是写多一些?数据场景:强事务型还是分析型需求?运行性能要求:并发量是多少?高峰、平均、低谷分别预估是多少?
存储引擎分类及特性
数据库的分类方式非常多样 , 因参考维度不同而存在较大差异 , 下面是常见的一些分类 。
文章图片
先拿我们最熟悉的关系数据库来说 , 它的优点非常多 , 我们选用关系数据库的理由可简单概括为以下几点:容易理解
可由二维表结构来逻辑表达 , 相对网状、层次等其他模型更加容易被理解 。 严格遵循数据格式与长度规范 , 数据以行为单位 , 一行数据表示一个实体信息 , 每一行数据的属性都是相同的 。 事务特性
支持ACID特性 , 可以维护数据之间的一致性 , 这是使用关系数据库非常重要的一个理由 。 操作方便
通用的SQL语言使得操作关系型数据库非常方便 , 支持join等复杂查询 , Sql+二维关系是关系型数据库最无可比拟的优点 , 这种易用性非常贴近开发者 。 数据稳定
数据持久化到磁盘 , 没有丢失数据风险 。 服务稳定
最常用的关系型数据库产品MySql、Oracle服务器性能卓越 , 服务稳定 , 通常很少出现宕机异常 。
然而 , 在享受关系数据库带来的便利的同时 , 我们也不得不面临很多麻烦的问题:高并发下数据库瓶颈明显
数据按行存储 , 即使只针对某一列进行运算 , 也会将整行数据从存储设备中读入内存 , 导致IO较高 。 写入更新频繁的情况下 , 数据库往往会出现CPU飙高、Sql执行慢、客户端报数据库连接池不够等异常情况 , 且性能瓶颈通过加CPU、换固态硬盘、继续买服务器加数据库做分库等方式处理ROI不高 , 受限于其本身的特点 , 可能花了很多钱都未必能达到想要的效果 。 因此例如万人秒杀这种场景 , 我们绝对不可能通过数据库直接去扣减库存 , 需要做好流量漏斗 。 为维护数据一致性付出的代价大
数据一致性是关系型数据库的核心 , 但是同样为了维护数据一致性的代价也非常大 。 SQL标准为事务定义了不同的隔离级别 , 从低到高依次是读未提交、读已提交、可重复度、串行化 , 事务隔离级别越低 , 可能导致的并发异常越多 , 但是能提供的并发能力越强 。 那么为了保证事务一致性 , 数据库就需要提供并发控制与故障恢复两种技术 , 前者用于减少并发异常 , 后者可以在系统异常的时候保证事务与数据库状态不会被破坏 。 对于并发控制 , 其核心思想就是加锁 , 无论是乐观锁还是悲观锁 , 只要提供的隔离级别越高 , 那么读写性能必然会受影响 。 为维护索引付出的代价大
- 极米H3S、坚果J10S、当贝投影仪X3,这些高端1080P投影仪值得入手吗?
- 本文转自:新华日报虚拟身份、隔空取物、沉浸体验……随着科技的发展|BrainCo强脑科技创始人兼CEO韩璧丞受邀参加世界人工智能大会主题论坛并发言
- CD、无损、音乐APP谁音质最好?不知道的选这台全功能音乐一体机!
- iPhone|你选哪个?华为Mate 50、iPhone 14预售价现身:入门差价近2千
- 翟志刚、王亚平回家!赵丽颖、迪丽热巴等众星迎接,可惜差点热闹
- 华为 Mate 50 系列五款配色曝光:玻璃、素皮全都有
- 芯片|美科技巨头突然宣布,阿里、华为早已进入,外媒:“苦果”出现了!
- 2款零差评的折叠屏手机,不仅价格良心,而且非常实用
- 不漏水、摔不坏、材质安全, 这款保温杯好评如潮, 全美销量前五
- 华为|法国拆下华为3000根天线后,态度又一次“转变”,任正非直接摊牌