zoukankan      html  css  js  c++  java
  • Vertica 分区表设计

    Vertica数据库中的表只是一个逻辑概念。

    实际存储在磁盘上的是projection。 当创建一张表,没有创建projection时,那么插入数据的时候会自动创建一个默认的projection。如果运行中发现projection不合适,可以运行dbd进行优化,得出一些建议,参考来重建projection。

    如果清楚projection如何建立最优,那么建表的时候就可以在插入数据之前直接手动建立对应的projection。

    Projection
    
    Optimized collections of table columns that provide physical storage for data. A projection can contain some or all of the columns of one or more tables. A projection that contains all of the columns of a table is called a super-projection. A projection that joins one or more tables is called a pre-join projection.
    

    导出Vertica库中原有的建表语句:

    例如导出test用户下的t_jingyu表的建表语句到/tmp/t_jingyu.sql文件(需要dbadmin用户登录vsql操作):
    select export_objects('/tmp/t_jingyu.sql','test.t_jingyu');

    vertica建分区表:

    按doy分区:

    create table t_jingyu(
    col1 int, 
    col2 varchar, 
    col3 timestamp not null)
    PARTITION BY (date_part('doy', t_jingyu.col3));
    

    这样的分区表卸载时:

    SELECT DROP_PARTITION('test.t_jingyu', EXTRACT('doy' FROM '2015-04-01'::date)); 
    

    按月分区:

    create table t_jingyu(
    col1 int, 
    col2 varchar, 
    col3 timestamp not null)
    partition by EXTRACT(year FROM col3)*100 + EXTRACT(month FROM col3);
    

    插入测试数据:

    insert into t_jingyu values(1,11,sysdate-1);
    insert into t_jingyu values(1,11,sysdate);
    insert into t_jingyu values(2,11,sysdate-33);
    commit;
    

    这样的分区表卸载时:

    SELECT DROP_PARTITION('test.t_jingyu', EXTRACT('year' FROM '20150401'::date)*100 +  EXTRACT('month' FROM '20150401'::date)); 
    

    上面就是删除201504的分区。

    创建Projection:

    CREATE PROJECTION t_jingyu
    (
    col1, 
    col2, 
    col3
    )
    AS
    SELECT * FROM t_jingyu
    ORDER BY col3, col1
    SEGMENTED BY hash(col3) ALL NODES KSAFE 1;
  • 相关阅读:
    sparksql解析流程
    推荐算法简介:基于用户的协同过滤、基于物品的协同过滤、基于内容的推荐
    数据中台
    拉链表
    大数据去重与布隆过滤器
    推荐算法简介
    java获取resources文件夹中文件的路径
    Flink中设置事件时间
    [转载]REDIS缓存穿透,缓存击穿,缓存雪崩原因+解决方案
    使用Gson或者jackson代替Fastjson
  • 原文地址:https://www.cnblogs.com/jyzhao/p/4451024.html
Copyright © 2011-2022 走看看