在没有NOSQL数据时,关系型数据库一直是数据持久化的唯一选择,比较典型的关系型数据库有SQL Server、Oracle,MySQL,DB2.做.NET开发的同学一般会选择SQL Server,做JAVA的可能会偏向Oracle,MySQL,Python则是PostgreSQL或MySQL等等。过去很长一段时间内,关系数据库的健壮性已经在多数应用程序中得到证实。我们可以使用这些传统数据库良好的控制并发操作、事务等等。然而如果传统的关系型数据库一直这么可靠,那么为什么还会出现NOSQL呢?NoSQL之所以生存并得到发展,是因为它做到了传统关系型数据库做不到的事!
关系型数据库中存在的问题
我们使用的高级编程语言如Java、.Net.python等语言他们都有一个共同的特性——面向对象。但是我们所使用数据库MySQL、PostgreSQL、Oracle以及SQL Server他们同样有一个共同的特性——关系型数据库。这里就牵扯到了“Impedance Mismatch”这个术语:存储结构是面向对象的,但是数据库却是关系的,所以在每次存储或者查询数据时,我们都需要做转换。
应用程序规模的变大
随着互联网的逐渐发展,越来越多的业务数据和访问能力让服务器承受着巨大的负担为了解决这个问题我们可以通过扩展:一种是纵向扩展,即购买更好的机器,更大的磁盘空间、更多的内存等等;另一种是横向扩展,即购买更多的机器组成集群,搭建分布式服务器,在巨大的规模下,纵向扩展发挥的作用并不是很大。首先单机器性能提升需要巨额的开销并且有着性能的上限,在Google和Facebook这种规模下,永远不可能使用一台机器支撑所有的负载。鉴于这种情况,我们需要新的数据库,因为关系数据库并不能很好的运行在集群上。
NoSQL 数据库特点
不再使用SQL语言
一般为开源项目
为集群运行而生
弱结构化——不会严格的限制数据结构类型
NoSQL数据库的类型
NoSQL可以大体上分为4个种类:键-值对数据库、列族/大表数据库、文档数据库以及 图形数据库。下面就一览这些类型的特性:
一、 键-值对数据库
键值数据库就像在传统语言中使用的哈希表。你可以通过key来添加、查询或者删除数据,鉴于使用主键访问,所以会获得不错的性能及扩展性虽然具备高度可扩展性,但却无法帮助开发人员顺畅处理复杂数据集。如果大家需要进行磁盘备份、分布式散列表并通过一致性对数据内容加以检查,那么上述方案既具备良好的规模化能力、又能提供出色的处理速度。然而如果我们需要通过某个键来获取另一个键、进而访问第三个键以查询相关值,那么问题就会变得不易处理了
代表产品:Couchbase、Riak、Redis、Memcached
案列:Youtube (Memcached)、Twitter (Redis)、StackOverFlow (Redis)、GitHub (Riak)
适用的场景
储存用户信息,比如会话、配置文件、参数、购物车等等。这些信息一般都和ID(键)挂钩,这种情景下键值数据库是个很好的选择。
不适用场景
1. 取代通过键查询,而是通过值来查询。Key-Value数据库中根本没有通过值查询的途径。
2. 需要储存数据之间的关系。在Key-Value数据库中不能通过两个或以上的键来关联数据。
3. 事务的支持。在Key-Value数据库中故障产生时不可以进行回滚。
二、列族/大表数据库
这是键-值数据库的一种更为先进的表现形式。从本质上讲,其中的键与值 存在一定程度的复合。我们可以将其视为一套贯穿多维数组的散列映射。基本每一个列都容纳着一行数据。举个例子,如果我们有一个Person类,我们通常会一起查询他们的姓名和年龄而不是薪资。这种情况下,姓名和年龄就会被放入一个列族中,而薪资则在另一个列族中。
代表产品:Cassandra、HBase
案列:Instagram (Cassandra),NASA (Cassandra),Yahoo!(HBase)
适用的场景
1. 日志信息。因为我们可以将数据储存在不同的列中,每个应用程序可以将信息写入自己的列族中。
2. 社交平台。我们储存每个信息到不同的列族中。
不适用场景
1. 需要ACID事务。
2. 数据之间的关系与数据本身的重要性不相上下
三、文档数据库
面向文档数据库会将数据以文档的形式储存。每个文档都是自包含的数据单元,是一系列数据项的集合。每个数据项都有一个名称与对应的值,值既可以是简单的数据类型,如字符串、数字和日期等;也可以是复杂的类型,如有序列表和关联对象。数据存储的最小单位是文档,同一个表中存储的文档属性可以是不同的,数据可以使用XML、JSON或者JSONB等多种形式存储。文档数据库属于自然而然的发展趋势。从集群化到数据访问,文档数据库与键-值数据库几乎完全一致;惟一的区别在于,文档数据库能够理解所存储数据中的文档内容。”换句话来说,文档数据库会可以将值作为JSON、而JSON文档中的元素则能够通过检索轻松进行查询与搜索。
代表产品:MongoDB、CouchDB、Couchbase
案列:SAP (MongoDB)
适用的场景
1. 文档信息存储。企业环境下,每个应用程序都有不同的日志信息。文档数据库数据库并没有固定的模式,所以我们可以使用它储存不同的信息。
2. 分析。鉴于它的弱模式结构,不改变模式下就可以储存不同的度量方法及添加新的度量。
不适用场景
在不同的文档上添加事务。文档数据库数据库并不支持文档间的事务
四、图形数据库
形数据库并不太关注数据规模或者可用性,而主要针对我们的数据之间存在怎样的相关性以及用户需要如何执行计算任务。正如Neo Technologies公司(主要产品为Neo4j数据库)产品工程高级主管Philip Rathle所说,图形数据库的威力主要体现在“数据集在本质上存在关联且非表格形式的情况下。其首要数据访问模式采用事务型机制,即OLTP/记录系统而非批量处理机制……请大家记住,图形数据库允许以事务性方式执行关联性操作,这一点在关系型数据库管理系统领域只能通过批量处理来完成。”
代表产品:Neo4J
案列:Adobe(Neo4J)
适用的场景
1. 在一些关系性强的数据中
2. 推荐引擎。如果我们将数据以图的形式表现,那么将会非常有益于推荐的制定
不适用场景
不适合的数据模型。图数据库的适用范围很小,因为很少有操作涉及到整个图。
相关推荐
NoSQL数据库 14信管一班2组23殷月园 NoSQL数据库PPT全文共20页,当前为第1页。 内容大纲 定义 产生 共同特征 分类 适用场景 发展现状 7 挑战 NoSQL数据库PPT全文共20页,当前为第2页。 一.什么是NoSQL数据库? NoSQL...
本课件将深入探讨分布式数据库的原理以及NoSQL数据库的核心概念,帮助读者理解和掌握这两种技术。 一、分布式数据库基础 1. 分布式数据库定义:分布式数据库是一种物理上分散在不同地理位置,但在逻辑上视为单一...
《NoSQL数据库原理与应用案例教程》PPT课件(共9单元)第4章 HBase原理实现.pdf《NoSQL数据库原理与应用案例教程》PPT课件(共9单元)第4章 HBase原理实现.pdf《NoSQL数据库原理与应用案例教程》PPT课件(共9单元)第4章 ...
NoSQL数据库作为一种新兴的数据库技术,在解决大规模数据存储和处理方面展现出巨大的潜力。其高扩展性、高性能和灵活的数据模型使其成为许多现代应用程序的理想选择。然而,选择NoSQL数据库时也需要综合考虑各种因素...
Nosql数据库打破了传统的关系模型,以一种模式自由的方式存储数据,提供了新型的访问接口,并克服了传统RDBMS的缺点。Nosql数据库可以部署在廉价的硬件之上,支持分布式存储,能透明地扩展节点。 2. 分布式数据库...
NoSQL数据库技术是一种非关系型数据库,适用于大规模、高并发、高灵活性的数据存储和管理。它具有分布式、可扩展、灵活性和高并发等优势。NoSQL数据库技术可以分为四大类:键值存储、图形数据库、文档数据库和时间...
NoSQL数据库技术发展趋势 NoSQL数据库技术发展趋势是当前数据库技术发展的热点。近年来,NoSQL数据库技术获得了高速发展,许多企业和机构都在投入巨资来开发和应用NoSQL数据库技术。阿里云作为中国软件行业的领导者...
NoSQL数据库技术实战 数据库书籍!
nosql数据库的发展和应用研究
综上所述,"NoSQL数据库入门思维导图"应包含了NoSQL的基本概念、主要类型、优缺点以及与MySQL的对比,帮助初学者理解并选择合适的数据库技术。通过“基础知识.mmap”可以深入学习NoSQL的原理和操作,而“常见的NoSQL...
### NoSQL数据库之Redis数据库管理视频教程 #### NoSQL数据库简介 NoSQL(Not Only SQL)数据库是指非关系型数据库,它们与传统的关系型数据库在数据存储方式上有显著区别。NoSQL数据库通常支持灵活的数据模式,...
综上所述,虽然提供的具体文件内容未能直接反映其内部的知识点,但通过以上对NoSQL数据库的详细介绍,我们已经能够了解到关于NoSQL数据库的一些基本概念、特点及应用场景,这对于初学者来说是一个很好的起点。
理论篇重点介绍大数据时代下数据处理的基本理论及相关处理技术,并引入NoSQL数据库;系统篇主要介绍了各种类型NoSQL数据库的基本知识;应用篇对国内外几家知名公司在利用NoSQL数据库处理海量数据方面的实践做了阐述...
NoSQL数据库的设计初衷是为了处理大规模数据集、高并发访问及提供灵活的数据模型支持。NoSQL这一概念的提出主要是为了应对传统关系型数据库在Web 2.0时代所遇到的一些挑战。 #### 二、NoSQL数据库的产生背景 随着...
NoSQL数据库是一种非关系型的数据库,旨在解决传统关系数据库在应付Web 2.0网站,特别是超大规模和高并发的SNS类型的Web 2.0网站中的问题。NoSQL数据库的优点是可以处理超大量的数据,可以运行在便宜的PC服务器集群...
NoSQL数据库是一种新型的非关系型数据库,随着大数据时代的到来,NoSQL数据库的应用变得越来越广泛。NoSQL一词最初代表“反SQL”,意在用新型的非关系数据库取代关系数据库,但随着时间的推移,其含义已演变为“不...
NoSQL数据库学习教程 CAP定律是NoSQL数据库存在的三大基石之一,CAP定律是指在分布式系统中,无法同时满足一致性、可用性和分区容忍性这三个属性。其中,一致性是指所有节点在同一时间看到相同的数据;可用性是指...
NoSQL数据库,全称为"Not Only SQL",是近年来在大数据处理和分布式系统中广泛应用的一种非关系型数据库。与传统的关系型数据库相比,...每种NoSQL数据库都有其专长,选择合适的数据库能极大地提高系统的效率和稳定性。