NoSQL

目录

  • 1. NoSQL
    • 1.1. 什么是 NoSQL?
    • 1.2. 为什么使用 NoSQL ?
    • 1.3. 实例
    • 1.4. RDBMS vs NoSQL
    • 1.5. NoSQL 简史
    • 1.6. NoSQL 的优点/缺点
    • 1.7. NoSQL 数据库分类

1. NoSQL

NoSQL(NoSQL = Not Only SQL ), 意即"不仅仅是 SQL"。

在现代的计算系统上每天网络上都会产生庞大的数据量。

这些数据有很大一部分是由关系数据库管理系统 (RDBMS) 来处理。 1970 年 E.F.Codd’s 提出的关系模型的论文 “A relational model of data for large shared data banks”, 这使得数据建模和应用程序编程更加简单。

通过应用实践证明, 关系模型是非常适合于客户服务器编程, 远远超出预期的利益, 今天它是结构化数据存储在网络和商务应用的主导技术。

NoSQL 是一项全新的数据库革命性运动, 早期就有人提出, 发展至 2009 年趋势越发高涨。NoSQL 的拥护者们提倡运用非关系型的数据存储, 相对于铺天盖地的关系型数据库运用, 这一概念无疑是一种全新的思维的注入。

1.1. 什么是 NoSQL?

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

NoSQL 用于超大规模数据的存储。(例如谷歌或 Facebook 每天为他们的用户收集万亿比特的数据)。这些类型的数据存储不需要固定的模式, 无需多余操作就可以横向扩展。

1.2. 为什么使用 NoSQL ?

今天我们可以通过第三方平台(如: Google,Facebook 等)可以很容易的访问和抓取数据。用户的个人信息, 社交网络, 地理位置, 用户生成的数据和用户操作日志已经成倍的增加。我们如果要对这些用户数据进行挖掘, 那 SQL 数据库已经不适合这些应用了, NoSQL 数据库的发展却能很好的处理这些大的数据。

1.3. 实例

社会化关系网:

Each record: UserID1, UserID2
Separate records: UserID, first_name,last_name, age, gender,...
Task: Find all friends of friends of friends of ... friends of a given user.

Wikipedia 页面 :

Large collection of documents
Combination of structured and unstructured data
Task: Retrieve all pages regarding athletics of Summer Olympic before 1950.

1.4. RDBMS vs NoSQL

RDBMS

  • 高度组织化结构化数据
  • 结构化查询语言 (SQL) (SQL)
  • 数据和关系都存储在单独的表中。
  • 数据操纵语言, 数据定义语言
  • 严格的一致性
  • 基础事务

NoSQL

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

1.5. NoSQL 简史

NoSQL 一词最早出现于 1998 年, 是 Carlo Strozzi 开发的一个轻量、开源、不提供 SQL 功能的关系数据库。

2009 年, Last.fm 的 Johan Oskarsson 发起了一次关于分布式开源数据库的讨论 [2], 来自 Rackspace 的 Eric Evans 再次提出了 NoSQL 的概念, 这时的 NoSQL 主要指非关系型、分布式、不提供 ACID 的数据库设计模式。

2009 年在亚特兰大举行的"no:sql(east)“讨论会是一个里程碑, 其口号是"select fun, profit from real_world where relational=false;”。因此, 对 NoSQL 最普遍的解释是"非关联型的", 强调 Key-Value Stores 和文档数据库的优点, 而不是单纯的反对 RDBMS。

1.6. NoSQL 的优点/缺点

优点:

  • 高可扩展性
  • 分布式计算
  • 低成本
  • 架构的灵活性, 半结构化数据
  • 没有复杂的关系

缺点:

  • 没有标准化
  • 有限的查询功能(到目前为止)
  • 最终一致是不直观的程序

1.7. NoSQL 数据库分类

