一、关系型数据库面对数据访问的压力,通常采取的解决方案步骤(以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)三种属性中的两种。
相关推荐
关系型数据库是依据“一对一、一对多、多对多”的关系模型创建数据库,并将数据以二维表格的形式储存,各个表之间建立关系,通过这些关联的表格间分类、合并、连接或选取等运算来实现数据的管理。 非关系型数据库是...
此外,还有非关系型数据库(NoSQL),如MongoDB、Cassandra和Redis,它们适用于处理大规模分布式数据或实时高并发访问。 数据库管理系统的功能包括数据存储、查询、更新和删除。SQL(结构化查询语言)是与数据库...
新SQL数据库(NewSQL)是一种结合传统关系型数据库(RDBMS)特性和非关系型数据库(NoSQL)优势的新型数据库架构。它旨在解决传统数据库在可用性和可扩展性方面的限制,同时克服NoSQL数据库不支持SQL带来的学习和...
2. 数据库类型划分:数据库可以根据其数据模型来划分,如关系型数据库(RDBMS)和非关系型数据库(NOSQL)。关系型数据库以二维表为基本数据结构,而非关系型数据库则包括文档型、键值对、图形等多种数据结构。 3. 开源...
而非关系型数据库,比如MongoDB和Redis,通常被称为NoSQL数据库,它们在处理大量数据和需要高效率及高性能的特定场景下非常有效,是对传统关系型数据库的有效补充。 MySQL作为一种流行的开源关系型数据库管理系统,...
10. 数据库系统主要分为关系型数据库系统、对象-关系数据库系统、非关系型数据库系统(NoSQL)等。 11. 在关系代数中,除法运算(Divide)的结果目的取决于参与运算的关系。R÷S的结果目的为m+n-k,其中R有m个属性...
常见的数据库类型包括关系型数据库(如MySQL、PostgreSQL)、非关系型数据库(如MongoDB、Cassandra)以及NoSQL数据库等。关系型数据库遵循ACID(原子性、一致性、隔离性和持久性)原则,而NoSQL数据库则更注重水平...
10. 数据库系统按类型划分,包括关系型数据库、对象-关系数据库和NoSQL数据库等。 11. 选择题中的问题涉及到关系规范化理论,如第一范式(1NF)、第二范式(2NF)、第三范式(3NF)和BCNF(Boyce-Codd范式),以及...
数据库技术的基础在于数据模型,包括关系型数据模型(如SQL)、层次数据模型、网络数据模型和NoSQL数据模型。关系型数据模型是最常见的,由E.F.科德提出,通过表格形式表示数据,支持CRUD(创建、读取、更新、删除)...
数据模型是数据库设计的基础,常见的有关系型数据模型、层次数据模型、网络数据模型以及近年来流行的NoSQL数据模型。关系型数据模型,如我们熟悉的表形式,由表格、列和行组成,支持ACID(原子性、一致性、隔离性和...
传统的基于ER分析的关系型数据库,如MySQL,尽管在某些场景下表现出色,但在处理大量数据、高并发请求时存在局限。因此,NoSQL数据库应运而生,它不遵循ACID原则,提供非关系型的分布式数据存储解决方案,以适应...
- **NoSQL 作为辅助存储**: 主要数据存储在关系型数据库中,NoSQL用于缓存或辅助查询。 - **答案**: AB #### 6. 分布式数据模型中的分片方式 - **水平分片**: 按照行划分数据。 - **垂直分片**: 按照列划分数据。 ...
1. **数据库基本概念**:数据库是一个有组织的数据集合,它可以是结构化的,比如关系型数据库,也可以是非结构化的,如NoSQL数据库。关系型数据库以表格形式存储数据,每个表都有一个唯一的键来标识记录。 2. **SQL...
NoSQL数据库是非关系型数据库,主要用于超大规模数据存储。它们具有高扩展性、高性能等特点,适用于处理大量非结构化数据。 #### 3. 云数据库 云数据库是指部署在云计算平台上的数据库服务。用户无需购买硬件设备...
5. **NoSQL数据库**:为了满足大规模分布式存储的需求,NoSQL数据库应运而生,主要特点是非关系型、分布式的,支持大数据和实时Web应用。 #### 五、数据库设计方法 1. **需求分析**:明确数据库的目标、确定数据库...
- **非关系型数据库(NoSQL)**:包括Elasticsearch(ES)、Redis和HBase等,它们通常用于处理大规模分布式数据,适合动态和不可预测的数据结构。 4. **关系模型**: - **元组**:二维表格中的一行数据。 - **...
**NoSQL(Not Only SQL)** 是一种非关系型数据库技术,它打破了传统的关系型数据库模型,提供了高可伸缩性、灵活性和高性能。NoSQL数据库通常用于大数据、实时分析和分布式系统中,因为它们能够处理大规模的数据量...
- **非关系型数据库(NoSQL)**:一种非关系型、分布式、没有固定表结构的数据库设计,具有灵活的可扩展性。 ### SQL基础 - **SQL概述**: - **SQL**(Structured Query Language)是一种标准的数据库查询语言,主要...
课件将探讨大数据的处理技术,如Hadoop和Spark,以及NoSQL数据库的类型(如键值存储、列族、文档型和图形数据库)及其特点。 通过学习《数据库系统概论》的这七个主要部分,你将能够全面了解数据库系统的核心概念和...