ClickHouse vs. MySQL vs. vertica vs. PostGreSQL

最近腦細胞休假回家過節,實在找不到更快的分析方法了。在一個晴空萬里的午後,心裏卻烏雲密佈,於是上網刷一刷,忽然發現一匹黑馬,大名ClickHouse,頓時烏雲散去,燦爛的陽光又直射到了那顆有趣的靈魂!

由於做了一段時間大數據架構,喜歡工具之間的比較,於是乎誕生此文,文筆拙劣,望君多多包含!

ClickHouse是戰鬥民族家的‘百度’搞出來的面向OLAP的分佈式列式DBMS,跑分是vertica的5倍,100 million數據集上比vertica快5倍,比Hive快279倍,比MySQL快801倍。1 Billion數據集上比vertica快5倍,mysql和hive已經不行了。聞此消息,喜哉!遂瞭解之。

clickhouse性能比較一, 性能比較二。

數據庫 ClickHouse

MySQL

vertica PostGreSQL
描述 列式RDBMS RDBMS RDBMS 列式RDBMS
數據庫模型 關係型 關係型 關係型 關係型
免費開源
操作系統 Ubuntu FreeBSD
Linux
OS X
Solaris
Windows
linux FreeBSD
HP-UX
Linux
NetBSD
OpenBSD
OS X
Solaris
Unix
Windows
API

CLI

HTTP

JDBC

Native Interface (TCP)

Proprietary native API
ADO.NET
JDBC
ODBC
Kafka
Proprietary protocol
RESTful HTTP API
ADO.NET
JDBC
ODBC
native C library
streaming API for large objects
ADO.NET
JDBC
ODBC
支持語言

PYHTON 

PHP

Go

NodesJs

Perl

Ruby

R

Scala

.Net

C++

Java

ELixlr

Nim

Ada
C
C#
C++
D
Delphi
Eiffel
Erlang
Haskell
Java
JavaScript (Node.js)
Objective-C
OCaml
Perl
PHP
Python
Ruby
Scheme
Tcl
C++
Java
Perl
Python
R
.Net
C
C++
Delphi
Java info
Perl
PHP
Python
Tcl
支持服務器端腳本 user defined functions 
分區方式 分片 水平分區,sharding with MySQL Cluster or MySQL Fabric 分片 聲明式分區
副本方式

multi-master;

Replication is only supported for tables in the MergeTree family

 

主-主

主-從

主-主 主-從
mapreduce 爲什麼還要用mapreduce!
一致性 弱一致 強一致 強一致 強一致
外鍵 yes yes yes yes
事務性 不支持事務 ACID ACID ACID
約束 yes yes yes

yes

持久 yes yes、 yes yes

應用場景:

1.絕大多數請求都是用於讀訪問的
2.數據需要以大批次(大於1000行)進行更新,而不是單行更新;或者根本沒有更新操作
3.數據只是添加到數據庫,沒有必要修改
4.讀取數據時,會從數據庫中提取出大量的行,但只用到一小部分列
5.表很“寬”,即表中包含大量的列
6.查詢頻率相對較低(通常每臺服務器每秒查詢數百次或更少)
7.對於簡單查詢,允許大約50毫秒的延遲
8.列的值是比較小的數值和短字符串(例如,每個URL只有60個字節)
9.在處理單個查詢時需要高吞吐量(每臺服務器每秒高達數十億行)
10.不需要事務
11.數據一致性要求較低
12.每次查詢中只會查詢一個大表。除了一個大表,其餘都是小表
13.查詢結果顯著小於數據源。即數據有過濾或聚合。返回結果不超過單個服務器內存大小

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章