类型部分代表特点
列存储Hbase
Cassandra
Hypertable
顾名思义, 是按列存储数据的。最大的特点是方便存储结构化和半结构化数据, 方便做数据压缩, 对针对某一列或者某几列的查询有非常大的 IO 优势。
文档存储MongoDB
CouchDB
文档存储一般用类似 json 的格式存储, 存储的内容是文档型的。这样也就有机会对某些字段建立索引, 实现关系数据库的某些功能。
key-value 存储Tokyo Cabinet / Tyrant
Berkeley DB
MemcacheDB
Redis
可以通过 key 快速查询到其 value。一般来说, 存储不管 value 的格式, 照单全收。(Redis 包含了其他功能)
图存储Neo4J
FlockDB
图形关系的最佳存储。使用传统关系数据库来解决的话性能低下, 而且设计使用不方便。
对象存储db4o
Versant
通过类似面向对象语言的语法操作数据库, 通过对象的方式存取数据。
xml 数据库Berkeley DB XML
BaseX
高效的存储 XML 数据, 并支持 XML 的内部查询语法, 比如 XQuery,Xpath。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/146975.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

鸿蒙开发|开启鸿蒙开发之旅-发工具下载安装、项目创建和预览

文章目录 一、鸿蒙开发使用语言二、下载开发工具三、安装开发工具四、新建项目五、项目启动 一、鸿蒙开发使用语言 鸿蒙OS开发支持多种编程语言,开发者可以根据自身技术背景和项目需求选择合适的语言进行开发。目前鸿蒙OS主要支持以下几种语言: Java&am…

掌握未来技术趋势,Python编程引领人工智能时代

掌握未来技术趋势,Python编程引领人工智能时代 摘要:Python作为一种高级编程语言,在人工智能领域中扮演着越来越重要的角色。本文将通过介绍Python编程的特点、应用场景及发展前景,展望Python未来的发展趋势,并结合代…

关于Java中的深拷贝与浅拷贝

Java中的深拷贝和浅拷贝是针对对象和数组等引用数据类型的复制操作。 浅拷贝(Shallow Copy): 对于基本数据类型,浅拷贝直接复制其值。对于引用数据类型,浅拷贝只复制对原对象的引用,而不是复制对象本身。因…

HarmonyOS真机调试报错:INSTALL_PARSE_FAILED_USESDK_ERROR处理

文章目录 1、 新建应用时选择与自己真机匹配的sdk版本2、 根据报错提示连接打开处理方案3、查询真机版本对应的**compileSdkVersion** 和 **compatibleSdkVersion** 提示3.1版本之后和3.1版本之前的不同命令(此处为3.0版本)4、根据查询修改参数5、连接成…

【算法】Java 算法设计模式的应用场景

Java 算法设计模式的应用场景主要包括以下几种: 工厂模式(Factory Pattern):在需要创建某些具有相同接口的对象时,可以使用工厂模式。例如,在操作系统中创建不同类型的文件对象,或者在游戏系统中…

k8s中的端口hostPort、port、nodePort、targetPort

hostPort:apiVersion: v1 kind: Pod metadata:name: tomcat spec:containers:- name: tomcatimage: tomcat:8.5ports:- hostPort: 8081containerPort: 8080protocol: TCPhostPort 类似docker -p 参数做的端口映射,将容器内端口映射到宿主机上(hostPort), 在k8s中&am…

13.真刀实枪做项目---博客系统(页面设计)

文章目录 1.预期效果1.1博客列表页效果1.2博客详情页效果1.3博客登陆页效果1.4博客编辑页效果 2.实现博客列表页2.1实现导航栏2.2实现版心2.3实现个人信息2.4实现博客列表2.5博客列表页完整代码 3.实现博客正文页3.1引入导航栏3.2引入版心3.3引入个人信息3.4实现博客正文3.5博客…

Django模型层

模型层 与数据库相关的,用于定义数据模型和数据库表结构。 在Django应用程序中,模型层是数据库和应用程序之间的接口,它负责处理所有与数据库相关的操作,例如创建、读取、更新和删除记录。Django的模型层还提供了一些高级功能 首…

【机器学习Python实战】logistic回归

