NoSQL基本常识

2023-10-30 07:50
文章标签 nosql 基本常识

本文主要是介绍NoSQL基本常识,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

NoSQL(最初指“非SQL(non SQL)”、“非关系(non relational)”或“不仅是SQL(Not Only SQL)”)

NoSQL是一个通用术语,用于指不遵循传统RDBMS模型的任何数据存储——具体来说,数据是非关系型的,它不使用SQL作为主要查询语言。它是用于指试图解决可伸缩性和可用性问题而不是原子性一致性问题的数据库

NoSQL可以用描述任何一种数据文件,不具备传统关系型数据库的范式,NoSQL是非关系型设计的Database,主要针对当前互联网时代的复杂数据

NoSQL的必要性:

数以百万计的用户

低成本的存储

增加处理能力

捕获(和需要)数百万个事件的能力。缓存在一定程度上解决了这个问题,但也带来了其他复杂性

实时响应

需要向外扩展,而不是向上扩展(增加无限数量的低成本机器 VS 用更强大的机器代替)

花费:

企业数据库的互联网规模可能会变得昂贵

开源数据库可以解决许可证成本问题,但不要忽略运营成本

关系型数据库 VS NoSQL

关系型数据库:

分为表,关联到外键,DB约束,规范化数据,接口是SQL

NoSQL:

以无模式格式存储,鼓励冗余,应用程序访问决定存储格式(您的查询)。接口的变化和优化的实现,没有强制的数据库约束。

Schema:定义数据库表里的数据结构,就是列的定义的意思

NoSQL的权衡:

Eventual consistency——最终一致性,当从数据库里读取数据时,并不会马上读取出来,但是最终是读出来的

应用程序增加了维护一致性和处理事务等职责

Store redundant data——冗余数据存储,关系型数据库要遵守5大范式保证数据库不冗余

NoSQL不是大数据:

NoSQL != Big Data

创建NoSQL产品是为了帮助解决大数据问题。

大数据是一个比存储更大的问题(NoSQL只是大数据生态圈里的一小部分)

Hadoop

Kafka

Spark等等

NoSQL只是在数据存储的角度,类似于Database的语句

NoSQL的概念:

三个重要性——CAP,BASE,Consistency(一致性)

Indexing(索引),Queries(查询)

MapReduce

Sharding(分区)

CAP理论(Consistency,Availability,Partition Tolerance):

数据库只能满足3个条件中的2个

NoSQL不提供“ACID”保证

ACID是数据库事务正确执行的四个基本要素的缩写,即原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)

相反,它提供了“最终一致性”

BASE理论:

根据上限定理,基本可用性表明系统确实保证了可用性。

软状态表示即使没有输入,系统的状态也可能随时间而变化。这是因为最终一致性模型。

最终的一致性表明,随着时间的推移,系统将变得一致,前提是系统在此期间不接收输入。

最终一致性:

比如库存,账户余额应该是一致的

像目录信息这样的东西不必是必须的,至少不必立即是

如果在目录中输入了一个新条目,一些客户甚至在其他客户的服务器知道它之前就可以看到它

但是目录信息必须很快出现

因此,在等待更新另一个位置时,不要将数据锁定在一个位置

因此,在某些情况下,为了速度牺牲一致性是可以的

索引:

大多数NoSQL数据库都是按键索引的

一些允许所谓的“二级”索引

主键索引通常是集群的

HBase使用HDFS(Hadoop分布式文件),这是只附加的

写记录

日志写入被批处理

文件被重新创建和排序

查询:

通常没有查询语言

相反,创建过程程序

有时支持SQL

有时使用MapReduce代码...

MapReduce

这不是Hadoop的MapReduce,但它在概念上是相关的

映射步骤:预处理数据

简化步骤:汇总/聚合数据

分区:

一种分区模式,其中单独的服务器存储分区

扇-输出查询支持

分区可能是重复的,因此也提供了复制

有利于灾难恢复

由于“切分”可以在地理上分布,所以切分可以充当CDN

有利于保持数据接近处理

减少MapReduce分割发生时的网络流量

NoSQL类别:

Key-Value存储:

