database - 垂直数据库中的投影

标签 database projection vertica

<分区>

有人可以通过示例查询向我解释 vertica 数据库中 PROJECTION 的概念吗?

最佳答案

Vertica 不使用索引来查找数据。

从概念上讲,您仍然使用 SQL 访问表。但在幕后,表中的数据存储在投影中,您可以针对不同的查询对其进行优化。

我喜欢把它想象成代表一副纸牌的 table 。如果打扑克,你可能还会说类似的话

Select * from CardDeck limit 5;

假设您有一个用以下列定义的表:

FaceValue int (let's just assume face values are ints),
Suit varchar(10)

然后我可以创建我的投影(我省略了有关分区、 super 投影、伙伴投影等的详细信息)。

create projection CardDeck_p1
(
FaceValue ENCODING RLE,
Suit
)
as 
select FaceValue, Suit from CardDeck order by FaceValue;

create projection CardDeck_p2
(
FaceValue,
Suit
)
as
select FaceValue, Suit from CardDeck order by Suit;

现在,每一列都可以获得在投影中定义的不同类型的编码。数据库设计器(自从我使用旧版本以来就没怎么用过)可以帮助您设计投影。

所以回到纸牌类比,假设您想要访问一副纸牌,但您想要对纸牌进行不同的洗牌。 Vertica 中的投影为您提供不同的随机播放。表实际上是一种允许您访问存储在投影中的数据的结构。但是,如果您正在编写 SQL,您将访问表。

关于database - 垂直数据库中的投影,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10211799/

相关文章:

mysql - 如何使用 CASE 语句获取空结果集?

php - mysql 索引到日期时间类型的列

java - Tomcat 中配置数据源失败

java - 无法连接到 MS Access 数据库

geometry - 如何找到投影矩形的 3D 坐标?

vertica - 如何在 Vertica 中重命名表格和投影?

database - 使用数据库撤消

java - mongodb (java) 包括按名称排列的 id 字段

projection - Kitti Velodyne 点到像素坐标

linux - 无法更改 Linux 中的预读值