搜索
首页数据库mysql教程一网打尽当下NoSQL类型、适用场景及使用公司_MySQL

NoSQL

  在过去几年,关系型数据库一直是数据持久化的唯一选择,数据工作者考虑的也只是在这些传统数据库中做筛选,比如SQL Server、Oracle或者是MySQL。甚至是做一些默认的选择,比如使用.NET的一般会选择SQL Server;使用Java的可能会偏向Oracle,Ruby是MySQL,Python则是PostgreSQL或MySQL等等。

  原因很简单:过去很长一段时间内,关系数据库的健壮性已经在多数应用程序中得到证实。我们可以使用这些传统数据库良好的控制并发操作、事务等等。然而如果传统的关系型数据库一直这么可靠,那么还有NoSQL什么事?NoSQL之所以生存并得到发展,是因为它做到了传统关系型数据库做不到的事!

  关系型数据库中存在的问题

  Impedance Mismatch

一网打尽当下NoSQL类型、适用场景及使用公司_MySQL

  我们使用Python、Ruby、Java、.Net等语言编写应用程序,这些语言有一个共同的特性——面向对象。但是我们使用MySQL、PostgreSQL、Oracle以及SQL Server,这些数据库同样有一个共同的特性——关系型数据库。这里就牵扯到了“Impedance Mismatch”这个术语:存储结构是面向对象的,但是数据库却是关系的,所以在每次存储或者查询数据时,我们都需要做转换。类似Hibernate、Entity Framework这样的ORM框架确实可以简化这个过程,但是在对查询有高性能需求时,这些ORM框架就捉襟见肘了。

  应用程序规模的变大

  网络应用程序的规模日渐变大,我们需要储存更多的数据、服务更多的用户以及需求更多的计算能力。为了应对这种情形,我们需要不停的扩展。扩展分为两类:一种是纵向扩展,即购买更好的机器,更多的磁盘、更多的内存等等;另一种是横向扩展,即购买更多的机器组成集群。在巨大的规模下,纵向扩展发挥的作用并不是很大。首先单机器性能提升需要巨额的开销并且有着性能的上限,在Google和Facebook这种规模下,永远不可能使用一台机器支撑所有的负载。鉴于这种情况,我们需要新的数据库,因为关系数据库并不能很好的运行在集群上。不错你也可能会去搭建关系数据库集群,但是他们使用的是共享存储,这并不是我们想要的类型。于是就有了以Google、Facebook、Amazon这些试图处理更多传输所引领的NoSQL纪元。

  NoSQL纪元

  当下已经存在很多的NoSQL数据库,比如MongoDB、Redis、Riak、HBase、Cassandra等等。每一个都拥有以下几个特性中的一个:

  • 不再使用SQL语言,比如MongoDB、Cassandra就有自己的查询语言
  • 通常是开源项目
  • 为集群运行而生
  • 弱结构化——不会严格的限制数据结构类型

  NoSQL数据库的类型

  NoSQL可以大体上分为4个种类:Key-value、Document-Oriented、Column-Family Databases以及 Graph-Oriented Databases。下面就一览这些类型的特性:

  一、 键值(Key-Value)数据库

  键值数据库就像在传统语言中使用的哈希表。你可以通过key来添加、查询或者删除数据,鉴于使用主键访问,所以会获得不错的性能及扩展性。

  产品:Riak、Redis、Memcached、Amazon’s Dynamo、Project Voldemort

  有谁在使用:GitHub (Riak)、BestBuy (Riak)、Twitter (Redis和Memcached)、StackOverFlow (Redis)、 Instagram (Redis)、Youtube (Memcached)、Wikipedia(Memcached)

  适用的场景

  储存用户信息,比如会话、配置文件、参数、购物车等等。这些信息一般都和ID(键)挂钩,这种情景下键值数据库是个很好的选择。

  不适用场景

  1. 取代通过键查询,而是通过值来查询。Key-Value数据库中根本没有通过值查询的途径。

  2. 需要储存数据之间的关系。在Key-Value数据库中不能通过两个或以上的键来关联数据。

  3. 事务的支持。在Key-Value数据库中故障产生时不可以进行回滚。

  二、 面向文档(Document-Oriented)数据库

  面向文档数据库会将数据以文档的形式储存。每个文档都是自包含的数据单元,是一系列数据项的集合。每个数据项都有一个名称与对应的值,值既可以是简单的数据类型,如字符串、数字和日期等;也可以是复杂的类型,如有序列表和关联对象。数据存储的最小单位是文档,同一个表中存储的文档属性可以是不同的,数据可以使用XML、JSON或者JSONB等多种形式存储。

  产品:MongoDB、CouchDB、RavenDB

  有谁在使用:SAP (MongoDB)、Codecademy (MongoDB)、Foursquare (MongoDB)、NBC News (RavenDB)

  适用的场景

  1. 日志。企业环境下,每个应用程序都有不同的日志信息。Document-Oriented数据库并没有固定的模式,所以我们可以使用它储存不同的信息。

  2. 分析。鉴于它的弱模式结构,不改变模式下就可以储存不同的度量方法及添加新的度量。

  不适用场景

  在不同的文档上添加事务。Document-Oriented数据库并不支持文档间的事务,如果对这方面有需求则不应该选用这个解决方案。

  三、 列存储(Wide Column Store/Column-Family)数据库

  列存储数据库将数据储存在列族(column family)中,一个列族存储经常被一起查询的相关数据。举个例子,如果我们有一个Person类,我们通常会一起查询他们的姓名和年龄而不是薪资。这种情况下,姓名和年龄就会被放入一个列族中,而薪资则在另一个列族中。

  产品:Cassandra、HBase

  有谁在使用:Ebay (Cassandra)、Instagram (Cassandra)、NASA (Cassandra)、Twitter (Cassandra and HBase)、Facebook (HBase)、Yahoo!(HBase)

  适用的场景

  1. 日志。因为我们可以将数据储存在不同的列中,每个应用程序可以将信息写入自己的列族中。

  2. 博客平台。我们储存每个信息到不同的列族中。举个例子,标签可以储存在一个,类别可以在一个,而文章则在另一个。

  不适用场景

  1. 如果我们需要ACID事务。Vassandra就不支持事务。

  2. 原型设计。如果我们分析Cassandra的数据结构,我们就会发现结构是基于我们期望的数据查询方式而定。在模型设计之初,我们根本不可能去预测它的查询方式,而一旦查询方式改变,我们就必须重新设计列族。

  四、 图(Graph-Oriented)数据库

  图数据库允许我们将数据以图的方式储存。实体会被作为顶点,而实体之间的关系则会被作为边。比如我们有三个实体,Steve Jobs、Apple和Next,则会有两个“Founded by”的边将Apple和Next连接到Steve Jobs。

  产品:Neo4J、Infinite Graph、OrientDB

  有谁在使用:Adobe (Neo4J)、Cisco (Neo4J)、T-Mobile (Neo4J)

  适用的场景

  1. 在一些关系性强的数据中

  2. 推荐引擎。如果我们将数据以图的形式表现,那么将会非常有益于推荐的制定

  不适用场景

  不适合的数据模型。图数据库的适用范围很小,因为很少有操作涉及到整个图。

  原文链接: NoSQL Databases, why we should use, and which one we should choose 

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
Spring Boot与NoSQL数据库的整合使用Spring Boot与NoSQL数据库的整合使用Jun 22, 2023 pm 10:34 PM

