zoukankan      html  css  js  c++  java
  • clickhouse数据库操作

    一、关于clickhouse引擎

    ch数据库和表都可以设置自己的引擎,不同数据选择适合的引擎效率会增加。不同的引擎代表不同的类型,比如拥有何种特性、数据以何种形式被存储以及如何被加载。这个概念在其他数据库里体现的不多。

    引擎参考:https://blog.csdn.net/qq_42979842/article/details/108939841

    1.1、数据库引擎

    Ordinary
      默认引擎,此数据库可以使用任意表引擎。

    Dictionary
      字典引擎,此数据库会为所有数据字典创建数据表。

     Memory
      内存引擎,此数据库中的表只存放在内存中,重启丢失。

    Lazy
      日志引擎,此数据库只能使用Log系列的表引擎。

    MySQL
      MySQL引擎,此数据库可以自动拉取远端MySQL数据(类似于Oracle的dblink,可以对远程表进行读写)

    1.2、数据表引擎

     

     

     1.3、数据库集群和分布式的概念

    -数据库集群有的具有单份数据集,有的具有两份或多份相似的数据集,有的具有两份或多份实时一致的数据集,是将几台服务器集中在一起,实现同一数据集业务;而分布式数据库系统往往具有完全不同的数据集,是将几台服务器集中在一起,实现不同数据集的业务。
    -数据库集群往往是同构的系统,要求集群各节点都具有相同的操作系统和数据库系统版本,甚至补丁包的版本也要求保持一致;而分布式数据库系统可以是异构系统,包含不同的操作系统和不同的数据库系统。
    -数据库集群往往建立在高速局域网内,一般在一个网段内;而分布式数据库系统既可以是高速局域网,也可以是跨部门、跨单位的异地远程网络,一般是跨网段,需要路由。
    -数据库集群组织紧密,一台节点跨了,其他节点可以立即顶上,服务保证延续;而分布式数据库组织松散,一个节点跨了,那这个节点的数据服务就不可用了。
    -分布式数据库的数据处理一般需要多个节点分布式执行,协同配合才能出结果;而数据库集群不一定需要分布式协作就能出结果;
    -分布式数据库中的每一个数据节点,为提升高可用和性能,都可以做成数据库集群。

    我们单机操作不涉及这么复杂的概念,一般一个单机数据库就够了,这里提出来是为了学习clickhouse的时候会遇到相关概念,免得一脸懵逼。

    二、新建数据库

    基本语法:【方括号里的可以省略】

    CREATE DATABASE [IF NOT EXISTS] db_name [ON CLUSTER cluster] [ENGINE = engine(...)]

    举例:

    CREATE DATABASE IF NOT EXISTS mydb;

     使用默认引擎Ordinary,在此数据库下可以使用任意类型的表引擎,在绝大多数情况下都只需使用默认的数据库引擎

    三、创建数据表

    基本语法:

    CREATE TABLE [IF NOT EXISTS][db.]table_name [ON CLUSTER cluster]
    (name1 [type1] [DEFAULT|MATERIALIZED|ALIASexpr1], name2 [type2] [DEFAULT|MATERIALIZED|ALIAS expr2],...) ENGINE = engine

    后面的‘()’括号中的内容为表结构及引擎声明;

    其中:

    DEFAULT – 默认值,如果INSERT中不包含指定的列,那么将通过表达式计算它的默认值并填充它;

    MATERIALIZED – 物化表达式,被该表达式指定的列不能被INSERT,因为它总是被计算出来的,对于INSERT而言,不需要考虑这些列。 另外,在SELECT查询中如果包含星号,此列不会被查询;

    ALIAS – 别名,这样的列不会存储在表中。它的值不能够通过INSERT写入,同时使用SELECT查询星号时,这些列也不会被用来替换星号,但是它们可以显示的用于SELECT中,在这种情况下,在查询分析中别名将被替换

    3.1、直接创建

    create table t1(id UInt8,name String,address String)engine=MergeTree order by id

    3.2、创建一个与其他表结构相同的表

    create table t2 as t1 engine=MergeTree order by id

    可以对其指定不同的表引擎声明。如果没有表引擎声明,则创建的表将与db2.name2使用相同的表引擎。

    3.3、使用指定的引擎创建一个与SELECT子句的结果具有相同结构的表,并使用SELECT子句的结果填充它

    create table t3engine=TinyLog as select * from t1






    长风破浪会有时,直挂云帆济沧海!
    可通过下方链接找到博主
    https://www.cnblogs.com/judes/p/10875138.html
  • 相关阅读:
    python2中的SSL:CERTIFICATE_VERIFY_FAILED错误的解决办法
    head first 设计模式第一章笔记
    pycharm设置python脚本模板
    zip的压缩和解压命令
    js数组和集合互转
    查看Oracle的连接数
    转 小辉_Ray DOM性能小记
    学习总结之javaScript document对象详解
    MySQL 表的一些操作
    MySQL 的一些操作
  • 原文地址:https://www.cnblogs.com/judes/p/15016451.html
Copyright © 2011-2022 走看看