简介
ClickHouse是一个用于联机分析(OLAP)的列式数据库管理系统(DBMS)
官网(https://clickhouse.com/docs/zh)给出的定义,其实没看懂
特性
- ClickHouse支持一种基于SQL的声明式查询语言,它在许多情况下与ANSI SQL标准相同。使用时和MySQL有点相似,还是比较友好的。
- 真正的列式数据库管理系统
- 数据压缩
- 多服务器分布式处理
- 数据的磁盘存储
- 多核心并行处理
- 多服务器分布式处理
使用
这里通过Linux系统说明
1. 客户端命令
ClickHouse安装完成后,直接输入这个命令登录进入客户端
clickhouse-client
2.查看有哪些的数据库
SHOW DATABASES;
3.创建数据库
CREATE DATABASE my_test;
4.切换数据库
USE my_test;
5.创建表
CREATE TABLE gps_data_store
(
lic_num String,
sim_no String,
send_time DateTime64(3, 'Asia/Shanghai'),
trace_type Int8,
altitude Float64,
longitude Float64,
latitude Float64,
alarm_status String,
int_alarm_status Int32,
speed Float64,
direction Int16,
dept_id Int32,
dept_name String,
vehicle_id Int32,
driver_name String,
status String,
mileage Float64,
is_drift Bool,
valid Bool,
vehicle_color Int8,
vehicle_type String,
vt_code String,
video_alarm0x14 String,
video_alarm0x15 String,
video_alarm0x16 String,
video_alarm0x17 String,
month_mileage Float64,
day_mileage Float64,
create_time DateTime64(3, 'Asia/Shanghai'),
is_alarm Bool,
location Point
) ENGINE = MergeTree()
order by (lic_num,send_time);
6.添加字段
ALTER TABLE gps_data_store ADD COLUMN is_alarm Bool;
7.圆形区域查询
SELECT lic_num,sim_no,send_time,altitude,longitude,latitude,speed FROM gps_data_store WHERE greatCircleDistance(longitude, latitude,108.87316,34.1)<=60;
8.多边形区域查询
-- 4个顶点顺时针
SELECT lic_num,sim_no,send_time,altitude,longitude,latitude,speed FROM gps_data_store WHERE pointInPolygon((longitude, latitude), [(108.949000, 34.344761), (108.937863, 34.344761), (108.937863, 34.340604), (108.949000, 34.340604)]);