随着互联网的发展,大数据分析和实时信息处理成为了企业的一个重要需求。为了满足这样的需求,传统的关系型数据库已经不再满足业务和技术发展的需要。相反,使用NoSQL数据库已经成为了一个重要的选择。在这篇文章中,我们将讨论SpringBoot与NoSQL数据库的整合使用,以实现现代应用程序的开发和部署。什么是NoSQL数据库?NoSQL是notonlySQL

PHP和NoSQL数据库的应用PHP和NoSQL数据库的应用Jun 19, 2023 pm 03:25 PM

在现代的网络应用程序开发中,PHP和NoSQL数据库已经成为了非常受欢迎的技术选择。在过去,PHP曾被广泛应用于开发动态网站和Web应用程序,而NoSQL数据库则是最近才出现的全新的数据存储技术,它提供了更加灵活和可扩展的解决方案。在这篇文章中,我们将会探讨PHP和NoSQL数据库在实际应用中的情况。PHP是一种服务器端编程语言,最初

使用PHP和MongoDB实现NoSQL数据库,满足不同用户需求使用PHP和MongoDB实现NoSQL数据库,满足不同用户需求Jun 26, 2023 pm 11:39 PM

NoSQL(NotOnlySQL)数据库是近年来快速发展的一类数据库,与传统关系型数据库相比,其具有更好的可扩展性和性能,并支持更多的数据类型和数据存储方式。其中,MongoDB是一款使用文档数据库模型的NoSQL数据库,被广泛应用于Web应用、移动应用、物联网设备等领域。本文将介绍如何使用PHP编写MongoDB数据库的基本操作,并通过实例演示如何满足

