网站首页 > 文章中心 > 其它

nosql实时查询

作者:小编 更新时间:2023-09-01 19:16:40 浏览量:277人看过

NoSQL 数据库:何时使用 NoSQL 与 SQL?

NoSQL 数据库因其功能性、易于开发性和可扩展性而广受认可,它们越来越多地用于大数据和实时 Web 应用程序,在本文中,我们通过示例讨论 NoSQL、何时使用 NoSQL 与 SQL 及其用例.

NoSQL是一种下一代数据库管理系统 (DBMS).NoSQL 数据库具有灵活的模式,可用于构建具有大量数据和高负载的现代应用程序.

在处理大量数据时,任何关系数据库管理系统 (RDBMS) 的响应时间都会变慢.为了解决这个问题,我们可以通过升级现有硬件来"扩大"信息系统,这非常昂贵.但是,NoSQL 可以更好地横向扩展并且更具成本效益.

NoSQL 对于非结构化或非常大的数据对象(例如聊天日志数据、视频或图像)非常有用,这就是为什么 NoSQL 在微软、谷歌、亚马逊、Meta (Facebook) 等互联网巨头中特别受欢迎的原因.

一些流行的 NoSQL 数据库包括:

随着企业更快地积累更大的数据集,结构化数据和关系模式并不总是适合.有必要使用非结构化数据和大型对象来更好地捕获这些信息.

nosql实时查询-图1

传统的 RDBMS 使用 SQL(结构化查询语言)语法来存储和检索结构化数据,相反,NoSQL 数据库包含广泛的功能,可以存储和检索结构化、半结构化、非结构化和多态数据.

有时,NoSQL 也被称为" 不仅仅是 SQL ",强调它可能支持类似 SQL 的语言或与 SQL 数据库并列.SQL 和 NoSQL DBMS 之间的一个区别是 JOIN 功能.SQL 数据库使用 JOIN 子句来组合来自两个或多个表的行,因为 NoSQL 数据库本质上不是表格的,所以这个功能并不总是可行或相关的.

但是,一些 NoSQL DBMS 可以执行类似于 JOIN的操作——就像 MongoDB 一样.这并不意味着不再需要 SQL DBMS,相反,NoSQL 和 SQL 数据库倾向于以不同的方式解决类似的问题.

一般来说,在以下情况下,NoSQL 比 SQL 更可取:

nosql实时查询-图2

许多行业都在采用 NoSQL,取代关系数据库,从而为某些业务应用程序提供更高的灵活性和可扩展性,下面给出了 NoSQL 数据库的一些企业用例.

内容管理是一组用于收集、管理、传递、检索和发布任何格式的信息的过程,包括文本、图像、音频和视频.NoSQL 数据库可以通过其灵活和开放的数据模型为存储多媒体内容提供更好的选择.

例如,福布斯在短短几个月内就构建了一个基于 MongoDB 的定制内容管理系统,以更低的成本为他们提供了更大的敏捷性.

大数据是指太大而无法通过传统处理系统处理的数据集,实时存储和检索大数据的系统在分析 历史 数据的同时使用流处理来摄取新数据,这是一系列非常适合 NoSQL 数据库的功能.

物联网设备具有连接到互联网或通信网络的嵌入式软件和传感器,能够在无需人工干预的情况下收集和共享数据.随着数十亿台设备生成数不清的数据,IoT NoSQL 数据库为 IoT 服务提供商提供了可扩展性和更灵活的架构.

Freshub就是这样的一项服务,它从 MySQL 切换到 MongoDB,以更好地处理其大型、动态、非统一的数据集.

拥有数十亿智能手机用户,可扩展性正成为在移动设备上提供服务的企业面临的最大挑战.具有更灵活数据模型的 NoSQL DBMS 通常是完美的解决方案.

例如,The Weather Channel使用 MongoDB 数据库每分钟处理数百万个请求,同时还处理用户数据并提供天气更新.

NoSQL-HDFS-基本概念

nosql实时查询-图3

Hadoop

文件系统:文件系统是用来存储和管理文件,并且提供文件的查询、增加、删除等操作.

直观上的体验:在shell窗口输入 ls 命令,就可以看到当前目录下的文件夹、文件.

文件存储在哪里?硬盘

通过 hdfs dfs -ls 命令可以查看分布式文件系统中的文件,就像本地的ls命令一样.

