`

关系型数据库及NoSQL产品的选取

阅读更多

一、关系型数据库面对数据访问的压力,通常采取的解决方案步骤(以MySQL为例)

1、主从复制,实现读写分离或分布读;
2、读请求比较多,可添加缓存服务器,如Memcached,以提升读性能;但此时得手动维护数据的一致性;
3、写请求较多的场景,可简单进行向上扩展,使用性能更强的服务器以应付更多的写请求;同时,为了保证从服务器跟得上主服务器的更新速度,可能需要从服务器使用与主服务器相同的配置;此法性价比不高;
4、数据访问压力进一步增大时,联结查询性能会急剧下降;此时就得进行“反模式”化设计,将表根据业务需求进行合并,以增大数据冗余来换取系统性能;
5、停用存储过程、存储函数或触发器等代码,将对应的功能在应用程序中完成;
6、删除表的各辅助索引,改写查询使其仅使用主键索引;
7、数据库切分(sharding);此法复杂度较大,维护成本较高;且数据规模再次提升时重新切分的成本高昂,二次扩展能力受限;
 
二、RDBMS与NoSQL
 
实际使用中,只要架构得当,关系型数据库完全能够服务于各种级别的数据存储应用,比如Facebook和Google各自有着运转良好的MySQL服务器集群服务于不同层次不同领域的数据存储场景。但此等规模的应用需要强大的技术实力突破各式各样的应用限制,这也会带来居高不下的维护成本,而且关系型数据库某些内生性的限制依然会成为应用中的梦魇。于是,近几年来,一些被归类为NoSQL的新项目或框架在多个组织或企业中雨后春笋般涌现。这些新项目或框架很少提供类似SQL语言一样的查询语言,而是提供了一种简化的、类API的数据访问接口。但RDBMS与NoSQL真正的不同之处在于低层,即存储级别,因为NoSQL通常不支持事务或辅助索引的功能等。
 
另一方面,NoSQL的著名项目中彼此间有许多功能是重叠的,甚至有不少特性与传统的关系型数据库的功能也存在相同之处,因此NoSQL算不上革命性的技术,尽管从工程师的眼下其绝对是革命性的。于是,现实中,memcached也被划归了NoSQL阵营,似乎不属于RDBMS的存储管理类程序都自然而然的属于NoSQL,NoSQL也因而成为了非RDBMS系统的“海纳百川”之地。然而,“有容乃大”就难免“鱼龙混杂”,为了便于理解,这里从多个维度来对NoSQL的主流技术进行简单的归类,以便对此能有个概括性的认识,并能够在实际应用场景中有个可以参照的选择标准。
 
1、数据模型
数据模型指数据的存储方式,其有好几个流派,如关系、键值、列式、文档及图像等。在它们的各自实现中,关系型数据库有MySQL、PostgreSQL、Oracle等,键值数据库有memcached、membase、Riak、Redis等,列式数据库有HBase、Cassandra、Hypertable等,文档数据库有MongoDB、CouchDB等,图像数据库有Neo4J等。在选用某特定的NoSQL产品时,应该事先评估应用程序是如何访问数据的,以及数据的schema是否经常演进等。
 
2、存储模型
指数据存储是基于内存存储还是持久存储。
 
3、一致性模型
存储系统在何种级别实现数据一致性,严格一致性还是结果一致性?一致性的等级可能会对数据访问延迟带来巨大影响。
 
4、物理模型
在物理模型上可归类分布式存储及单机存储。对分布式存储而言,其扩展能力及易扩展性如何也是一个重要的衡量指标。
 
5、读/写性能
对于工作在不同应用场景中的应用程序而言,其读/写需求有着显著不同。而不同的NoSQL产品也有着不同的适用性。
 
6、辅助索引
辅助索引有助于实现在非主键字段上完成排序、查询操作等;有的NoSQL产品不提供此类功能。
 
7、故障处理
不同的应用场景其故障恢复的时间容忍度不同,而不同的NoSQL产品也故障恢复能力方面也有着不同的表现。
 
8、数据压缩
当存储TB级别的数据时,尤其是存储文本数据时,数据压缩可以大量节约存储空间。
 
9、负载均衡
分布式存储将用户的读/写请求分布于多个节点同时进行能够极大提升系统性能。
 
10、锁、等待和死锁
RDBMS的事务处理过程分为两个阶段,多用户并发访问的场景中,这将显著增加用户在访问资源时的等待时间,甚至会导致死锁。
 
三、数据一致性模型
 
概括来讲,数据一致性是指在应用程序访问时,数据的有效性(validity)、可用性(usability)、精确性(accuracy)及完整性(integrity)方面的表现,其用于保证在用户自身事务或其他用户的事务执行过程中,每个用户看到的数据是一致的。在各种场景中都有可能产生数据一致性问题,但提到的较多的通常有应用程序一致性、事务一致性和时间点一致性等。
 
在数据库上,每个操作都可能促使数据库从一种状态转换为另一种状态,但这种转换的实现方式或过程是非特定的,因此其有着多种不同的模型。不过,无论是基于哪种实现,其最终结果要么是转换为的状态,要么恢复回原有的状态以保证数据的一致性。根据数据库在保证数据一致性实现的严格程度来分,大致有如下几类:
 
严格一致性(strict)
数据的改变是原子性的并且会立即生效;这是最高级别的一致性实现;
顺序一致性(Sequential)
每个客户端以他们提交应用的次序看到数据的改变;
因果一致性(Causal)
因果关联的所有的改变,在所有的客户端以同样的次序获取;
结果一致性(Eventual)
当一段时间内没有更新发生时,所有更新会通过系统进行传播,最终所有的副本都是一致的;也即当事务完成时,必须使所有数据都具有一致的状态;
弱一致性(Weak)
不保证所有的更新都能通告给所有客户端,也不保证所有客户端都能以同样的次序获取数据更新;
 
其中,结果一致性还可以进一步细分为多种不同的子类别,而且有些子类还可以共存,亚马逊公司的现任CTO Werner Vogels在“Eventually Consistent一文中对此有详细阐述。在文中,他还提出了CAP定理,并借此指出,一个分布式系统仅能同时实现一致性、可用性和分区容错错(partition tolerance)三种属性中的两种。
分享到:
评论

相关推荐

    2023向量数据库主要应用场景市场规模及国内外向量数据库公司分析报告.pdf

    关系型数据库是依据“一对一、一对多、多对多”的关系模型创建数据库,并将数据以二维表格的形式储存,各个表之间建立关系,通过这些关联的表格间分类、合并、连接或选取等运算来实现数据的管理。 非关系型数据库是...

    数据库数据库数据库数据库数据库

    此外,还有非关系型数据库(NoSQL),如MongoDB、Cassandra和Redis,它们适用于处理大规模分布式数据或实时高并发访问。 数据库管理系统的功能包括数据存储、查询、更新和删除。SQL(结构化查询语言)是与数据库...

    MyHBase_一种基于Hbase的NewSQL数据库的设计与实现

    新SQL数据库(NewSQL)是一种结合传统关系型数据库(RDBMS)特性和非关系型数据库(NoSQL)优势的新型数据库架构。它旨在解决传统数据库在可用性和可扩展性方面的限制,同时克服NoSQL数据库不支持SQL带来的学习和...

    计算机专业高级教程期中考试(数据库).doc

    2. 数据库类型划分:数据库可以根据其数据模型来划分,如关系型数据库(RDBMS)和非关系型数据库(NOSQL)。关系型数据库以二维表为基本数据结构,而非关系型数据库则包括文档型、键值对、图形等多种数据结构。 3. 开源...

    mysql数据库.pdf

    而非关系型数据库,比如MongoDB和Redis,通常被称为NoSQL数据库,它们在处理大量数据和需要高效率及高性能的特定场景下非常有效,是对传统关系型数据库的有效补充。 MySQL作为一种流行的开源关系型数据库管理系统,...

    数据库原理及技术复习题及答案.doc

    10. 数据库系统主要分为关系型数据库系统、对象-关系数据库系统、非关系型数据库系统(NoSQL)等。 11. 在关系代数中,除法运算(Divide)的结果目的取决于参与运算的关系。R÷S的结果目的为m+n-k,其中R有m个属性...

    数据库查询

    常见的数据库类型包括关系型数据库(如MySQL、PostgreSQL)、非关系型数据库(如MongoDB、Cassandra)以及NoSQL数据库等。关系型数据库遵循ACID(原子性、一致性、隔离性和持久性)原则,而NoSQL数据库则更注重水平...

    淮海工学院数据库原理及技术复习题及答案.doc

    10. 数据库系统按类型划分,包括关系型数据库、对象-关系数据库和NoSQL数据库等。 11. 选择题中的问题涉及到关系规范化理论,如第一范式(1NF)、第二范式(2NF)、第三范式(3NF)和BCNF(Boyce-Codd范式),以及...

    南大软件学院 软件工程数据库技术

    数据库技术的基础在于数据模型,包括关系型数据模型(如SQL)、层次数据模型、网络数据模型和NoSQL数据模型。关系型数据模型是最常见的,由E.F.科德提出,通过表格形式表示数据,支持CRUD(创建、读取、更新、删除)...

    数据库系统

    数据模型是数据库设计的基础,常见的有关系型数据模型、层次数据模型、网络数据模型以及近年来流行的NoSQL数据模型。关系型数据模型,如我们熟悉的表形式,由表格、列和行组成,支持ACID(原子性、一致性、隔离性和...

    四川地区高职院校数据库软件使用研究及思考.docx

    传统的基于ER分析的关系型数据库,如MySQL,尽管在某些场景下表现出色,但在处理大量数据、高并发请求时存在局限。因此,NoSQL数据库应运而生,它不遵循ACID原则,提供非关系型的分布式数据存储解决方案,以适应...

    【国开搜题】国家开放大学 一网一平台 24春数据库应用试卷包01 期末考试押题试卷.docx

    - **NoSQL 作为辅助存储**: 主要数据存储在关系型数据库中,NoSQL用于缓存或辅助查询。 - **答案**: AB #### 6. 分布式数据模型中的分片方式 - **水平分片**: 按照行划分数据。 - **垂直分片**: 按照列划分数据。 ...

    SQL数据库概论.rar

    1. **数据库基本概念**:数据库是一个有组织的数据集合,它可以是结构化的,比如关系型数据库,也可以是非结构化的,如NoSQL数据库。关系型数据库以表格形式存储数据,每个表都有一个唯一的键来标识记录。 2. **SQL...

    《数据库原理及应用》课程设计报告打印模板.docx

    NoSQL数据库是非关系型数据库,主要用于超大规模数据存储。它们具有高扩展性、高性能等特点,适用于处理大量非结构化数据。 #### 3. 云数据库 云数据库是指部署在云计算平台上的数据库服务。用户无需购买硬件设备...

    数据库系统概论(第四版) 高等教育出版社 王珊

    5. **NoSQL数据库**:为了满足大规模分布式存储的需求,NoSQL数据库应运而生,主要特点是非关系型、分布式的,支持大数据和实时Web应用。 #### 五、数据库设计方法 1. **需求分析**:明确数据库的目标、确定数据库...

    大数据知识点(2).docx

    - **非关系型数据库(NoSQL)**:包括Elasticsearch(ES)、Redis和HBase等,它们通常用于处理大规模分布式数据,适合动态和不可预测的数据结构。 4. **关系模型**: - **元组**:二维表格中的一行数据。 - **...

    merkava:快速排序的NoSQL数据库

    **NoSQL(Not Only SQL)** 是一种非关系型数据库技术,它打破了传统的关系型数据库模型,提供了高可伸缩性、灵活性和高性能。NoSQL数据库通常用于大数据、实时分析和分布式系统中,因为它们能够处理大规模的数据量...

    数据库教程

    - **非关系型数据库(NoSQL)**:一种非关系型、分布式、没有固定表结构的数据库设计,具有灵活的可扩展性。 ### SQL基础 - **SQL概述**: - **SQL**(Structured Query Language)是一种标准的数据库查询语言,主要...

    数据库系统概论课件 第四版

    课件将探讨大数据的处理技术,如Hadoop和Spark,以及NoSQL数据库的类型(如键值存储、列族、文档型和图形数据库)及其特点。 通过学习《数据库系统概论》的这七个主要部分,你将能够全面了解数据库系统的核心概念和...

Global site tag (gtag.js) - Google Analytics