什么是NoSQL?这里给你整明白-程序员宅基地

技术标签: linq  数据库  nosql  

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

一、什么是 NoSQL

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

二、什么是 SQL

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

示例关系数据模型:

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

基本 SQL 查询:

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

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

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

三、NoSQL 数据库的类型

1、文档数据库

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

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

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

流行的文档数据库:

  • MongoDB
  • DynamoDB
  • Couchbase
  • CouchDB

2、键值存储

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

Redis的一个例子:

> set customer1 JohnDoe

流行的键值存储:

  • Redis
  • Berkley DB

3、图数据库

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

流行的图数据库:

  • Neo4J
  • Giraph

4、宽列存储

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


流行的宽列数据库:

  • Apache Cassandra。
  • Apache HBase。
  • Google Bigtable。
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/yaxuan88521/article/details/125344898

智能推荐

MATLAB代码:基于二阶锥规划的主动配电网动态重构研究-程序员宅基地

文章浏览阅读42次。MATLAB代码:基于二阶锥规划的主动配电网动态重构研究参考文档:《考虑动态网络重构的主动配电网优化运行策略》参考了重构部分公式《主动配电网最优潮流研究及其应用实例》参考了二阶锥松弛部分公式仿真平台:MATLAB YALMIP+CPLEX优势:代码注释详实,适合参考学习,全程有讲解!,全程有讲解!程序非常精品!主要内容:代码主要主要研究的配电网优化,具体为配电网中的动态重构问题,代码分为两个部分,第一部分1)主动配电网单时段重构问题,重构结果以0-1变量表示,结果清晰明了;2)主动配电网多时段动态

无涯教程-PHP - xml_parse_into_struct函数-程序员宅基地

文章浏览阅读378次,点赞4次,收藏6次。无涯教程网提供xml_parse_into_struct - 语法 int xml_parse_into_struct ( resource $parser , stri...PHP 中的 xml_parse_into_struct函数 - 无涯教程网。它用于将任何格式化的XML解析为数组结构。它用于指定要使用的XML解析器。它用于指定XML数据的目标数组。它用于指定要解析的XML数据。它用于指定索引数据的目标数组。成功时返回1,失败时返回0。

找不到wifi,提示适配器的驱动程序可能出现问题_xioami 802.11n usb wireless adapter 驱动错误-程序员宅基地

文章浏览阅读3.6k次,点赞6次,收藏12次。找不到wifi,提示适配器的驱动程序可能出现问题_xioami 802.11n usb wireless adapter 驱动错误

【人工智能简史】第三章 第一个AI研究的黄金时代-程序员宅基地

文章浏览阅读1.4w次。在 1950、1960 年代,早期 AI 研究者们开发了一系列实验项目,如西蒙和纽埃尔的逻辑理论机(Logic Theorist)、麦卡锡的 Lisp 语言和明斯基的微世界(Micro World)等。总的来说,从 20 世纪 40 年代末到 50 年代的 AI 理论形成和发展过程,为后续的 AI 研究和应用奠定了坚实的基础。在本章中,我们将分析第一个 AI 研究的黄金时代,探讨其重要突破和成就,以及此阶段对 AI 发展历程产生的长远影响。这些算法穿插在人工智能的各个领域,推动着技术的创新与突破。

centos7.3(1611版本)安装增强工具(VirtualBox)-程序员宅基地

文章浏览阅读298次。一、场景说明: 虚拟软件使用VirtualBox,虚机操作系统使用CentOs7.3, 最小化安装后在虚机里面安装增强工具。 二、安装方法: 首先要先安装图形界面不然..._vboxwindowsadditions-amd64.exe下载

jdk32位连不上oracle64位,64位 jdk 读取32位dll-程序员宅基地

文章浏览阅读227次。执行上面的测试代码,发现使用 32 位的 JDK 通过配置的 testodbc 数据源 (32 位的驱动程序)能够正常的连接到 64 位的数据库,如下图所示。 这个场景并不完全真实,只是我个人的一个联想和猜测,中间极有可能出 现不正确或不完整的......在 face.h 的头文件中包含了 jni.h 头 文件,所以需要将 jdk 安装目录下 include 文件夹下的 jni.h 头文件和 in..._32位jdk连不上数据库

随便推点

图解系列--HTTP报文,HTTP状态码_http响应报文中状态码的字段是什么-程序员宅基地

文章浏览阅读823次,点赞23次,收藏19次。Http报文,Http状态码_http响应报文中状态码的字段是什么

利用java 快速实现加减乘数余运算_java 生产加减乘除取余题-程序员宅基地

文章浏览阅读941次。import java.util.Scanner;import java.math.*;public class Main { public static void main(String[] args) { Scanner sc=new Scanner(System.in); String s1 = sc.next(); String s2 = sc.next(); BigInte_java 生产加减乘除取余题

NS版暗黑破坏神3金手指开发教程(16)-程序员宅基地

文章浏览阅读3.2k次。上一节,我们学会了全幻化的制作,功力精进了一步,这一节,将会讲解全图纸的制作,也基本上是金手指教程的最后一节了,通过这一节,读者将会看到如何将逆向程序分析方法使用得淋漓尽致,面对任何困难也能无坚不摧1. 我们搜索图纸英文recipe,在sAllRecipes函数中发现了图纸类型一共有4种,分别是,铁匠,附魔工匠,珠宝匠,卡奈魔盒,也就是0,1,2,3,这个很重要,一会儿会用到2. 在U...

Revit导出IFC文件-程序员宅基地

文章浏览阅读1.9w次,点赞2次,收藏9次。Revit 导出IFC文件对于了解过BIM的人员来说,IFC文件应该并不陌生!那么我们常用的revit软件在绘制完建筑信息模型之后,如何有效的导出相应的完整的IFC文件呢?是不是有人遇到过这种情况,直接用revit软件中导出功能,所得到的IFC文件再被打开时发现,看不到模型。对于这种情况,如何解决呢?本文便讲解如何解决这个问题!第一:找到exportlayers-ifc-..._revit导出ifc

一些Docker常用命令,下载镜像和创建容器,Centos开启自启docker和对应mariadb(容器)_docker中怎么开机启动mariadb-程序员宅基地

文章浏览阅读2.7k次,点赞2次,收藏3次。觉得有帮助的同学可以点个赞!传递给更多人!docker进入容器docker exec -it 容器id bashcentos开机自启docker# 设置开机启动systemctl enable docker.service# 关闭开机启动systemctl disable docker.servicedocker容器设置自动启动# 启动时加--restart=alwaysdocker run -d --restart=always -p 3307:3306 -e MYSQL_ROO_docker中怎么开机启动mariadb

python爬取股票数据并存到数据库_id,ts_code,trade_date,close,open,high,low,pre_clos-程序员宅基地

文章浏览阅读3k次,点赞11次,收藏38次。Python 用Tushare接口获取股票数据并存储到Sqlite数据库使用技术介绍:关于接口 由于tushare旧版本即将不能用了,所以我们这里使用的是tushare pro 接口。关于数据库 使用了Sqlite轻量级数据库适合本地使用。具体实现Tushare Pro 爬取数据Pro接口需要前往官网(https://tushare.pro/)注册,并获取token,过程较为繁琐,而本文篇幅有限故将在之后更新获取token文章。将获取到的token值放进config文件中的tushare_id,ts_code,trade_date,close,open,high,low,pre_close,change,pct_chg,vol,amoun

推荐文章

热门文章

相关标签