标签: wide-column-store

什么是宽列存储?

谷歌搜索定义要么返回面向列的数据库的结果,要么给出非常模糊的定义。

我的理解是宽列存储由列族组成,列族由行和列组成。所述系列中的每一行都一起存储在磁盘上。这听起来像是面向行的数据库存储数据的方式。这让我想到了我的第一个问题:

宽列存储与常规关系数据库表有何不同?这是我的看法:

* column family        -> table
* column family column -> table column
* column family row    -> table row
Run Code Online (Sandbox Code Playgroud)

这张来自Database Internals 的图片看起来就像两个普通表:

两个列族、内容和锚点

我对有什么不同的猜测来自这样一个事实,即沿边宽的列商店提到了“多维地图”。所以这是我的第二个问题:

宽列存储是否从左到右排序?意思是,在上面的例子中,行是先按Row Key,然后按Timestamp,最后按Qualifier

rdms wide-column-store

39
推荐指数
2
解决办法
2万
查看次数

宽列、列族、列式、面向列的数据库定义

这些术语之间存在很多混淆。我想把我的理解发表出来,看看人们是否同意。我在网上看到了相互矛盾和错误的定义。

在我看来,宽列数据库和列族数据库本质上是同一件事。他们是

  1. 数据由一组键值对(每个键值对称为列)进行逻辑组织;
  2. 由唯一的行键标识;
  3. 每行可以有可变的长度或列的定义
  4. 一行一行地存储在磁盘上。因此,列族(宽列)表与关系数据库的表相似,因为它们仍然被组织为行。

主要区别是它们没有固定的列模式,并且显然不能进行表连接。

3 行(列族)的示例:每行具有不同的长度和/或列,但在磁盘上rowkey1的整个内容是连续的行,后面跟着类似于关系数据库的其他行

rowkey1 k1-v k2-v k3-v

rowkey2 k1-v k4-v

rowkey3 k2-v k4-v k5-v

另一方面,术语“列式数据库”与“面向列的数据库”相同。它们一次一列存储在磁盘上,而不是一次一行。它非常适合时间序列或任何多序列分析目的。事实上,每列都具有相同类型的数据并且存储在一起,从而可以实现更好的数据压缩,这是一个额外的好处。

一个例子:

在此输入图像描述

在磁盘上:

a:1 b:2 c:3 d:4

10:1 9:2 8:3 7:4

column-oriented column-family wide-column-store

17
推荐指数
1
解决办法
4112
查看次数

Cassandra是面向列的还是列式数据库

列式数据库应该将列组存储在一起.但Cassandra按行存储数据.SS表将保存映射到其相应分区键的多行数据.所以我觉得Cassandra是像MySQL一样的行式数据存储,但是有其他好处,比如"宽行",并且每个列都不一定存在于所有行中,当然它也在内存中.如果我错了,请纠正我.

column-oriented cassandra nosql wide-column-store

13
推荐指数
2
解决办法
1万
查看次数

比较Cassandra结构与关系数据库

几天前,我读到了有关宽列存储类型的NoSql和Apache-Cassandra的全部内容.我的理解是Cassandra包括:

密钥空间(如关系数据库中的数据库)并支持许多列族或表(与关系数据库中的表相同)和无限行.

来自Stackoverflow标签:

宽列存储是一种键值数据库.它使用表,行和列,但与关系数据库不同,列的名称和格式可能因同一个表中的行而异.

在Cassandra中,所有行(在表中)都应该有一个行键,然后每个行键可以有多个列.我读到了关系数据库和NoSql(Cassandra)的实现和存储数据的差异.

但我不明白结构之间的区别:

想象一下我有一张表(或Cassandra中的列族)的场景:

当我执行这样的查询(Cql)时:

Select * from users;
Run Code Online (Sandbox Code Playgroud)

它给你我的结果,你可以看到:

lastname | age  | city          | email               
----------+------+---------------+----------------------
      Doe |   36 | Beverly Hills |   janedoe@email.com       
    Jones |   35 |        Austin |     bob@example.com        
    Byrne |   24 |     San Diego |  robbyrne@email.com         
    Smith |   46 |    Sacramento |   null                      
  Jones2  | null |        Austin |     bob@example.com       
Run Code Online (Sandbox Code Playgroud)

所以我使用打击查询在关系数据库(MsSql)中执行上述场景:

select * from [users] 
Run Code Online (Sandbox Code Playgroud)

结果是:

lastname    age      city              email                    
    Doe     36       Beverly Hills     janedoe@email.com          
    Jones   35       Austin            bob@example.com             
    Byrne   24       San …
Run Code Online (Sandbox Code Playgroud)

cassandra wide-column-store

11
推荐指数
2
解决办法
7759
查看次数

DynamoDB 是宽列存储吗?

消息来源表明 DynamoDB 是键/值存储、文档存储和/或宽列存储:

DynamoDB的核心是键/值存储

如果存储的值是文档,DynamoDB 会为使用基础文档提供一些支持。甚至亚马逊也同意。到目前为止,一切都很好。

然而,我看到一些说法称 DynamoDB 实际上是一个宽列存储(123等)。这对我来说似乎很奇怪,因为据我了解,宽列存储在技术上需要不同的数据存储模型。

将 DynamoDB 视为宽列存储是否合适?

nosql key-value-store document-store amazon-dynamodb wide-column-store

3
推荐指数
1
解决办法
1644
查看次数

如何通过 shell 访问 Amazon Keyspaces?

我尝试cqlsh在 AWS shell 中编写,但没有返回任何输出。我参考了这个教程

输出:-bash: cqlsh: command not found

amazon-web-services cassandra nosql wide-column-store amazon-keyspaces

2
推荐指数
1
解决办法
341
查看次数