最常见的;不一定是最受欢迎的

有行,每个行都有一个大的字典/关联数组

模式可能因行而异

云平台上常见的

例如:Amazon SimpleDB,Azure Table Storage

MemcacheDB,Voldemort,Couchbase,DynamoDB(AWS),Dynomite,Redis和Riak

Key-Value存储结构:

宽列存储:

表是否具有已声明的列族

每个列族都有“列”,它们是KV对,行与行之间可以不同

这些是大型站点最基础的

    Google big table

    HBase

    Cassandra(Facebook)

将列族称为“超级列”和表“超级列家庭”

它们是最“大数据”的,尤其是HBase + Hadoop

宽列存储结构:

文件存储:

文档通常是JSON对象

每个文档都有属性和值

值可以是标量、数组、到其他数据库或子文档(即包含JSON对象的文档)中的文档的链接

允许分层存储)

保留旧版本

因此,文档存储对于内容管理非常有效

有些观点认为文档存储是专门的KV存储

最受开发者,创业公司,风投公司欢迎

     CouchDB,MongoDB,CouchBase

文档存储模式:

图形数据库:

非常适合社交网络应用程序和其他关系很重要的应用程序

Nodes(节点)和edges(边)

Edge就像join

Nodes类似于表中的行

节点还可以具有属性和值

Neo4j是一种流行的图形数据库

Titan

图形数据库结构(描述数据库的关系):

NoSQL和BI(数据智能):

NoSQL数据库不适合特殊查询和数据仓库

BI应用涉及模型;模型依赖于模式

提取Extract、转换Transform和加载load(ETL)可能是您的朋友

然而,宽栏存储对于“大数据”是有好处的

宽列存储和面向列的数据库在技术上是类似的

NoSQL和大数据:

大数据和NoSQL是相关的

通常,大数据场景中使用的是宽列存储

最好的例子:HBase and Hadoop

缺少索引不是问题

一致性不是问题

快速阅读非常重要

分布式文件系统也很重要

商品硬件和磁盘的假设也很重要

不是web的规模,而是大规模的扩展,类似的问题

NoSQL妥协

最终一致性

写缓冲,把写的东西写到一个log里,在数据恢复的时候能保证写的东西不会丢失

只能索引主键

查询必须作为程序编写

工具和支持

Productivity (= money)

NoSQL中常见的DBA任务

操作

关系型数据库

NoSQL

导入数据

导入数据

导入数据

导入数据

设置安全性

设置安全性

设置备份

执行备份

把数据复制一份

恢复

还原数据库

将副本移动到某个位置

索引

创建一个索引

创建一个索引

连接

将表连接在一起

运行MapReduce

执行job

安排一个工作

计划一个(Cron)作业

维护成本

运行数据库维护

监视所使用的空间和资源

数据监控

从SQL Server发送电子邮件

设置资源阈值警报

数据库管理

搜索东西

说明文档

关系型数据库 VS NoSQL

业务线数据分析使用关系型数据库

大型、面向公共(消费者)的网站站点点使用 NoSQL

复杂的数据结构使用关系型数据库

大数据使用NoSQL

Transactional事务处理型数据库使用关系型数据库

Content Management内容管理型数据库使用NoSQL

企业级使用关系型数据库

消费者级网络使用NoSQL

这篇关于NoSQL基本常识的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/306507

相关文章

NoSQL数据库的35个应用场景

现在我们站在各个用例的角度上来考虑那种系统适合于这些用例。   你的意见是?   首先,我们要纵览各种数据模型。这些模型的分类方法来自于Emil Eifrem和NoSQL databases。   文档数据库   源起:受Lotus Notes启发。   数据模型:包含了key-value的文档集合   例子:CouchDB, MongoDB   优点:数据模型自然,编

nosql之mongodb初接触(一)

