Заметка описывает эксперимент по созданию маленькой копии энтерпрайз-хранилища данных с сильно ограниченными техническими условиями. А именно, на базе одноплатного компьютера Raspberry Pi.
Модель и архитектура будут упрощёнными, но похожими на энтерпрайз-хранилище. Результатом является оценка возможности использования Raspberry Pi в области обработки и анализа данных.
1
Роль опытного и сильного игрока будет выполнять машина Exadata Х5 (один юнит) корпорации Оракл.
Процесс обработки данных включает в себя следующие шаги:
- Чтение из файла 10,3 ГБ 350 миллионов записей за 180 минут.
- Обработка и очистка данных 2 SQL запроса и 130 минут.
- Загрузка измерений 10 минут.
- Загрузка таблиц фактов 20 миллионами новых записей 5 SQL запросов и 35 минут.
Итого, интеграция 350 миллионов записей за 6 часов, что эквивалентно 990 тысячам записей в минуту, или примерно 17 тысячам записей исходных данных в секунду.
2
В роли экспериментального оппонента будет выступать Raspberry Pi 3 Model B+ с 4х-ядерным процессором 1.4 ГГц.
В качестве хранилища используется sqlite3, чтение файлов происходит с помощью PHP.
Модель данных в реляционной базе sqlite3 описана в статье о маленьком хранилище.
Тест первый
Исходный файл access.log 37 МБ с 200 тысячами записей.
- Прочитать лог и записать в базу данных заняло 340 секунд.
- Загрузка измерений с 5 тысячами записей длилась 5 секунд.
- Загрузка таблиц фактов 90 тысячами новых записей 32 секунды.
Итого, интеграция 200 тысяч записей заняла почти 7 минут, что эквивалентно 28 тысячам записей в минуту, или 470 записям исходных данных в секунду. База данных занимает 7,5 МБ; всего 8 SQL запросов для обработки данных.
Тест второй
Файл более активного сайта. Исходный файл access.log 67 МБ с 290 тысячами записей.
- Прочитать лог и записать в базу данных заняло 670 секунд.
- Загрузка измерений с 25 тысячами записей длилась 8 секунд.
- Загрузка таблиц фактов 240 тысячами новых записей 80 секунд.
Итого, интеграция 290 тысяч записей заняла чуть больше 12 минут, что эквивалентно 23 тысячам записей в минуту, или 380 записям исходных данных в секунду. База данных занимает 22,9 МБ
Вывод
Для получения данных в виде модели, которая позволит проводить эффективный анализ, необходимы значительные вычислительные и материальные ресурсы, и время в любом случае.
Например, один юнит Экзадаты обходится более чем в 100К. Один Raspberry Pi стоит 60 единиц.
Линейно их нельзя сравнивать, т.к. с увеличением объёмов данных и требований надёжности возникают сложности.
Однако, если представить себе случай, когда тысяча Raspberry Pi работают параллельно, то, исходя из эксперимента, они обработают около 400 тысяч записей исходных данных в секунду.
И если решение для Экзадаты оптимировать до 40 тысяч записей в секунду, то это ощутимо меньше, чем 400 тысяч. Это подтверждает внутреннее ощущение того, что цены энтерпрайз-решений завышены.
В любом случае, Raspberry Pi отлично справлятся с обработкой данных и реляционными моделями соответствующего масштаба.
Ссылка
Домашний Raspberry Pi был настроен как веб сервер. Эксперимент с его производительностью можно провести самостоятельно по адресу. Модель базы данных (DDL), процедуры загрузки (ETL) и саму базу данных можно там же скачать.