一篇文章带你弄懂什么是 NoSQL

数据库 其他数据库
NoSQL是一类非 SQL(关系)数据库,使用预定义表和列之外的其他数据模型。此类包含许多不同类型的数据库以及数据存储和操作的方法。

一、什么是 NoSQL

NoSQL是一类非 SQL(关系)数据库,使用预定义表和列之外的其他数据模型。此类包含许多不同类型的数据库以及数据存储和操作的方法。

二、什么是 SQL

NoSQL与几十年来事实上的标准关系 (SQL) 数据库相对立。SQL 数据库将数据存储在由具有严格数据类型的列组成的预定义表中。表可以具有唯一性(表中行之间的关系)、检查约束(验证一行中的数据)或外键约束(不同表中数据之间的关系)。

示例关系数据模型:

什么是 NoSQL

SQL是一种标准查询语言,用于定义、操作和搜索关系数据库中的数据。

基本 SQL 查询:

select customer_no, first_name, last_name, last_purchase
from customers
where address_state = 'CA'

为什么关系数据库还不够?

  1. 模式的灵活性——关系数据库具有固定的模式,这意味着它们只能保存由数据库管理员预定义的对象(在表中)和属性(在列中)(写入模式)。
  2. 开发中的敏捷性——必须在写入数据之前定义模式使得开发数据库的速度要慢得多。在 NoSQL 数据库中,您可以只编写数据并在需要读取数据时担心它们的数据格式(读取模式),这使开发更加敏捷。
  3. 数据大小——许多 NoSQL 数据库在构建时都考虑到了大规模数据,并且能够存储大量行或对象,从而牺牲了对其完整性的管理。

三、NoSQL 数据库的类型

1、文档数据库

文档数据库将数据存储在 JSON 文档中,这些文档是键值对的分层集合。文档可能很复杂,并且包含子文档和列表。

这是代表客户的示例文档:

{
"id": "1",
"name":{
"firstName":"John",
"lastName": "Doe"
},
"address":{
"street":"Lombard street",
"city": "San Francisco",
"state": "CA",
"country": "US",
}
}

流行的文档数据库:

  1. MongoDB
  2. DynamoDB
  3. Couchbase
  4. CouchDB

2、键值存储

键值存储是最基本的 NoSQL 数据库,将数据存储在简单的键值对中(在最简单的情况下,两者都是纯字符串),这意味着您可以在特定标签下存储一些值。

什么是 NoSQL

Redis的一个例子:

> set customer1 JohnDoe

流行的键值存储:

  1. Redis
  2. Berkley DB

3、图数据库

图数据库将数据表示为由节点关系构建的网络。

什么是 NoSQL

流行的图数据库:

  1. Neo4J
  2. Giraph

4、宽列存储

宽列存储存储类似于关系数据库,它们将数据存储在表中,但数据是按列物理组织的。宽列数据库中的数据是稀疏的,这意味着空列不占用空间,并且允许在表中创建数百、数千甚至数百万列。

什么是 NoSQL

流行的宽列数据库:

  1. Apache Cassandra。
  2. Apache HBase。
  3. Google Bigtable。
责任编辑:姜华 来源: 今日头条
相关推荐

2021-06-30 10:01:09

Python字典代码

2018-10-22 12:50:20

CDN网络内容发布网络

2021-06-16 10:03:37

Python案例分析Python基础

2022-02-21 09:44:45

Git开源分布式

2021-06-30 00:20:12

Hangfire.NET平台

2023-05-12 08:19:12

Netty程序框架

2019-07-01 15:01:44

NVMe接口存储

2021-07-03 10:02:30

Python字符串浏览器

2021-01-07 11:10:47

关键字

2022-08-04 09:39:39

Kubernetes声明式系统

2021-06-09 09:00:11

Python数据类型基础

2024-05-10 13:46:36

Python进制

2021-06-05 10:02:15

Python进制数据类型

2024-11-27 16:38:07

2021-07-01 10:01:16

JavaLinkedList集合

2021-06-04 09:56:01

JavaScript 前端switch

2021-02-02 18:39:05

JavaScript

2020-11-10 10:48:10

JavaScript属性对象

2022-12-14 08:03:27

CSS变量前端

2020-02-28 11:29:00

ElasticSear概念类比
点赞
收藏

51CTO技术栈公众号