NoSQL数据库与传统关系型数据库有哪些区别?它们之间的差异是什么?

3

现在似乎有很多新的“NoSQL”类型数据库。一些流行的数据库包括CouchDB、Cassandra和MongoDB。

这些数据库与传统关系型数据库有什么不同?选择NoSQL数据库而不是SQL数据库有哪些优缺点?


它们并不更好,它们解决了不同的问题。这个问题在标题中相当侮辱性。 - HLGEM
我在这个答案中强调了SQL和NoSQL之间的主要区别。 - Niels van der Rest
6个回答

4
术语NoSQL涵盖了许多不同的数据存储方法,从最简单的键/值存储到复杂的文档数据库。这是一个引人注目的流行词,但在我看来并不是很具描述性。如果您想快速了解,请查看NoSQL的维基百科条目

3

同意,问题不是“哪个更好”,而是“哪种解决方案或一组解决方案最适合这种特定情况。”

NoSQL涵盖了许多不同的存储技术,如CouchDB,MongoDB,Cassandra和Solr。

CouchDB和MongoDB存储多维数据结构。MongoDB也是无模式的。Cassandra是一个基于列的存储引擎,用于快速检索,Solr帮助解决其他问题,如facet。

NoSQL仅指任何不通过SQL查询与之交互的存储设施。


1

它们并不比关系型数据库更好。NOSQL没有涉及任何新的创新或特殊功能。NOSQL只是指一组用于某些类型的应用程序的软件产品,但它们彼此之间并没有太多共同之处。NOSQL并不一定意味着非关系型数据库。


0

关系型数据库管理系统(RDBMS)是一种完全结构化的数据存储方式。而NoSQL则是一种非结构化的数据存储方式。另一个主要区别在于存储的数据量主要取决于系统的物理内存。而在NoSQL中,您没有任何这样的限制,因为您可以水平扩展系统。

您会发现NoSQL数据库具有一些共同特征。它们可以大致分为以下几类:

键/值存储 基于Google Bigtable论文的Bigtable启发式数据库 Dynamo启发式数据库 分布式数据库 文档数据库


0
各位,现在是一个热门的争论话题,SQL还是NoSQL。一些人欣赏NoSQL数据库在性能方面的优雅,而另一些人则想要继续使用SQL或关系型数据库管理系统(RDBMS)的传统。虽然每种方法都有其优点和缺点,但我试图用一些要点简要对比它们。
While RDBMS uses relations and joins to make data simpler in database tables     
NoSQL don't use joins for performance.
NoSQL scales freely when we talk in terms of schema and data, while its very tough to scale a RDBMS if data grows.
There are restriction in size of data in RDBMS in terms of data-types capability,  files of any size can be used in NoSQL databases.
Data integrity enforcement comes to play only in RDBMS not in NoSQL databases.
ACID is not the cup of tea for NoSQL databases but for RDBMS.
RDBMS supports complex transactions whereas NoSQL keeps mum for transactions.
NoSQL does not support constraints and validations while its the basic ingredient in RDBMS.
Data is not structured in NoSQL but is highly structured in form of tables in RDBMS.

使用SQL还是NoSQL取决于项目的性质和需求。


非常好的详细解释。 - Vivek Panday

0

基本的区别如下所述。当然,现在No-SQL概念日益流行。但是根据项目需求或要求,我们仍然需要使用哪种。

1)SQL数据库主要被称为RDBMS。而NoSQL数据库主要被称为非关系型分布式数据库。

2)RDBMS将遵循ACID属性,即原子性、一致性、隔离性和持久性。但在No-Sql中,它遵循CAP(一致性、可用性和分区)。

3)在SQL中,我们只能以表格格式存储数据。但在No-SQL中,它使用键值对、文档、图形数据库或宽列存储的集合。因此,No-SQL是无模式的,可以处理结构化、半结构化和非结构化数据。但是SQL不是无模式的,SQL具有预定义模式。也就是说,在SQL中,如果您有一个表格,并且其中第一列是int数据类型,则无法存储字符串或浮点值。

4) RDBMS遵循用于定义和操作数据的SQL(结构化查询语言),它非常强大。在NoSQL数据库中,查询侧重于文档集合。有时也称为UnQL(非结构化查询语言)。使用UnQL的语法因数据库而异。此外,SQL数据库非常适合复杂的查询密集型环境,而NoSQL数据库不适用于复杂查询。从高层次来看,NoSQL没有执行复杂查询的标准接口,而且NoSQL中的查询本身不如SQL查询语言强大。

例如...以社交工程网站为例,我们上传照片/视频/音乐/专辑等,对此我们会得到评论、回复评论、点赞等反馈。在这种情况下,我们采用文档类型的No-SQL来存储评论。

{
   user_id: ObjectID("65f82bda42e7b8c76f5c1969"),
   update: [
    {
      date: ISODate("2015-09-18T10:02:47.620Z"),
      text: "Nice picture."
},
{
  date: ISODate("2015-09-17T13:14:20.789Z"),
  text: "1234@some smile symbol"
}
{
    date: ISODate("2015-09-17T12:33:02.132Z"),
    text: "...Oh my god.."
  }
 ]
}

如果我们选择SQL,我们无法仅将评论(上方文本)存储在列中。我们需要根据类型进行存储。因此,我们将以许多连接不同表的大型复杂查询结束。但对于交易,SQL是很好的选择。

通常情况下,SQL数据库具有垂直可伸缩性。您可以通过在单个服务器上增加CPU、RAM、SSD等来管理增加的负载。另一方面,No-SQL数据库具有水平可伸缩性。您可以轻松地向No-SQL数据库基础架构添加几个服务器以处理大量流量。

SQL数据库最适合重型事务类型应用程序,因为它更稳定并承诺数据的原子性和完整性。虽然您可以使用NoSQL进行事务处理,但在高负载和复杂事务应用程序方面,它仍然不足以与SQL相媲美和稳定。

No-SQL的例子包括MangoDB、Cassandra等,而SQL的例子包括MySQL、SQL Server等。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接