nosql与mysql的区别是什么nosql与mysql的区别是什么May 06, 2019 pm 02:39 PM

nosql与mysql的区别是:1、MySQL是一个基于表格设计的关系数据库,而NoSQL本质上是非关系型的基于文档的设计;2、MySQL的严格模式限制并不容易扩展,而NoSQL可以通过动态模式特性轻松扩展等等。

Redis与NoSQL数据库的比较Redis与NoSQL数据库的比较May 11, 2023 am 10:52 AM

随着互联网的快速发展,数据量也在不断增加。因此,数据管理成为了一个非常重要的课题。NoSQL(非关系型数据库)已经成为处理大数据问题的热门解决方案之一。而Redis又是一款十分流行的NoSQL数据管理软件。本文将分析和比较Redis和其他NoSQL数据库之间的异同点,帮助理解它们的特点和优缺点。一、Redis概述Redis是一个基于内存的存储系统,允许用户使

了解 Couchbase 缓存技术了解 Couchbase 缓存技术Jun 20, 2023 pm 07:24 PM

Couchbase是一个流行的缓存技术,提供高性能、可扩展性和可靠性,是许多企业和组织的首选解决方案。本文将详细介绍Couchbase缓存技术的原理、优势以及应用场景。Couchbase缓存的原理Couchbase缓存技术基于分布式的NoSQL数据库,能够支持多个节点的并发操作,同时实现了数据的高可用性和可扩展性。Couchbase中的数据使用内存进行缓存,

Java API 开发中使用 MongoDB 进行 NoSQL 处理Java API 开发中使用 MongoDB 进行 NoSQL 处理Jun 18, 2023 am 10:24 AM

随着互联网的发展,数据量越来越大,要对这些数据进行有效的存储和处理变得尤为重要。NoSQL(NotOnlySQL)数据库因其高性能、可伸缩性和便捷性而备受关注,相比传统的关系型数据库,它们更加灵活,适用于各种不同的数据处理场景。MongoDB是一款非常流行的NoSQL数据库,在Java开发中也经常被使用。本文将介绍在JavaAPI开发中

nosql数据库的特点是什么nosql数据库的特点是什么Nov 28, 2022 pm 07:43 PM

nosql特点:1、灵活的可扩展性;nosql去掉了关系数据库的关系型特性,数据之间无关系,很简单就能够扩展。2、灵活的数据模型;NoSQL采用键/值、列族等非关系模型,允许在一个数据元素里存储不同类型的数据。3、NoSQL可以凭借自身良好的横向扩展能力,充分自由利用云计算基础设施,很好地融人到云计算环境中。4、nosql有着非常高的读写性能,特别是在大数据量之下。5、高可用。

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

mPDF

mPDF

mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),

SecLists

SecLists

SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

安全考试浏览器

安全考试浏览器

Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )专业的PHP集成开发工具