什么是NoSQL

什么是NoSQL

NoSQL,指的是非关系型的数据库。NoSQL有时也称作Not Only SQL的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称。

NoSQL用于超大规模数据的存储。针对非结构化数据、半结构化数据具有很好的支持。

NoSQL的特点

  1. 代表着不仅仅是SQL;
  2. 没有声明性查询语言;
  3. 没有预定义的模式;
  4. 键 - 值对存储,列存储,文档存储,图形数据库;
  5. 最终一致性,而非ACID属性
  6. 非结构化和不可预知的数据
  7. CAP定理
  8. 高性能,高可用性和可伸缩性

NoSQL的优点/缺点

  • 优点:
    • 高可拓展性
    • 分布式计算
    • 低成本
    • 架构的灵活性,半结构化数据
  • 缺点:
    • 没有标准化
    • 查询功能有限
    • 最终一致性是不直观的程序(CAP定理

关联产品(根据CAP定理衍生)

CAP

类型代表产品特点
KV存储redis/Memcachekey-value储存,根据key快速查询到value
列存储Hbase/Cassandra是按列存储数据的。最大的特点是方便存储结构化和半结构化数据,方便做数据压缩,对针对某一列或者某几列的查询有非常大的IO优势
文档存储MongoDB文档存储一般用类似json的格式存储,存储的内容是文档型的。这样也就有机会对某些字段建立索引,实现关系数据库的某些功能。

链接

参考文档

关系型数据库和NoSQL数据库 什么是NoSQL 大家有没有听说过“NoSQL”呢?近年,这个词极受关注。看到“NoSQL”这个词,大家可能会误以为是“No!SQL”的缩写,并深感愤怒:“SQL怎么会没有必要了呢?”但实际上,它是“Not Only SQL”的缩写。它的意义是:适用关系型数据库的时候就使用关系型数据库,不适用的时候也没有必要非使用关系型数据库不可,可以考虑使用更加合适的数据存储。 为弥补关系型数据库的不足,各种各样的NoSQL数据库应运而生。 为了更好地了解本书所介绍的NoSQL数据库,对关系型数据库的理解是必不可少的。那么,就让我们先来看一看关系型数据库的历史、分类和特征吧。 关系型数据库简史 1969年,埃德加•弗兰克•科德(Edgar Frank Codd)发表了划时代的论文,首次提出了关系数据模型的概念。但可惜的是,刊登论文的《IBM Research Report》只是IBM公司的内部刊物,因此论文反响平平。1970年,他再次在刊物《Communication of the ACM》上发表了题为“A Relational Model of Data for Large Shared Data banks”(大型共享数据库的关系模型)的论文,终于引起了大家的关注。 科德所提出的关系数据模型的概念成为了现今关系型数据库的基础。当时的关系型数据库由于硬件性能低劣、处理速度过慢而迟迟没有得到实际应用。但之后随着硬件性能的提升,加之使用简单、性能优越等优点,关系型数据库得到了广泛的应用。 通用性及高性能 虽然本书是讲解NoSQL数据库的,但有一个重要的大前提,请大家一定不要误解。这个大前提就是“关系型数据库的性能绝对不低,它具有非常好的通用性和非常高的性能”。毫无疑问,对于绝大多数的应用来说它都是最有效的解决方案。 突出的优势 关系型数据库作为应用广泛的通用型数据库,它的突出优势主要有以下几点: 保持数据的一致性(事务处理) 由于以标准化为前提,数据更新的开销很小(相同的字段基本上都只有一处) 可以进行JOIN等复杂查询 存在很多实际成果和专业技术信息(成熟的技术) 这其中,能够保持数据的一致性是关系型数据库的最大优势。在需要严格保证数据一致性和处理完整性的情况下,用关系型数据库是肯定没有错的。但是有些情况不需要JOIN,对上述关系型数据库的优点也没有什么特别需要,这时似乎也就没有必要拘泥于关系型数据库了。 关系型数据库的不足 不擅长的处理 就像之前提到的那样,关系型数据库的性能非常高。但是它毕竟是一个通用型的数据库,并不能完全适应所有的用途。具体来说它并不擅长以下处理: 大量数据的写入处理 为有数据更新的表做索引或表结构(schema)变更 字段不固定时应用 对简单查询需要快速返回结果的处理 。。。。。。 NoSQL数据库 为了弥补关系型数据库的不足(特别是最近几年),NoSQL数据库出现了。关系型数据库应用广泛,能进行事务处理和JOIN等复杂处理。相对地,NoSQL数据库只应用在特定领域,基本上不进行复杂的处理,但它恰恰弥补了之前所列举的关系型数据库的不足之处。 易于数据的分散 如前所述,关系型数据库并不擅长大量数据的写入处理。原本关系型数据库就是以JOIN为前提的,就是说,各个数据之间存在关联是关系型数据库得名的主要原因。为了进行JOIN处理,关系型数据库不得不把数据存储在同一个服务器内,这不利于数据的分散。相反,NoSQL数据库原本就不支持JOIN处理,各个数据都是独立设计的,很容易把数据分散到多个服务器上。由于数据被分散到了多个服务器上,减少了每个服务器上的数据量,即使要进行大量数据的写入操作,处理起来也更加容易。同理,数据的读入操作当然也同样容易。 提升性能和增大规模 下面说一点题外话,如果想要使服务器能够轻松地处理更大量的数据,那么只有两个选择:一是提升性能,二是增大规模。下面我们来整理一下这两者的不同。 首先,提升性能指的就是通过提升现行服务器自身的性能来提高处理能力。这是非常简单的方法,程序方面也不需要进行变更,但需要一些费用。若要购买性能翻倍的服务器,需要花费的资金往往不只是原来的2倍,可能需要多达5到10倍。这种方法虽然简单,但是成本较高。 另一方面,增大规模指的是使用多台廉价的服务器来提高处理能力。它需要对程序进行变更,但由于使用廉价的服务器,可以控制成本。另外,以后只要依葫芦画瓢增加廉价服务器的数量就可以了。 不对大量数据进行处理的话就没有使用的必要吗? NoSQL数据库基本上来说为了“使大量数据的写入处理更加容易(让增加服务器数量更容易)”而设计的。但如果不是对大量数据进行操作的话,NoSQ
NoSQL数据库是一种非关系型的数据库管理系统,旨在提供一种比传统关系型数据库更灵活、更具可扩展性的数据存储解决方案。它特别适用于处理大规模数据集和实时Web应用程序[^1]。与传统的关系型数据库不同,NoSQL数据库不依赖于固定模式的表格结构,并且通常不支持JOIN操作,也不严格遵循ACID(原子性、一致性、隔离性、持久性)属性。 NoSQL数据库采用的数据模型通常是键/值对、文档、列族等形式之一。这些数据模型允许存储和查询复杂的数据结构,同时提供了更高的灵活性和分布式处理能力[^2]。由于其设计上的特点,NoSQL数据库能够轻松地进行水平扩展,这意味着可以通过增加更多的服务器来提高性能和容量,而不是升级单个服务器的硬件规格。 在大数据时代背景下,NoSQL数据库还支持MapReduce风格的编程方法,这使得它们非常适合用来处理大量的非结构化或半结构化的数据。随着互联网服务的发展,对于高并发读写访问的需求日益增长,NoSQL数据库以其特有的优势满足了这类需求,在许多现代的应用场景中得到了广泛的应用。 ### NoSQL数据库的概念 NoSQL数据库的核心理念是“不仅仅是SQL”,即除了标准的SQL语言之外,还可以使用其他方式来管理和操作数据。这种类型的数据库被设计成可以处理大量分散的数据,并且能够在廉价的商品硬件上运行,从而降低了成本[^1]。 ### NoSQL数据库的作用 - 提供灵活的数据模型以适应多样化的数据类型。 - 支持大规模数据的高效存储与快速检索。 - 实现跨多个节点的数据分布,增强系统的可用性和容错能力。 - 优化读写速度,适合需要频繁更新和查询的应用环境。 ### NoSQL数据库的特征 - **灵活性**:没有固定的表结构,可以根据需要动态调整数据格式。 - **可扩展性**:易于通过添加更多机器到集群中来实现横向扩展。 - **高性能**:针对特定的工作负载进行了优化,如高速缓存或者日志记录等。 - **最终一致性**:为了保证高可用性和分区容忍度,可能牺牲了一定程度的一致性。 ```python # 示例代码 - 使用Python字典模拟一个简单的键值存储 no_sql_example = { "user:1001": {"name": "Alice", "email": "alice@example.com"}, "user:1002": {"name": "Bob", "email": "bob@example.com"} } def get_user(user_id): return no_sql_example.get(f"user:{user_id}") print(get_user(1001)) # 输出用户Alice的信息 ``` 以上示例仅演示了一个非常基础的键值对形式的数据存储方式,实际应用中的NoSQL数据库会更加复杂并包含多种功能和服务。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值