SlideShare une entreprise Scribd logo
1  sur  23
ClickHouse + PHP + Doctrine2
НИИ Информика
Мочалыгин Александр Геннадьевич
ClickHouse + PHP + Doctrine2
Сколько в школах учится мальчиков?
ClickHouse + PHP + Doctrine2
80+ субъектов РФ:
…
35 Вологодская область
...
ClickHouse + PHP + Doctrine2
В Вологодской области:
…
Вологда
…
Грязовец
...
Череповец
...
ClickHouse + PHP + Doctrine2
В Вологде школы:
Школа 1
Школа 2
…
Школа 32
...
ClickHouse + PHP + Doctrine2
Школа 32:
500 мальчиков
ClickHouse + PHP + Doctrine2
Школа 1: 450
Школа 2: 300
…
Школа 32: 500
…
Вологда: 15 000
ClickHouse + PHP + Doctrine2
…
35 Вологодская область: 15 000
…
Всего РФ: 15 000 000
ClickHouse + PHP + Doctrine2
Сколько в школах учится мальчиков 6 лет?
ClickHouse + PHP + Doctrine2
80+ субъектов РФ:
…
35 Вологодская область
...
ClickHouse + PHP + Doctrine2
ClickHouse -- столбцовая СУБД для OLAP
(Columnar DBMS)
От Яндекса
Бесплатная
SQL
ClickHouse + PHP + Doctrine2
ClickHouse -- столбцовая СУБД для OLAP
(Columnar DBMS)
От Яндекса
Бесплатная
SQL!!!
ClickHouse + PHP + Doctrine2
- Большинство запросов -- на чтение
- Данные обновляются большими пачками (> 1000 строк)
- При чтении вынимается большое количество строк из
БД, но только небольшое подмножество столбцов
- Таблицы являются "широкими"
- Запросы идут сравнительно редко
- Высокая пропускная способность при обработке одного
запроса (до миллиардов строк в секунду на один сервер)
- Результат выполнения запроса существенно меньше
исходных данных - данные фильтруются/агрегируются
ClickHouse + PHP + Doctrine2
- Нет транзакций
- Нет полноценных join’ов (1 большая таблица)
- Нет индексов
- Нет FK
- Возможно временное дублирование
- Нет DELETE
- Нет UPDATE*
- Лучше работает с числами и небольшими строками
(пример - 60 байт на URL)
- При выполнении простых запросов возможны задержки
в районе 50 мс
ClickHouse + PHP + Doctrine2
Строковая СУБД:
1,Иванов,Иван,м;2,Петров,Петр,м;3,Мариева,Мария,ж;
Столбцовая СУБД:
1,2,3;Иванов,Петров,Мариева;Иван,Петр,Мария;м,м,ж;
Задача:
Количество учеников мужского пола?
ClickHouse + PHP + Doctrine2
- MergeTree
- CollapsingMergeTree
- SummingMergeTree
- AggregatingMergeTree
- ReplacingMergeTree
ClickHouse + PHP + Doctrine2
ClickHouse + PHP + Doctrine2
ClickHouse + PHP + Doctrine2
(1, ‘2017-09-01 10:00:00’, ‘2017-10-01 10:00:00’, 100500)
(1, ‘2017-10-01 10:00:01’, ‘2030-01-01 00:00:00’, 100600)
… AND $date BETWEEN start_date AND end_date;
ClickHouse + PHP + Doctrine2
composer install mochalygin/doctrine-dbal-clickhouse
#config.yml
doctrine:
dbal:
connections:
clickhouse:
host: localhost
port: 8123
dbname: default
user: default
password: 1234
driver_class: MochalyginDoctrineDBALClickHouseDriver
wrapper_class: MochalyginDoctrineDBALClickHouseConnection
ClickHouse + PHP + Doctrine2
$conn = $this->getContainer()->get('doctrine.dbal.clickhouse_connection');
$qb = $conn->createQueryBuilder();
$qb
→select('school_id, count(*)')
→from('pupil')
→where($qb→expr()→eq(‘region_id’, ‘:regionId’))
→groupBy(‘school_id’)
→setParameter('regionId', 35, PDO::PARAM_INT);
var_dump($qb->execute()->fetchAll());
ClickHouse + PHP + Doctrine2
/**
* @CHId
* @CHColumn(name="id", type="UInt32")
*
* @ORMId()
* @ORMColumn(type="integer")
* @ORMGeneratedValue(strategy="IDENTITY")
*/
protected $id;
/**
* @CHColumn(name="status", type="UInt8")
*
* @ORMColumn(type="smallint")
*/
protected $status;
ClickHouse + PHP + Doctrine2
Вопросы?
https://github.com/mochalygin/

Contenu connexe

En vedette

Александр Сербул, 1С-Битрикс — Облачный сервис персональных рекомендаций для ...
Александр Сербул, 1С-Битрикс — Облачный сервис персональных рекомендаций для ...Александр Сербул, 1С-Битрикс — Облачный сервис персональных рекомендаций для ...
Александр Сербул, 1С-Битрикс — Облачный сервис персональных рекомендаций для ...Dev_Party
 
