当前位置:  开发笔记 > 后端 > 正文

NoSQL和面向列的数据库之间有什么区别?

如何解决《NoSQL和面向列的数据库之间有什么区别?》经验,为你挑选了3个好方法。

我读的关于NoSQL的越多,它就越像听起来像是一个面向列的数据库.

NoSQL(例如CouchDB,Cassandra,MongoDB)和面向列的数据库(例如Vertica,MonetDB)之间有什么区别?



1> Ravindra bab..:

NoSQL是用于Not Only SQL的术语,它涵盖四个主要类别 - 键值,文档,列族和图数据库.

键值 数据库非常适合频繁进行小读写和简单数据模型的应用程序.使用唯一标识记录的密钥存储和检索这些记录,并用于快速查找数据库中的数据.

例如Redis,Riak等.

文档数据库 能够存储不同的属性以及大量数据

例如MongoDB,CouchDB等.

列族数据库专为大量数据,读写性能和高可用性而设计

例如Cassandra,HBase等.

图形数据库是一个数据库,它使用图形结构进行语义查询,其中包含节点,边和属性来表示和存储数据

例如Neo4j,InfiniteGraph等

在了解NoSQL之前,您必须了解一些关键概念.

一致性 - 系统中的所有服务器都将具有相同的数据,因此无论哪个服务器响应其请求,使用该系统的任何人都将获得相同的副本.

可用性 - 系统将始终响应请求(即使它不是最新数据或在整个系统中保持一致,或只是一条消息说系统不工作).

分区容差 - 即使单个服务器出现故障或无法访问,系统仍将继续作为一个整体运行.

大多数情况下,NoSQL数据库只满足三个属性中的两个.

从你的问题,

CouchDB :AP(可用性和分区)和文档数据库

Cassandra:AP(可用性和分区)和列族数据库

MongoDB :CP(一致性和分区)和文档数据库

Vertica :CA(一致性和可用性)和列族数据库

MonetDB : ACID(原子一致性隔离持久性) 和关系数据库

来自:http://blog.nahurst.com/visual-guide-to-nosql-systems

在此输入图像描述

看看这第一条,第二条和PPT的各种场景来选择特定类型的数据库.



2> Maxx Daymon..:

一些NoSQL数据库是面向列的数据库,一些SQL数据库也是面向列的.数据库是列还是行是数据库的物理存储实现细节,对于关系数据库和非关系数据库(NoSQL)都是如此.

例如,Vertica是一个面向列的关系数据库,因此它实际上不符合NoSQL数据存储区的要求.

"NoSQL移动"数据存储区更好地定义为非关系型,无共享,水平可伸缩数据库,没有(必然)ACID保证.一些面向列的数据库可以通过这种方式表征.除了列存储,NoSQL实现还包括文档存储,对象存储,元组存储和图形存储.



3> martincho..:

NoSQL数据库是与传统的基于模式的数据库不同的范例.它们旨在扩展和保存json数据等文档.显然他们有一种查询信息的方法,但你应该期望像eval("person =*and age> 10)这样的语法来检索数据.即使它们支持标准的SQL接口,它们也是用于其他东西的,所以如果你喜欢SQL你应该坚持传统的数据库.

面向列的数据库与传统的面向行的数据库不同,因为它们存储数据的方式.通过将整列存储在一起而不是一行,可以在从包含许多列的行中选择几列时最小化磁盘访问.在面向行的数据库中,如果只选择一行中的一个或所有字段,则没有区别.

你必须支付更昂贵的插件.插入新行将导致许多磁盘操作,具体取决于列数.

但是在SQL,ACID,外键和类似的东西方面与传统数据库没有区别.

推荐阅读
php
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有