一网打尽当下NoSQL类型、适用场景及使用公司_MySQL
NoSQL
在过去几年,关系型数据库一直是数据持久化的唯一选择,数据工作者考虑的也只是在这些传统数据库中做筛选,比如SQL Server、Oracle或者是MySQL。甚至是做一些默认的选择,比如使用.NET的一般会选择SQL Server;使用Java的可能会偏向Oracle,Ruby是MySQL,Python则是PostgreSQL或MySQL等等。
原因很简单:过去很长一段时间内,关系数据库的健壮性已经在多数应用程序中得到证实。我们可以使用这些传统数据库良好的控制并发操作、事务等等。然而如果传统的关系型数据库一直这么可靠,那么还有NoSQL什么事?NoSQL之所以生存并得到发展,是因为它做到了传统关系型数据库做不到的事!
关系型数据库中存在的问题
Impedance Mismatch
我们使用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

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제









인터넷의 발달로 인해 빅데이터 분석과 실시간 정보처리는 기업의 중요한 요구사항이 되었습니다. 이러한 요구 사항을 충족하기 위해 기존 관계형 데이터베이스는 더 이상 비즈니스 및 기술 개발 요구 사항을 충족하지 않습니다. 대신 NoSQL 데이터베이스를 사용하는 것이 중요한 옵션이 되었습니다. 이 기사에서는 NoSQL 데이터베이스와 통합된 SpringBoot를 사용하여 최신 애플리케이션을 개발하고 배포하는 방법에 대해 설명합니다. NoSQL 데이터베이스란 무엇입니까? NoSQL은 SQL이 아닙니다.

최신 웹 애플리케이션 개발에서 PHP와 NoSQL 데이터베이스는 매우 인기 있는 기술이 되었습니다. 과거에는 PHP가 동적 웹 사이트 및 웹 애플리케이션 개발에 널리 사용되었지만 NoSQL 데이터베이스는 최근에 등장한 새로운 데이터 저장 기술로 보다 유연하고 확장 가능한 솔루션을 제공합니다. 이 기사에서는 실제 애플리케이션에서 PHP 및 NoSQL 데이터베이스를 살펴보겠습니다. PHP는 원래 서버측 프로그래밍 언어입니다.

NoSQL(NotOnlySQL) 데이터베이스는 최근 급속히 발전한 데이터베이스 유형으로, 기존 관계형 데이터베이스에 비해 확장성과 성능이 뛰어나며 더 많은 데이터 유형과 데이터 저장 방법을 지원합니다. 그 중 MongoDB는 문서 데이터베이스 모델을 사용하는 NoSQL 데이터베이스로 웹 애플리케이션, 모바일 애플리케이션, 사물 인터넷 장치 및 기타 분야에서 널리 사용됩니다. 이 기사에서는 PHP를 사용하여 MongoDB 데이터베이스의 기본 작업을 작성하는 방법을 소개하고 예제를 통해 이를 충족하는 방법을 보여줍니다.

nosql과 mysql의 차이점은 다음과 같습니다. 1. MySQL은 테이블 설계를 기반으로 하는 관계형 데이터베이스인 반면 NoSQL은 본질적으로 비관계형 문서 기반 설계입니다. 2. MySQL의 엄격한 스키마 제한은 확장이 쉽지 않지만 NoSQL은 확장이 가능합니다. 동적 스키마를 통해 기능을 쉽게 확장할 수 있습니다.

인터넷의 급속한 발전으로 인해 데이터의 양도 늘어나고 있다. 따라서 데이터 관리는 매우 중요한 주제가 되었습니다. NoSQL(비관계형 데이터베이스)은 빅데이터 문제를 처리하는 데 널리 사용되는 솔루션 중 하나가 되었습니다. Redis는 매우 인기 있는 NoSQL 데이터 관리 소프트웨어입니다. 이 기사에서는 Redis와 다른 NoSQL 데이터베이스 간의 유사점과 차이점을 분석하고 비교하여 특성, 장점 및 단점을 이해하는 데 도움을 줍니다. 1. Redis 개요 Redis는 사용자가 다음과 같은 기능을 사용할 수 있는 메모리 기반 스토리지 시스템입니다.

인터넷의 발달로 인해 데이터의 양이 증가하고 있으며, 특히 이러한 데이터를 효과적으로 저장하고 처리하는 것이 중요합니다. NoSQL(NotOnlySQL) 데이터베이스는 기존 관계형 데이터베이스에 비해 높은 성능, 확장성 및 편의성으로 인해 많은 주목을 받고 있습니다. 더 유연하고 다양한 데이터 처리 시나리오에 적합합니다. MongoDB는 매우 인기 있는 NoSQL 데이터베이스이며 Java 개발에 자주 사용됩니다. 이 기사에서는 JavaAPI의 개발을 소개합니다.

Couchbase는 고성능, 확장성 및 안정성을 제공하는 인기 있는 캐싱 기술이며 많은 기업과 조직이 선택하는 솔루션입니다. 이 기사에서는 Couchbase 캐싱 기술의 원리, 장점 및 적용 시나리오를 자세히 소개합니다. Couchbase Cache의 원리 Couchbase 캐시 기술은 분산 NoSQL 데이터베이스를 기반으로 하며, 이는 여러 노드의 동시 작업을 지원하는 동시에 데이터의 고가용성과 확장성을 달성할 수 있습니다. Couchbase의 데이터는 메모리를 사용하여 캐시됩니다.

nosql의 특징: 1. 유연한 확장성; nosql은 관계형 데이터베이스의 관계형 특성을 제거하고 데이터 간의 관계가 없으며 쉽게 확장할 수 있습니다. 2. 유연한 데이터 모델: NoSQL은 키/값 및 열 패밀리와 같은 비관계형 모델을 사용하여 다양한 유형의 데이터를 하나의 데이터 요소에 저장할 수 있습니다. 3. NoSQL은 우수한 수평 확장 기능을 활용하여 클라우드 컴퓨팅 인프라를 최대한 활용하고 클라우드 컴퓨팅 환경에 원활하게 통합할 수 있습니다. 4. Nosql은 특히 대용량 데이터를 처리할 때 읽기 및 쓰기 성능이 매우 높습니다. 5. 고가용성.
