重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
如何玩转 NoSQL数据库?作者:IT专家网
创新互联专注于成都网站制作、成都网站设计、外贸营销网站建设、网页设计、网站制作、网站开发。公司秉持“客户至上,用心服务”的宗旨,从客户的利益和观点出发,让客户在网络营销中找到自己的驻足之地。尊重和关怀每一位客户,用严谨的态度对待客户,用专业的服务创造价值,成为客户值得信赖的朋友,为客户解除后顾之忧。
Weather公司CIO Bryson Koehler整理出了MongoDB,Riak和Cassandra等NoSQL数据库的特性。他指出这其中最重要的特性是“NoSQL不会限制住你”。
Weather公司,致力于天气报告和天气预报业务,其并不缺乏数据,当然也不缺乏数据管理工具。但它为什么需要三种不同的NoSQL数据库?
最近,我向Weather 公司的CIO Bryson Koehler提出了这个疑问,除了公司的CIO,Bryson Koehler还是其他很多业务单元的孵化者,包括Weather Channel,WeatherFX,Weather Underground,和Intellicast等。Weather公司每天获取和处理着约20万亿字节数据,对外提供当前全球天气状况,并为航空公司,紧急服务,货运商,公用事业,保险,以及在线天气网站和天气应用程序的用户提供天气预报服务。每天需求增加了数十亿的天气数据请求,并且预期响应时间要在10毫秒左右。
Riak是Weather 公司的后台NoSQL数据库,服务于公司的事务性存储公用网络(SUN)数据获取平台,它运行在多个亚马逊网络服务(AWS)的可用区域上,并以每小时15次的频率捕获超过20亿气象数据信息,。所以,Riak具有明确的处理规模,但该公司也使用Cassandra以及新近添加的MongoDB数据库,为Weather.com 上IOS和Android移动应用程序服务。
Weather 公司使用了不同的产品,Koehler解释说,因为“不同的工具有不同的优势。
Cassandra,它服务于Weather 公司以及全球消费者使用的第三方天气应用的API数据:“我们的数据分发平台每秒处理数十万的事务,我们发现Cassandra在用于全球分发数据上是一个很棒的解决方案,并且在[数据库]读取方面体现出很高的可用性 “。它本质上为全球各地消费者所使用的数据服务,包括Weather 公司和第三方的天气应用程序。
MongoDB,它提供了Weather.com网站和移动应用程序的中间层缓存功能:“离开我们的核心API,我们还没有全部Weather.com内容,所以MongoDB是容器和分发站,为Weather.com以及Android和iOS上的移动应用程序服务。Mongo有很多好处,这些好处基于其内建的JSON格式以及灵活性上。“
Riak,用于消费气象数据和观测,包括来自世界各地的图片和视频等:“我们喜爱Riak因其优秀的数据摄取能力,而且是以一种全球分布式的方式来实现。这对于从全球分布式平台上获取数据的入站式数据库是一个真正可靠的选择。
我曾听说Datastax,Basho和Couchbase的高管贬低MongoDB的可扩展性,但MongoDB指向大规模部署,在Facebook对超过200万台移动设备上应用程序提供支持,在eHarmony公司,MongDB每天处理着数十亿的潜在比赛预约。据Koehle所述,MongoDB为Weather.com和Weather.com移动应用程序处理着“每天十亿交易”,“毫无疑问,你可以通过配置和部署Mongo来处理大批量的交易数据。”
尽管如此,Koehler承认,他将“很乐于看到MongoDB继续使全球集群和多位置[功能]更加无缝化且易于使用。” 这些属于全球性的分布式集群,复制和负载平衡是Cassandra和Riak众所周知的功能。
从规模讨论的角度来看,很少有公司达到Weather公司的经营规模。易于开发,架构灵活性和JSON数据处理使得MongoDB的成为世界上最流行的NoSQL数据库。这就是为什么微软和IBM都进行了MongoDB的模仿,如微软的Azure DocumentDB和IBM的 Cloudant,而不是Cassandra和Riak。
Weather公司可以从三个NoSQL标准降低至两个的过程中得到巩固,Koehler说,但公司没有准备好这么做。
“由于我们构造了由许多不同的数据解决方案组成的网状结构,我们目前的环境已过于复杂,”他说。“我们希望给团队一些自由的空间,让我们可以了解所有选择的利弊,但你将会看到一些整合。”
到了那个时候,迁移将不在是一件难事,因为“关于NoSQL数据库最重要的事情是,你不会被困在其中,” Koehler说。“如果你的架构和编码正确,从一个数据库迁移到另一个并不难。随着模式的自由以及数据转存技术的发展,无论前者是一个key-value存储或其他什么形式,转储数据都将十分容易。“
对特定产品进程自定义编码的复杂的存储过程已经一去不复返了,Koehler说,但关于“结构化和编码正确”还有很多需要考虑的地方?这样做是为了避免特殊供应商提供的工具和功能可能让你身陷其中。他举了亚马逊网络服务“(AWS)的消息服务为例。
“你不必让服务在云中运行,”他解释说。“你可以只部署自己的RabbitMQ的环境,而不是陷于其中,所以你可以将一个原先部署在AWS 上的应用程序转而部署在谷歌计算云服务上。无论它是数据平台,存储环境,或云计算环境,都要小心别让自己局限在一个仅由一个供应商提供的小范围空间内“。
转载
NoSQL,是not only sql,是非关系数据库,不同于oracle等关系数据库。hadoop,是分布式解决方案,即为Mapreduce(计算的)和HDFS(文件系统),使用Hadoop和NoSQL可以构造海量数据解决方案。
NoSQL 数据库因其功能性、易于开发性和可扩展性而广受认可,它们越来越多地用于大数据和实时 Web 应用程序,在本文中,我们通过示例讨论 NoSQL、何时使用 NoSQL 与 SQL 及其用例。
NoSQL是一种下一代数据库管理系统 (DBMS)。NoSQL 数据库具有灵活的模式,可用于构建具有大量数据和高负载的现代应用程序。
“NoSQL”一词最初是由 Carlo Strozzi 在 1998 年创造的,尽管自 1960 年代后期以来就已经存在类似的数据库。然而,NoSQL 的发展始于 2009 年初,并且发展迅速。
在处理大量数据时,任何关系数据库管理系统 (RDBMS) 的响应时间都会变慢。为了解决这个问题,我们可以通过升级现有硬件来“扩大”信息系统,这非常昂贵。但是,NoSQL 可以更好地横向扩展并且更具成本效益。
NoSQL 对于非结构化或非常大的数据对象(例如聊天日志数据、视频或图像)非常有用,这就是为什么 NoSQL 在微软、谷歌、亚马逊、Meta (Facebook) 等互联网巨头中特别受欢迎的原因。
一些流行的 NoSQL 数据库包括:
随着企业更快地积累更大的数据集,结构化数据和关系模式并不总是适合。有必要使用非结构化数据和大型对象来更好地捕获这些信息。
传统的 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,取代关系数据库,从而为某些业务应用程序提供更高的灵活性和可扩展性,下面给出了 NoSQL 数据库的一些企业用例。
内容管理是一组用于收集、管理、传递、检索和发布任何格式的信息的过程,包括文本、图像、音频和视频。NoSQL 数据库可以通过其灵活和开放的数据模型为存储多媒体内容提供更好的选择。
例如,福布斯在短短几个月内就构建了一个基于 MongoDB 的定制内容管理系统,以更低的成本为他们提供了更大的敏捷性。
大数据是指太大而无法通过传统处理系统处理的数据集,实时存储和检索大数据的系统在分析 历史 数据的同时使用流处理来摄取新数据,这是一系列非常适合 NoSQL 数据库的功能。
Zoom使用 DynamoDB(按需模式)使其数据能够在没有性能问题的情况下进行扩展,即使该服务在 COVID-19 大流行的早期使用量激增。
物联网设备具有连接到互联网或通信网络的嵌入式软件和传感器,能够在无需人工干预的情况下收集和共享数据。随着数十亿台设备生成数不清的数据,IoT NoSQL 数据库为 IoT 服务提供商提供了可扩展性和更灵活的架构。
Freshub就是这样的一项服务,它从 MySQL 切换到 MongoDB,以更好地处理其大型、动态、非统一的数据集。
拥有数十亿智能手机用户,可扩展性正成为在移动设备上提供服务的企业面临的最大挑战。具有更灵活数据模型的 NoSQL DBMS 通常是完美的解决方案。
例如,The Weather Channel使用 MongoDB 数据库每分钟处理数百万个请求,同时还处理用户数据并提供天气更新。
Web1.0的时代,数据访问量很有限,用一夫当关的高性能的单点服务器可以解决大部分问题。
随着Web2.0的时代的到来,用户访问量大幅度提升,同时产生了大量的用户数据。加上后来的智能移动设备的普及,所有的互联网平台都面临了巨大的性能挑战。
NoSQL(NoSQL = Not Only SQL ),意即“不仅仅是SQL”,泛指非关系型的数据库。
NoSQL 不依赖业务逻辑方式存储,而以简单的key-value模式存储。因此大大的增加了数据库的扩展能力。
Memcache Memcache Redis Redis MongoDB MongoDB 列式数据库 列式数据库 Hbase Hbase
HBase是Hadoop项目中的数据库。它用于需要对大量的数据进行随机、实时的读写操作的场景中。
HBase的目标就是处理数据量非常庞大的表,可以用普通的计算机处理超过10亿行数据,还可处理有数百万列元素的数据表。
Cassandra Cassandra
Apache Cassandra是一款免费的开源NoSQL数据库,其设计目的在于管理由大量商用服务器构建起来的庞大集群上的海量数据集(数据量通常达到PB级别)。在众多显著特性当中,Cassandra最为卓越的长处是对写入及读取操作进行规模调整,而且其不强调主集群的设计思路能够以相对直观的方式简化各集群的创建与扩展流程。
主要应用:社会关系,公共交通网络,地图及网络拓谱(n*(n-1)/2)
什么是NoSQL数据库?从名称“非SQL”或“非关系型”衍生而来,这些数据库不使用类似SQL的查询语言,通常称为结构化存储。这些数据库自1960年就已经存在,但是直到现在一些大公司(例如Google和Facebook)开始使用它们时,这些数据库才流行起来。该数据库最明显的优势是摆脱了一组固定的列、连接和类似SQL的查询语言的限制。有时,NoSQL这个名称也可能表示“不仅仅SQL”,来确保它们可能支持SQL。 NoSQL数据库使用诸如键值、宽列、图形或文档之类的数据结构,并且可以如JSON之类的不同格式存储。
一般将NoSQL数据库分为四大类:键值(Key-Value)存储数据库、列存储数据库、文档型数据库和图形(Graph)数据库。它们的数据模型、优缺点、典型应用场景。
键值(Key-Value)存储数据库Key指向Value的键值对,通常用hash表来实现查找速度快数据无结构化(通常只被当作字符串或者二进制数据)内容缓存,主要用于处理大量数据的高访问负载,也用于一些日志系统等。
列存储数据库,以列簇式存储,将同一列数据存在一起查找速度快,可扩展性强,更容易进行分布式扩展功能相对局限分布式的文件系统。
文档型数据库,Key-Value对应的键值对,Value为结构化数据,数据结构要求不严格,表结构可变(不需要像关系型数据库一样需预先定义表结构),查询性能不高,而且缺乏统一的查询语法,Web应用。
图形(Graph)数据库,图结构,利用图结构相关算法(如最短路径寻址,N度关系查找等),很多时候需要对整个图做计算才能得出需要的信息,而且这种结构不太好做分布式的集群方案,社交网络,推荐系统等。