怎么进行业务系统数据库技术选型?

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介: 随着云计算、大数据、物联网时代的到来,越来越多的网民涌入互联网,越来越多的应用系统需要支撑海量数据存储,还需要随着业务需求满足高并发、高可靠、高扩展性等要求,传统的关系型数据库已经不能完全满足需求了,因此NoSQL应运而生。

随着云计算大数据物联网时代的到来,越来越多的网民涌入互联网,越来越多的应用系统需要支撑海量数据存储,还需要随着业务需求满足高并发、高可靠、高扩展性等要求,传统的关系型数据库已经不能完全满足需求了,因此NoSQL应运而生。


那么SQL是什么?、NoSQL又是什么?业务系统如何数据库技术选型呢?


手把手教你如何进行业务系统数据库技术选型


NoSQL!= NO SQL,而是NotOnlySQL,作为关系型数据库的补充而出现。关系型数据库即采用了关系模型来组织的数据库,简单来说,就是二维表格模型,包含关系(表名)、元组(二维表中的一行)、属性(二维表中的一列)、域(属性的取值范围)、关键字(唯一能标识元组的属性)、关系模式(表结构,对关系的描述)等概念。以一个用户信息表来说,用户信息表就是整个关系,元组就是姓名、性别、年龄、电话、地域组成的一行记录,属性则是单独的地域列、年龄列等,域就是地域是中国全省市等,关键字就是用户ID、能唯一标识这个用户,关系模式就是这整个表,包含姓名、性别、年龄、电话、地域属性。



对于关系型数据库来说,一直非常流行的原因有如下四个:


  1. 强事务一致性,数据库的ACID(原子性、一致性、隔离性、持久性)保障了所有记录的数据全是准确的,对于早期互联网来说,大家都不完全信任看不到摸不着的东西,所以这个特点非常重要;
  2. 容易理解,二维表的结构非常贴合现实世界。
  3. 使用方便,通用的sql语言使得操作关系型数据库非常方便;
  4. 容易维护,在设计的时候采用了实体完整性、参照完整性等理念,减少了数据冗余和数据不一致。常用的关系型数据库有Mysql、Oracle等。

然而随着互联网海量数据的增加,关系型数据库也产生了瓶颈,具体表现如下:


  • 无法应对高并发的读写请求,关系型数据库是以行结构来存储的,比如我们想获取某个地域的用户名单,需要按行读取,再获取其中的用户名字这一属性,对于磁盘的IO消耗非常大;
  • 无法弹性伸缩,关系型数据库无法像webserver那样简单的通过增加更多的硬件和服务节点来扩展性能,对于数据库海量剧增的今天、服务需要24小时提供的企业来说,这非常难受;
  • 不再需要事务强一致性、读写实时性,早期这是关系型数据库的优点,而随着互联网业务覆盖范围的广泛,用户可以接受一定的延迟、一定的错误。

因此NoSQL关系型数据库出现了,作为关系型数据库的补充,再根据互联网时代的需求不同,可以分为:


  • 支持高性能并发读写的Key-Value数据库,如Redis;
  • 支持海量数据访问的文档数据库,如MongoDB、CouchDB;
  • 支持大数据存储和分析的列式数据库,如HBase;
  • 支持全文搜索的搜索引擎数据库,如ElasticSearch。

手把手教你如何进行业务系统数据库技术选型


数据库的使用根据具体的业务场景而确定,毫无疑问,涉及交易场景,关系型数据库是必不可失的,因为我们要求数据必须一致,不能允许任何的差错出现。在大部分互联网企业中,一般是SQL与NoSQL配合使用。现以某高速发展的电商网站来聊聊如何技术选型?


手把手教你如何进行业务系统数据库技术选型


从业务类型来看,电商具备用户量&订单量高速增长、网站延迟低、对部分数据准确性要求高的特点,因此需要数据库能支持高读写的并发量、低延迟高吞吐、安全稳定、高可用的特点。从数据类型来看,包含用户个人信息数据、商品信息数据、交易数据三类,对于交易数据需要保证不能出错,而其它类数据则要求能存储不出错。从数据驱动运营的角度来看,未来会利用用户在平台产生的所有数据进行数据分析、智能推荐、二次营销等。综上所述,我们选择的数据库是MySQL与MongoDB。


选择MySQL毫无疑问是为了保证业务核心数据如用户信息、交易数据等不能出错,这是关系型数据库的最大优势。选择MongoDB则是因为其高可用、文档模型的特点。关于高可用,首先MongoDB的架构是primary、secondary模式,一个主节点接受server的读写,两个从节点同步primary主节点的数据,当主节点发生故障时,从节点进行选举,产生新的主节点,从而保障了业务的高可用。


手把手教你如何进行业务系统数据库技术选型


其次MongoDB支持数据分片,当业务量急速扩展时,原先部署数据库的五台服务器就不够了,现在需要增加服务器节点数,对于Mysql来说,采用分库分表就可以解决问题,对于MongoDB则是通过将一个集合上的数据按片键分到不同的分片上,减少同一个数据文件上的数据量,再通过配置文件将数据引向不同的分片即可。.




手把手教你如何进行业务系统数据库技术选型


最后MongoDB支持文档模型,可以根据业务数据类型的变化来去增加或删减字段,而不需要按照确定的表结构去增加删除。比如在Mysql中,当一个用户填写了家里的收货地址、公司收货地址、朋友收货地址等多个地址时,需要建立联系人表、地址表将其关联,而在MongoDB中只需要一个集合就可以搞定了。