看到这里,不少人可能会觉得,分布式文件系统不过如此,很简单嘛.事实真的是这样的么?

潜在问题

如果要存储PB级或者EB级的数据,成千上万台机器组成的集群是很常见的,所以说分布式系统比单机系统要复杂得多呀.

这是一张HDFS的架构简图:

client通过nameNode了解数据在哪些DataNode上,从而发起查询.此外,不仅是查询文件,写入文件的时候也是先去请教NameNode,看看应该往哪个DateNode中去写.

为了某一份数据只写入到一个Datanode中,而这个Datanode因为某些原因出错无法读取的问题,需要通过冗余备份的方式来进行容错处理.所以呢,HDFS在写入一个数据块的时候,不会仅仅写入一个DataNode,而是会写入到多个DataNode中,这样,如果其中一个DataNode坏了,还可以从其余的DataNode中拿到数据,保证了数据不丢失.

实际上,每个数据块在HDFS上都会保存多份,保存在不同的DataNode上.这种是牺牲一定存储空间换取可靠性的做法.

此时此刻呢我们来看一下完整的文件写入的流程:

大文件要写入HDFS,client端根据配置将大文件分成固定大小的块,然后再上传到HDFS.

读取文件的流程:

①.、client询问NameNode,我要读取某个路径下的文件,麻烦告诉我这个文件都在哪些DataNode上?

文件写入的流程:

NameNode确实会回放editlog,但是不是每次都从头回放,它会先加载一个fsimage,这个文件是之前某一个时刻整个NameNode的文件元数据的内存快照,然后再在这个基础上回放editlog,完成后,会清空editlog,再把当前文件元数据的内存状态写入fsimage,方便下一次加载.

这样,全量回放就变成了增量回放,但是如果NameNode长时间未重启过,editlog依然会比较大,恢复的时间依然比较长,这个问题怎么解呢?

SecondNameNode是一个NameNode内的定时任务线程,它会定期地将editlog写入fsimage,然后情况原来的editlog,从而保证editlog的文件大小维持在一定大小.

俗话说"一山不容二虎",两个NameNode只能有一个是活跃状态active,另一个是备份状态standby,我们看一下两个NameNode的架构图.

两个NameNode通过JournalNode实现同步editlog,保持状态一致可以相互替换.

因为active的NameNode挂了之后,standby的NameNode要马上接替它,所以它们的数据要时刻保持一致,在写入数据的时候,两个NameNode内存中都要记录数据的元信息,并保持一致.这个JournalNode就是用来在两个NameNode中同步数据的,并且standby NameNode实现了SecondNameNode的功能.

进行数据同步操作的过程如下:

active NameNode有操作之后,它的editlog会被记录到JournalNode中,standby NameNode会从JournalNode中读取到变化并进行同步,同时standby NameNode会监听记录的变化.这样做的话就是实时同步了,并且standby NameNode就实现了SecondNameNode的功能.

优点:

缺点:

nosql数据库的四种类型

一般将NoSQL数据库分为四大类:键值(Key-Value)存储数据库、列存储数据库、文档型数据库和图形(Graph)数据库.它们的数据模型、优缺点、典型应用场景.

键值(Key-Value)存储数据库Key指向Value的键值对,通常用hash表来实现查找速度快数据无结构化(通常只被当作字符串或者二进制数据)内容缓存,主要用于处理大量数据的高访问负载,也用于一些日志系统等.

列存储数据库,以列簇式存储,将同一列数据存在一起查找速度快,可扩展性强,更容易进行分布式扩展功能相对局限分布式的文件系统.

文档型数据库,Key-Value对应的键值对,Value为结构化数据,数据结构要求不严格,表结构可变(不需要像关系型数据库一样需预先定义表结构),查询性能不高,而且缺乏统一的查询语法,Web应用.

图形(Graph)数据库,图结构,利用图结构相关算法(如最短路径寻址,N度关系查找等),很多时候需要对整个图做计算才能得出需要的信息,而且这种结构不太好做分布式的集群方案,社交网络,推荐系统等.

以上就是土嘎嘎小编为大家整理的nosql实时查询相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!

版权声明:倡导尊重与保护知识产权。未经许可,任何人不得复制、转载、或以其他方式使用本站《原创》内容,违者将追究其法律责任。本站文章内容,部分图片来源于网络,如有侵权,请联系我们修改或者删除处理。

编辑推荐

热门文章