当前位置: 首页 > 科技观察

教你如何为业务系统选择数据库技术

时间:2023-03-16 13:52:28 科技观察

随着云计算、大数据、物联网时代的到来,越来越多的网民涌入互联网,越来越多的应用系统需要支持海量的数据存储,随着业务需求满足高并发、高可靠、高扩展性要求,传统的关系型数据库已经不能完全满足需求,于是NoSQL应运而生。那么什么是SQL?什么是NoSQL?业务系统如何选择数据库技术?NoSQL!=NOSQL,而是NotOnlySQL,作为关系型数据库的补充出现。关系数据库是由关系模型组织的数据库。简单的说就是一个二维表模型,包括relations(表名)、tuples(二维表中的一行)、attributes(二维表中的一列)、domain(表的取值范围)attribute)、keyword(可以唯一标识元组的属性)、关系模式(表结构、关系的描述)等概念。以用户信息表为例,用户信息表是整个关系,元组是一行记录,由姓名、性别、年龄、电话号码、地区组成,属性是单独的地区列、年龄列等,域是区域。省市等,关键字是用户ID,可以唯一标识用户,关系模型是整张表,包括姓名、性别、年龄、电话号码、地域属性。对于关系型数据库来说,一直很受欢迎,原因有以下四点:事务一致性强。数据库的ACID(原子性、一致性、隔离性和持久性)确保所有记录的数据都是准确的。对于互联网早期,大家并不完全相信看不见摸不着的东西,所以这个特性很重要;很容易理解,二维表的结构非常符合现实世界。简单易用,通用的sql语言使得操作关系型数据库非常方便;易于维护,在设计中采用了实体完整性和参照完整性的概念,减少了数据冗余和数据不一致。常用的关系型数据库有Mysql、Oracle等。但是随着互联网海量数据的增加,关系型数据库也存在瓶颈,具体如下:某个region列表需要逐行读取,然后获取用户名的属性,对磁盘的IO消耗很大;不能弹性伸缩,关系型数据库不能像webserver一样通过增加更多的硬件和服务节点来扩展性能,这对于数据库数量快速增长的需要24小时提供服务的企业来说是非常难受的;不再需要交易的强一致性和实时读写。在早期,这是关系型数据库的优势,随着互联网业务覆盖范围的广泛,用户可以接受一定的延迟和错误。因此,NoSQL关系型数据库应运而生。作为关系型数据库的补充,根据互联网时代的不同需求,可以分为:支持高性能并发读写的Key-Value型数据库,如Redis;支持海量数据访问的文档数据库,如MongoDB、CouchDB;支持大数据存储和分析的列式数据库,如HBase;支持全文搜索的搜索引擎数据库,例如ElasticSearch。数据库的使用是根据具体的业务场景来确定的。毫无疑问,涉及到事务场景,关系型数据库是必不可少的,因为我们要求数据必须是一致的,不能允许出现任何错误。在大多数互联网公司中,SQL和NoSQL一般是一起使用的。下面我们以一个快速发展的电子商务网站来说说如何选择技术。从业务类型来看,电子商务具有用户量和订单量快速增长、网站延迟低、对部分数据准确性要求高等特点。因此,需要数据库能够支持读写的高并发、低延迟和高吞吐、安全稳定、高可用。从数据类型来看,包括用户个人信息数据、商品信息数据和交易数据三种类型。对于交易数据,需要保证无错,而其他类型的数据则要求无错存储。从数据驱动运营的角度来看,未来用户在平台上产生的所有数据,都将用于数据分析、智能推荐、二次营销等。综上所述,我们选择的数据库是MySQL和MongoDB。毫无疑问,选择MySQL是为了保证用户信息、交易数据等核心业务数据不会出错。这是关系型数据库最大的优势。选择MongoDB是因为它的高可用性和文档模型。关于高可用,首先,MongoDB的架构是主备模式。一个主节点接受来自服务器的读写,两个从节点同步第一个主节点的数据。当主节点出现故障时,会选举从节点产生新的主节点,从而保证业务的高可用。其次,MongoDB支持数据分片。当业务量快速膨胀时,用于部署数据库的5台服务器已经不够用了。现在需要增加服务器节点的数量。对于Mysql,可以采用分库分表的方式解决问题。就是将一个collection上的数据按照shardkey分到不同的shard,减少同一个数据文件上的数据量,然后通过配置文件将数据定向到不同的shard。最后,MongoDB支持文档模型,可以根据业务数据类型的变化来增加或删除字段,而不是根据确定的表结构来增加或删除。例如在Mysql中,当用户填写家庭收货地址、公司收货地址、朋友收货地址等多个地址时,需要建立联系人表和地址表来关联,但只需要一个在MongoDB中设置好就大功告成了。在数据库选型中,我们都需要考虑数据量、并发、实时性、一致性、读写分布、数据类型、安全性、运维成本等。常见的系统数据库选择如下:现在假设你正在领导或参与开发一个系统,相信你已经知道如何选择数据库以及如何处理后续问题了?知其所以然~