手把手教你如何进行业务系统数据库技术选型


在数据库选型我们都需要考虑数据量、并发量、实时性、一致性、读写分布、数据类型、安全性、运维成本都指标,常见的系统数据库选型如下所示:


手把手教你如何进行业务系统数据库技术选型


现在假设你在主导或参与一个系统的开发,相信你已经非常清楚如何选型数据库、如何应对后续出现的问题了吧?知其然知其所以然~


云服务器ECS地址:阿里云·云小站

相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。   相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
相关文章
|
2月前
|
Cloud Native 数据管理 数据挖掘
核心系统转型问题之阿里云数据库用户需求的通用性和差异性如何平衡
核心系统转型问题之阿里云数据库用户需求的通用性和差异性如何平衡
|
6天前
|
JavaScript Java 关系型数据库
毕设项目&课程设计&毕设项目:基于springboot+vue实现的在线考试系统(含教程&源码&数据库数据)
本文介绍了一个基于Spring Boot和Vue.js实现的在线考试系统。随着在线教育的发展,在线考试系统的重要性日益凸显。该系统不仅能提高教学效率,减轻教师负担,还为学生提供了灵活便捷的考试方式。技术栈包括Spring Boot、Vue.js、Element-UI等,支持多种角色登录,具备考试管理、题库管理、成绩查询等功能。系统采用前后端分离架构,具备高性能和扩展性,未来可进一步优化并引入AI技术提升智能化水平。
毕设项目&课程设计&毕设项目:基于springboot+vue实现的在线考试系统(含教程&源码&数据库数据)
|
8天前
|
Java 关系型数据库 MySQL
毕设项目&课程设计&毕设项目:springboot+jsp实现的房屋租租赁系统(含教程&源码&数据库数据)
本文介绍了一款基于Spring Boot和JSP技术的房屋租赁系统,旨在通过自动化和信息化手段提升房屋管理效率,优化租户体验。系统采用JDK 1.8、Maven 3.6、MySQL 8.0、JSP、Layui和Spring Boot 2.0等技术栈,实现了高效的房源管理和便捷的租户服务。通过该系统,房东可以轻松管理房源,租户可以快速找到合适的住所,双方都能享受数字化带来的便利。未来,系统将持续优化升级,提供更多完善的服务。
毕设项目&课程设计&毕设项目:springboot+jsp实现的房屋租租赁系统(含教程&源码&数据库数据)
|
2月前
|
前端开发 数据库 虚拟化
太6了!用Python快速开发数据库入库系统
太6了!用Python快速开发数据库入库系统
|
2月前
|
缓存 NoSQL 数据库
Web服务器与数据库优化:提升系统性能的最佳实践
【8月更文第28天】在现代的Web应用中,Web服务器与后端数据库之间的交互是至关重要的部分。优化这些组件及其相互作用可以显著提高系统的响应速度、吞吐量和可扩展性。本文将探讨几种常见的优化策略,并提供一些具体的代码示例。
59 1
|
2月前
|
JavaScript Java 关系型数据库
毕设项目&课程设计&毕设项目:基于springboot+vue实现的前后端分离的选课管理系统(含教程&源码&数据库数据)
本文介绍了一个基于Spring Boot和Vue.js技术栈的高校选课管理系统的设计与实现。该系统采用前后端分离架构,旨在提高选课效率、优化资源分配及提升用户体验。技术栈包括:后端Spring Boot 2.0、前端Vue 2.0、数据库MySQL 8.0、开发环境JDK 1.8和Maven 3.6等。系统功能覆盖登录、学生信息管理、选课管理、成绩查询等多个方面,并针对学生、教师和管理员提供了不同的操作界面。系统采用了响应式设计,支持多设备访问,并通过Element UI增强了界面的友好性和交互性。
毕设项目&课程设计&毕设项目:基于springboot+vue实现的前后端分离的选课管理系统(含教程&源码&数据库数据)
|
2月前
|
存储 SQL NoSQL
详解数据库管理系统(DBMS)
【8月更文挑战第31天】
32 0
|
15天前
|
NoSQL 关系型数据库 MySQL
微服务架构下的数据库选择:MySQL、PostgreSQL 还是 NoSQL?
在微服务架构中,数据库的选择至关重要。不同类型的数据库适用于不同的需求和场景。在本文章中,我们将深入探讨传统的关系型数据库(如 MySQL 和 PostgreSQL)与现代 NoSQL 数据库的优劣势,并分析在微服务架构下的最佳实践。
|
17天前
|
存储 SQL 关系型数据库
使用MySQL Workbench进行数据库备份
【9月更文挑战第13天】以下是使用MySQL Workbench进行数据库备份的步骤:启动软件后,通过“Database”菜单中的“管理连接”选项配置并选择要备份的数据库。随后,选择“数据导出”,确认导出的数据库及格式(推荐SQL格式),设置存储路径,点击“开始导出”。完成后,可在指定路径找到备份文件,建议定期备份并存储于安全位置。
152 11
|
12天前
|
存储 SQL 关系型数据库
MySQL的安装&数据库的简单操作
本文介绍了数据库的基本概念及MySQL的安装配置。首先解释了数据库、数据库管理系统和SQL的概念,接着详细描述了MySQL的安装步骤及其全局配置文件my.ini的调整方法。文章还介绍了如何启动MySQL服务,包括配置环境变量和使用命令行的方法。最后,详细说明了数据库的各种操作,如创建、选择和删除数据库的SQL语句,并提供了实际操作示例。
54 13
MySQL的安装&数据库的简单操作