PHP Client для ClickHouse от СМИ2

607 views
Skip to first unread message

Игорь Str

unread,
Jul 27, 2016, 5:32:17 AM7/27/16
to ClickHouse
Features

  • No dependency, only curl
  • Select asynchronous queries (parallel)
  • Asynchronous (parallelizing) bulk inserts from CSV file
  • Find active host and check cluster
  • Select WHERE IN ( local csv file )
  • SQL conditions & template





Мы, в нашей компании начали внедрять ClickHouse и реализовали php клиента. 
Опубликовали в open-source + MIT лицензия.
Клиент в стадии активной разработки, явных ошибок/багов уже нет и используется в production. 

Основные фичи:
- Асинхронные запросы select , реализовано через curl_multi - т/е возможность выполнения нескольких запросов одновременно. 
- Асинхронные вставка данных из локальных файлов 
- Выполнение SELECT WHERE IN используя внешние данные для обработки запроса. 
- Шаблонизатор для запросов 



P.S.: Спасибо Yandex за ClickHouse ) 

man...@gmail.com

unread,
Jul 27, 2016, 7:51:53 PM7/27/16
to ClickHouse
Спасибо!
Добавил в документацию.
Теперь разработчики смогут выбрать наиболее качественную библиотеку.


среда, 27 июля 2016 г., 12:32:17 UTC+3 пользователь Игорь Str написал:

Игорь Str

unread,
Aug 2, 2016, 4:28:05 PM8/2/16
to ClickHouse
Новые "фичи" в клиенте : 

  • enable_http_compression=1 для вставки файлов
  • tablesSize & databaseSize
  • listPartitions
  • dropPartition & dropOldPartitions

Использует enable_http_compression для отправки CSV файл в виде GZIP в bulk Insert, т/е налету сжимать исходный файл используя gzip 
Аналог : 
cat /tmp/data.csv | gzip -c | curl -sS --data-binary @- -H 'Content-Encoding: gzip' 'http://localhost:8123/?query=INSERT .......';

Перфоманс из php (+ асинхронность ) на синтетических теста  ± в 2,5 раза : https://github.com/smi2/phpClickHouse/blob/master/example/exam8_http_gzip_batch_insert.php#L91


  • tablesSize + databaseSize
Размер таблиц/базы в удобном виде 

Аналог: 
SELECT table,
formatReadableSize(sum(bytes)) as size,
min(min_date) as min_date,
max(max_date) as max_date
FROM system.parts
WHERE active
GROUP BY table



  • listPartitions
Аналог: 
 SELECT * FROM system.parts   WHERE like(table,'%table%')    ORDER BY max_date 


  • dropOldPartitions
Выполнить над всеми подходящими партициями   
ALTER TABLE {tableName} DROP PARTITION {partion_id}


Примеры : 
Reply all
Reply to author
Forward
0 new messages