Александр Чистяков, Git in Sky — Современные тенденции в разработке программн...
Александр Чистяков, Git in Sky — Современные тенденции в разработке программн...Александр Чистяков, Git in Sky — Современные тенденции в разработке программн...
Александр Чистяков, Git in Sky — Современные тенденции в разработке программн...Dev_Party
 
Владимир Варнавский, интернет-студия «33 Кита» — Идеальный программист
Владимир Варнавский, интернет-студия «33 Кита» — Идеальный программистВладимир Варнавский, интернет-студия «33 Кита» — Идеальный программист
Владимир Варнавский, интернет-студия «33 Кита» — Идеальный программистDev_Party
 
Анастасия Распопина, Percona — Feel at Home в на 90% распределённой компании:...
Анастасия Распопина, Percona — Feel at Home в на 90% распределённой компании:...Анастасия Распопина, Percona — Feel at Home в на 90% распределённой компании:...
Анастасия Распопина, Percona — Feel at Home в на 90% распределённой компании:...Dev_Party
 
Дмитрий Ивакин, ООО «Пайлабс» — Node.js: realtime приложение на примере систе...
Дмитрий Ивакин, ООО «Пайлабс» — Node.js: realtime приложение на примере систе...Дмитрий Ивакин, ООО «Пайлабс» — Node.js: realtime приложение на примере систе...
Дмитрий Ивакин, ООО «Пайлабс» — Node.js: realtime приложение на примере систе...Dev_Party
 
Сергей Яркин, Тензор — RabbitMQ. Насколько ценен мех и вкусно мясо?
Сергей Яркин, Тензор — RabbitMQ. Насколько ценен мех и вкусно мясо?Сергей Яркин, Тензор — RabbitMQ. Насколько ценен мех и вкусно мясо?
Сергей Яркин, Тензор — RabbitMQ. Насколько ценен мех и вкусно мясо?Dev_Party
 
Роман Приходько, Владимир Беспрозванных, «Сбербанк-Технологии» — Платформа ЕФС
Роман Приходько, Владимир Беспрозванных, «Сбербанк-Технологии» — Платформа ЕФСРоман Приходько, Владимир Беспрозванных, «Сбербанк-Технологии» — Платформа ЕФС
Роман Приходько, Владимир Беспрозванных, «Сбербанк-Технологии» — Платформа ЕФСDev_Party
 

En vedette (7)

Александр Сербул, 1С-Битрикс — Облачный сервис персональных рекомендаций для ...
Александр Сербул, 1С-Битрикс — Облачный сервис персональных рекомендаций для ...Александр Сербул, 1С-Битрикс — Облачный сервис персональных рекомендаций для ...
Александр Сербул, 1С-Битрикс — Облачный сервис персональных рекомендаций для ...
 
Александр Чистяков, Git in Sky — Современные тенденции в разработке программн...
Александр Чистяков, Git in Sky — Современные тенденции в разработке программн...Александр Чистяков, Git in Sky — Современные тенденции в разработке программн...
Александр Чистяков, Git in Sky — Современные тенденции в разработке программн...
 
Владимир Варнавский, интернет-студия «33 Кита» — Идеальный программист
Владимир Варнавский, интернет-студия «33 Кита» — Идеальный программистВладимир Варнавский, интернет-студия «33 Кита» — Идеальный программист
Владимир Варнавский, интернет-студия «33 Кита» — Идеальный программист
 
Анастасия Распопина, Percona — Feel at Home в на 90% распределённой компании:...
Анастасия Распопина, Percona — Feel at Home в на 90% распределённой компании:...Анастасия Распопина, Percona — Feel at Home в на 90% распределённой компании:...
Анастасия Распопина, Percona — Feel at Home в на 90% распределённой компании:...
 
Дмитрий Ивакин, ООО «Пайлабс» — Node.js: realtime приложение на примере систе...
Дмитрий Ивакин, ООО «Пайлабс» — Node.js: realtime приложение на примере систе...Дмитрий Ивакин, ООО «Пайлабс» — Node.js: realtime приложение на примере систе...
Дмитрий Ивакин, ООО «Пайлабс» — Node.js: realtime приложение на примере систе...
 
Сергей Яркин, Тензор — RabbitMQ. Насколько ценен мех и вкусно мясо?
Сергей Яркин, Тензор — RabbitMQ. Насколько ценен мех и вкусно мясо?Сергей Яркин, Тензор — RabbitMQ. Насколько ценен мех и вкусно мясо?
Сергей Яркин, Тензор — RabbitMQ. Насколько ценен мех и вкусно мясо?
 
Роман Приходько, Владимир Беспрозванных, «Сбербанк-Технологии» — Платформа ЕФС
Роман Приходько, Владимир Беспрозванных, «Сбербанк-Технологии» — Платформа ЕФСРоман Приходько, Владимир Беспрозванных, «Сбербанк-Технологии» — Платформа ЕФС
Роман Приходько, Владимир Беспрозванных, «Сбербанк-Технологии» — Платформа ЕФС
 

