From 8fc98c67c129ce6d79f1fd382d9a5dddbee160ea Mon Sep 17 00:00:00 2001 From: diffitask Date: Mon, 10 Oct 2022 13:52:26 +0200 Subject: [PATCH] add homework 4 --- app/hw-4-ddb-comparison.md | 59 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 app/hw-4-ddb-comparison.md diff --git a/app/hw-4-ddb-comparison.md b/app/hw-4-ddb-comparison.md new file mode 100644 index 0000000..0f85831 --- /dev/null +++ b/app/hw-4-ddb-comparison.md @@ -0,0 +1,59 @@ +## Бизнес-сценарий ## + +YourWorkouts -- веб-приложение, позволяющее подобирать тренировки. На выбор пользователя предоставляются готовые записи тренировок или посещения онлайн-занятий с тренером. + +## Использование базы данных в приложении ## + +В YourWorkouts предполагается иметь большой и легко расширяемый список видеозаписей тренировок. В базе данных будет хранится информация о тренировке -- описание, теги, ключевые слова для поиска. Надо учитывать, что приложение может быть использовано в любой точке мира, в разных странах спрос на определенные типы тренировок может быть разным, поэтому для улучшения подбора фитнес-программы стоит учитывать и геопозицию пользователя. + +Таким образом, распределенная система хранения данных в описываемом приложении поможет в решении вопросов: +* масштабируемости хранилища записей +* снижения нагрузки на сервера +* ускорения поиска подходящих тренировок -- в том числе и за счет гео-распределения +* улучшения стабильности системы -- возможность переключения на соседний сервер в случае отказа одного, что сохранит для пользователя возможность продолжать работать с приложением + +## Сравнение распределенных БД ## + +В качестве DDB приложения были рассмотрены следующие варианты: + +#### ClickHouse #### +Плюсы: +* прекрасная масштабируемость, как горизонтальная, так и вертикальная +* отказоустойчивость +* поддержка большого объема данных +* возможность быстрой обработки запроса + +Минусы: +* невозможность изменения и редактирования данных, что в случае YourWorkout является очень большим минусом, тк описание тренировки должно быть легко редактируемым для улучшения алгоритмов поиска +* невозможность создания кастомных функций + +#### Amazon DynamoDB #### +Плюсы: +* высокая масштабируемость +* мощность и высокопроизводительность сервиса +* доступность и долговечность +* безопасность за счет использования ключей шифрования +* прекрасная совместимость с другими сервисами AWS +* большое число автоматизированных операций (резервное копирование и др) + +Минусы: +* не самое эффективное и при этом дорогостоящее кэширование +* ограничения на размер ячейки (лимит -- 400 Кб) +* достаточно дорогостоящий продукт + +#### Redis #### +Плюсы: +* очень быстрая обработка запроса +* быстрое обнаружение сбоев и высокая доступность данных +* высокая пропускная способность и низкая задержка +* долговечность (в случае Reddis Enterprise) +* хорош в управлении геопространственнымии данными +* аналитика в режиме реального времени +* не слишком большая цена + +Минусы: +* ограниченность объема памяти +* часто небезопасен и подвержен атакам многих вредоносных программ + +### Резюме ### +Итого, наиболее подходящей распределенной базой данных для приложения YourWorkouts будет Redis. Наиболее важный аспект, по которому он лидирует -- быстрота запроса и низкая задержка. Масштабируемая и не слишком дорогая. За счет сэкономленных средств можно улучшить безопасность и сделать защиту от вредоносных программ. \ No newline at end of file