🚀个人主页:为梦而生~ 关注我一起学习吧! 💡专栏:机器学习python实战 欢迎订阅!后面的内容会越来越有意思~ ⭐内容说明:本专栏主要针对机器学习专栏的基础内容进行python的实现,部分…

Go 语言结构体验证详解:validate 标签与自定义规则

介绍 Go 语言中,结构体验证是保障数据完整性和正确性的重要手段之一。本文将深入探讨 validate 标签的使用方式,并介绍如何结合验证库 go-playground/validator 进行自定义验证规则。 安装与导入验证库 首先,请确保已安装验证库&#xff1a…

PlantUML基础使用教程

环境搭建 IDEA插件下载 打开IEDA系列IDE,从FIle–>Settings–>Plugins–>Marketplace 进入到插件下载界面,搜索PlantUML,安装PlantUML Integration和PlantUML Parser两个插件,并重启IDE 安装和配置Graphviz 进入官网…

《视觉SLAM十四讲》-- 后端 2

文章目录 09 后端 29.1 滑动窗口滤波和优化9.1.1 实际环境下的 BA 结构9.1.2 滑动窗口法 9.2 位姿图9.2.1 位姿图的意义9.2.2 位姿图优化 09 后端 2 9.1 滑动窗口滤波和优化 9.1.1 实际环境下的 BA 结构 由于计算机算力的限制,我们必须控制 BA 的规模&#xff0c…

进程程序替换与exec系统调用

进程程序替换 进程程序替换是指将一个正在运行的进程替换为另一个可执行程序。它的本质是调用了Linux操作系统中的exec系统调用。而exec系统调用是一个家族函数,例如execl、execv、execle、execve等。它们的共同特点是当当前进程执行到该函数时,就会直接…

Bert浅谈

优点 首先,bert的创新点在于利用了双向transformer,这就跟openai的gpt有区别,gpt是采用单向的transformer,而作者认为双向transformer更能够融合上下文的信息。这里双向和单向的区别在于,单向只跟当前位置之前的tocke…

Nginx安装配置与SSL证书安装部署

一、Nginx Nginx是一款高性能的开源Web服务器和反向代理服务器,被广泛用于构建现代化的Web应用和提供静态内容。 nginx官网 这里下载nginx-1.24.0-zip Nginx是一款高性能的开源Web服务器和反向代理服务器,被广泛用于构建现代化的Web应用和提供静态内…

测试开发环境下centos7.9下安装docker的minio

按照以下方法进行 1、安装docker,要是生产等还是要安装docker-ce yum install docker 2、启动docker service docker start 3、 查看docker信息 docker info 4、加到启动里 systemctl enable docker.service 5、开始docker pull minio/minio 但报错&#x…

【机器学习7】优化算法

1 有监督学习的损失函数 1.1 分类问题 对二分类问题, Y{1,−1}, 我们希望sign f(xi,θ)yi, 最自然的损失函数是0-1损失, 函数定义特点0-1损失函数非凸、非光滑,很难直接对该函数进行优化Hinge损失函数当fy≥1时&…

汽车以太网IOP测试新利器

IOP测试目的 汽车以太网物理层IOP(Interoperability )测试,即测试被测对象以太网物理层之间的互操作性。用于验证车载以太网PHY能否在有限时间内建立稳定的链路;此外,还用于验证车载以太网PHY可靠性相关的诊断特性&am…

Linux环境下C++ 接入OpenSSL

接上一篇:Windows环境下C 安装OpenSSL库 源码编译及使用(VS2019)_vs2019安装openssl_肥宝Fable的博客-CSDN博客 解决完本地windows环境,想赶紧在外网环境看看是否也正常。毕竟现在只是HelloWorld级别的,等东西多了&am…

linux时间调整

查看当前系统时间 [rootVM-12-12-centos ~]# date Sat Nov 18 16:09:11 CST 2023 Sat:表示星期六Saturday的缩写 Nov:表示十一月November的缩写 18:表示日期18号 16:09:11:时间 CST:China Standard Time中国标准…