Александр Мочалыгин, Informika — ClickHouse — ускоряем аналитические SQL-запросы при помощи новой колоночной СУБД от Яндекса

  • 1. ClickHouse + PHP + Doctrine2 НИИ Информика Мочалыгин Александр Геннадьевич
  • 2. ClickHouse + PHP + Doctrine2 Сколько в школах учится мальчиков?
  • 3. ClickHouse + PHP + Doctrine2 80+ субъектов РФ: … 35 Вологодская область ...
  • 4. ClickHouse + PHP + Doctrine2 В Вологодской области: … Вологда … Грязовец ... Череповец ...
  • 5. ClickHouse + PHP + Doctrine2 В Вологде школы: Школа 1 Школа 2 … Школа 32 ...
  • 6. ClickHouse + PHP + Doctrine2 Школа 32: 500 мальчиков
  • 7. ClickHouse + PHP + Doctrine2 Школа 1: 450 Школа 2: 300 … Школа 32: 500 … Вологда: 15 000
  • 8. ClickHouse + PHP + Doctrine2 … 35 Вологодская область: 15 000 … Всего РФ: 15 000 000
  • 9. ClickHouse + PHP + Doctrine2 Сколько в школах учится мальчиков 6 лет?
  • 10. ClickHouse + PHP + Doctrine2 80+ субъектов РФ: … 35 Вологодская область ...
  • 11. ClickHouse + PHP + Doctrine2 ClickHouse -- столбцовая СУБД для OLAP (Columnar DBMS) От Яндекса Бесплатная SQL
  • 12. ClickHouse + PHP + Doctrine2 ClickHouse -- столбцовая СУБД для OLAP (Columnar DBMS) От Яндекса Бесплатная SQL!!!
  • 13. ClickHouse + PHP + Doctrine2 - Большинство запросов -- на чтение - Данные обновляются большими пачками (> 1000 строк) - При чтении вынимается большое количество строк из БД, но только небольшое подмножество столбцов - Таблицы являются "широкими" - Запросы идут сравнительно редко - Высокая пропускная способность при обработке одного запроса (до миллиардов строк в секунду на один сервер) - Результат выполнения запроса существенно меньше исходных данных - данные фильтруются/агрегируются
  • 14. ClickHouse + PHP + Doctrine2 - Нет транзакций - Нет полноценных join’ов (1 большая таблица) - Нет индексов - Нет FK - Возможно временное дублирование - Нет DELETE - Нет UPDATE* - Лучше работает с числами и небольшими строками (пример - 60 байт на URL) - При выполнении простых запросов возможны задержки в районе 50 мс
  • 15. ClickHouse + PHP + Doctrine2 Строковая СУБД: 1,Иванов,Иван,м;2,Петров,Петр,м;3,Мариева,Мария,ж; Столбцовая СУБД: 1,2,3;Иванов,Петров,Мариева;Иван,Петр,Мария;м,м,ж; Задача: Количество учеников мужского пола?
  • 16. ClickHouse + PHP + Doctrine2 - MergeTree - CollapsingMergeTree - SummingMergeTree - AggregatingMergeTree - ReplacingMergeTree
  • 17. ClickHouse + PHP + Doctrine2
  • 18. ClickHouse + PHP + Doctrine2
  • 19. ClickHouse + PHP + Doctrine2 (1, ‘2017-09-01 10:00:00’, ‘2017-10-01 10:00:00’, 100500) (1, ‘2017-10-01 10:00:01’, ‘2030-01-01 00:00:00’, 100600) … AND $date BETWEEN start_date AND end_date;
  • 20. ClickHouse + PHP + Doctrine2 composer install mochalygin/doctrine-dbal-clickhouse #config.yml doctrine: dbal: connections: clickhouse: host: localhost port: 8123 dbname: default user: default password: 1234 driver_class: MochalyginDoctrineDBALClickHouseDriver wrapper_class: MochalyginDoctrineDBALClickHouseConnection
  • 21. ClickHouse + PHP + Doctrine2 $conn = $this->getContainer()->get('doctrine.dbal.clickhouse_connection'); $qb = $conn->createQueryBuilder(); $qb →select('school_id, count(*)') →from('pupil') →where($qb→expr()→eq(‘region_id’, ‘:regionId’)) →groupBy(‘school_id’) →setParameter('regionId', 35, PDO::PARAM_INT); var_dump($qb->execute()->fetchAll());
  • 22. ClickHouse + PHP + Doctrine2 /** * @CHId * @CHColumn(name="id", type="UInt32") * * @ORMId() * @ORMColumn(type="integer") * @ORMGeneratedValue(strategy="IDENTITY") */ protected $id; /** * @CHColumn(name="status", type="UInt8") * * @ORMColumn(type="smallint") */ protected $status;
  • 23. ClickHouse + PHP + Doctrine2 Вопросы? https://github.com/mochalygin/