Przeglądaj źródła

Добавлен файл "ПрочитайМеня"

Vladimir Tkachev 8 lat temu
rodzic
commit
7ec9b9fc2e
2 zmienionych plików z 58 dodań i 0 usunięć
  1. 58 0
      README.md
  2. BIN
      events-kitchen.png

+ 58 - 0
README.md

@@ -0,0 +1,58 @@
+### Описание
+
+Игрушечная реализация функционала для работы с БД [ClickHouse](https://github.com/yandex/ClickHouse)
+для хранения событий, привязанных к компании.
+
+### Зависимости
+ - \>PHP 7.1
+ - MongoDB расширение из PECL
+ - Composer
+ - MongoDB
+ - ClickHouse
+
+> В своей конфигурации я использую MongoDB 3.6.2,
+> MongoDB extension 1.3.4
+> и ClickHouse 1.1.54337
+
+### Сценарий работы
+
+1. Обновление зависимостей
+
+   **`composer up`**
+
+2. Первым шагом необходимо сгенерировать в MongoDB 1,5 миллиона компаний
+   со случайными именами:
+
+   **`bin/kitchen.php fill-companies --verbose`**
+   
+   > Другое количество можно указать при помощи опции --count=[COUNT]
+   
+3. Далее для этих компаний необходимо создать набор случайных
+   событий за текущий месяц:
+
+   **`bin/kitchen.php generate-random-events --verbose`**
+   
+   > На моём настольном компьютере (i5-6400@2.7GHz/HDD 7200RPM)
+   > вставка осуществляется со скоростью ~35 тысяч событий в секунду.
+   
+   > При помощи опции --count также можно указать количество событий,
+   > генерируемых для каждой компании. По-умолчанию это 256
+   
+4. И наконец получить сводку о количествах событий за текущий месяц
+   для конкретной компании:
+   
+   **`bin/kitchen.php generate-random-events --verbose`**
+   
+   ![Result](https://raw.githubusercontent.com/avolver/company-events-kitchen/master/events-kitchen.png)
+   
+   > Месяц и год можно изменить опциями --month и --year соответственно
+   
+### Пояснения
+
+ - Доступные типы событий хранятся в перечислении `CompanyEvent`
+ - Метод для постановки события в очередь `EventsRepository::addEventToQueue(...)`
+ - Метод для вставки очереди `EventsRepository::insertEventsFromQueue()`
+ - В текущей реализации вставка событий происходит пакетно, по 10 тысяч штук в очереди;
+ - Перед вставкой события сортируются по дате,
+   так как в этом случае ClickHouse проще их вставить;
+ - Рекомендуется (в документации CH) также упаковывать в одну очередь только события из одного месяца;

BIN
events-kitchen.png