ClickHouse
ClickHouse是一个用于联机分析(OLAP)的列式数据库管理系统(DBMS)。
OLAP场景的关键特征
绝大多数是读请求
数据以相当大的批次(> 1000行)更新,而不是单行更新;或者根本没有更新。
已添加到数据库的数据不能修改。
对于读取,从数据库中提取相当多的行,但只提取列的一小部分。
宽表,即每个表包含着大量的列
查询相对较少(通常每台服务器每秒查询数百次或更少)
对于简单查询,允许延迟大约50毫秒
列中的数据相对较小:数字和短字符串(例如,每个URL 60个字节)
处理单个查询时需要高吞吐量(每台服务器每秒可达数十亿行)
事务不是必须的
对数据一致性要求低
每个查询有一个大表。除了他意以外,其他的都很小。
查询结果明显小于源数据。换句话说,数据经过过滤或聚合,因此结果适合于单个服务器的RAM中
很容易可以看出,OLAP场景与其他通常业务场景(例如,OLTP或K/V)有很大的不同, 因此想要使用OLTP或Key-Value数据库去高效的处理分析查询场景,并不是非常完美的适用方案。例如,使用OLAP数据库去处理分析请求通常要优于使用MongoDB或Redis去处理分析请求。
ClickHouse安装和启动
sudo apt-get install apt-transport-https ca-certificates dirmngrsudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv E0C56BD4echo "deb https://repo.clickhouse.tech/deb/stable/ main/" | sudo tee /etc/apt/sources.list.d/clickhouse.listsudo apt-get updatesudo apt-get install -y clickhouse-server clickhouse-clientsudo service clickhouse-server startclickhouse-client
sudo apt-get update如果更新不了可以修改下源,然后修改source.list,clickhouse.list
新建表导入所需要的数据(120038310条经纬度)
create table pnts (Lon Float64, Lat Float64) engine = MergeTree() order by (Lon, Lat);time clickhouse-client --query="INSERT INTO pnts FORMAT CSVWithNames" < test_data.csv
ClickHouse空间分析运用
计算最大小经纬度
select min(Lon), max(Lon),min(Lat), max(Lat)FROM pnts
select geohashesInBox(-150.0565255, 24.5449115001 , -66.950609997, 65.1341342731, 4)
面筛选
SELECT geohashEncode(Lon, Lat, 5),count(1) FROM pnts group by geohashEncode(Lon, Lat, 5)
缓冲区计算
select geoToH3(Lon, Lat, 3),count(1) FROM pnts group by geoToH3(Lon, Lat, 3)
select geoToH3(Lon, Lat, 3),count(1) FROM pnts group by geoToH3(Lon, Lat, 3)
geohash聚合
SELECT geohashEncode(Lon, Lat, 5),count(1) FROM pnts group by geohashEncode(Lon, Lat, 5)
参考资料:https://clickhouse.tech/docs/zh/https://www.osgeo.cn/qgis-tutorial/docs/3/importing_spreadsheets_csv.htmlhttps://mirror.tuna.tsinghua.edu.cn/help/clickhouse/https://blog.csdn.net/BigData_Mining/article/details/87867979http://cncc.bingj.com/cache.aspx?q=clickhouse+anzhuang&d=4519770289931770&mkt=zh-CN&setlang=zh-CN&w=J6QG46UMC2AHWpTGJHFimsC7lpDNMJO-https://github.com/ClickHouse/ClickHouse/issues/9002https://www.bookstack.cn/read/clickhouse-20.10-en/bccae583b76cdb17.mdhttps://blog.csdn.net/jimo_lonely/article/details/107498806https://github.com/ClickHouse/ClickHouse/issues/17081