<分区>
有人可以通过示例查询向我解释 vertica 数据库中 PROJECTION 的概念吗?
<分区>
有人可以通过示例查询向我解释 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/