官网下载地址:(https://www.mongodb.com/download-center?jmp=nav#community)作为一个nosql的产品,mongodb和redis可谓旗鼓相当.下载介绍一下在ubuntu16.04版本下mongodb的使用版本:mongndb3.2.7 百度下载 http://pan.baidu.com/s/1eSfnIZg 下载解压

如何进行不同数据库的集群操作?--从部署谈起,今天来看MySQL和NoSql数据库Redis的集群

篇幅较长,主要分为mysql和Redis两部分。找想要的部分可见目录食用。。 目录 什么是集群?为什么要集群? 1.1 数据库主要分为两大类:关系型数据库与 NoSQL 数据库 1.2 为什么还要用 NoSQL 数据库呢?                       -------------------华丽分割线-------------- 一、关系型数据库MySQL 1.部署

软件综合实习——基于NoSQL数据库的空间数据存储

前言:在“软件综合实习”这门实践课中选择了一个题目《基于NoSQL数据库的空间数据存储》,基于HBase的空间数据存储和查询。此博客是这次课程设计过程中的简单记录。 GitHub项目源代码 简介 RDBM在处理中小规模数据的时候没有压力,拥有严格的数学背景支撑,擅长处理事务。然而新千年之后进入互联网时代,此时数据量极速变大,RDBM在一些大数据场景开始力不从心,世界需要新的变革,等待新的

阅读笔记(四)NoSQL的选择指引《NoSQL database systems: a survey and decision guidance》

一. 前言   《NoSQL database systems: a survey and decision guidance》是一篇很好的综述类论文,详细的论述了NoSQL的特点和各种不同NoSQL数据库的选择依据。   传统的关系型数据库(relational database management systems ,RDBMSs)可以在保证一致性、可靠性、稳定性的前提下提供强有力的数据存储

主流NoSQL及应用场景详解

点击上方“朱小厮的博客”,选择“设为星标” 后台回复"书",获取 来源:r6d.cn/r4P7      对比传统关系型数据库,NoSQL有着更为复杂的分类——键值、面向文档、列存储以及图数据库。这里就带你一览NoSQL各种类型的适用场景及一些知名公司的方案选择。      在过去几年,关系型数据库一直是数据持久化的唯一选择,数据工作者考虑的也只是在这些传统数据库中做筛选,比如SQL Se

大数据-NoSQL数据库-HBase操作框架:Phoenix【Java写的基于JDBC API的操作HBase数据库的SQL引擎框架;低延迟、事务性、可使用sql语句、提供JDBC接口】

一、Phoenix概述 1、Phoenix 定义 Phoenix 最早是 saleforce 的一个开源项目,后来成为 Apache 的顶级项目。Phoenix 构建在 HBase 之上的开源 SQL 层. 能够让我们使用标准的 JDBC API 去建表, 插入数据和查询 HBase 中的数据, 从而可以避免使用 HBase 的客户端 API.在我们的应用和 HBase 之间添加了 Phoen

NoSQL浅谈

如今我们需要处理的数据越来越多,必须以商用的服务器集群来构建大型的硬件平台。NoSQL就应运而生了。它主张使用无模式的数据,可以运行在集群中。 NoSQL优点 应用程序的开发效率:以前我们需要花很大一部分的精力在内存数据结构和关系型数据的映射。NoSQL简化了数据交互。大规模的数据:NoSQL为集群设计。 NoSQL发展迅速的原因 由于需要处理的数据越来越多,所以大型机的扩展方式,由原来单

redis作为单线程NoSQL为何快到不敢相信

纯内存数据库,如果只是简单的 key-value,内存不是瓶颈。一般情况下,hash 查找可以达到每秒数百万次的数量级。 瓶颈在于网络 IO 上。 根据你测的的 10000/s 来看,客户端和 redis 应该是部署在两台不同的机器,并且是使用同步的方式请求 redis. 每次请求需要通过网络把请求发送到 redis 所在的机器,然后等待 redis 返回数据。时间大部分消耗在网络传输中。 如果

数据库系统 第27节 NoSQL 数据库 案例分析

由于NoSQL数据库的种类繁多,我将以MongoDB(文档数据库)和Redis(键值存储)为例,提供一些简单的代码示例来展示如何使用这些数据库。 MongoDB(文档数据库) 假设我们使用Node.js和Mongoose(一个MongoDB对象模型工具)来操作MongoDB。 安装Mongoose: npm install mongoose 连接MongoDB: const mong