Skip to content

Instantly share code, notes, and snippets.

@kis
Last active December 28, 2017 10:57
Show Gist options
  • Save kis/07bf5eca158fe916e7250fafe6b9cdeb to your computer and use it in GitHub Desktop.
Save kis/07bf5eca158fe916e7250fafe6b9cdeb to your computer and use it in GitHub Desktop.
По поводу практического задания по Базам Данных(Posgtres), как я уже говорил ранее, я планировал дать вам спеку какого-нибудь реального проекта и предложить построить архитектуру базы данных для этого проекта, но мои ожидания разбились об жестокую реальность: у нас нет ни одного проекта с нормальной спекой, по которой можно было раз и построить архитектуру :)
В связи с этим я написал вам описание ваше будущей базы данных сам, поэтому предлагаю ознакомиться и если есть какие-то вопросы, то смело их задавать, потому что я мог что-то забыть или написать лишнего, или недостаточно ясно выразить свою мысль,
Футбольный менеджер
Основной элемент - это футболист, у футболиста есть имя, фамилия, гражданство, позиция на которой он играет и некоторые дополнительные ТТХ, которые значения не имеют. Также футболист хранит историю своих трансферных переходов. И статистику забитых мячей, передач и тому подобное для каждой команды, за которую он играл.
Есть футбольные клубы, каждый клуб принимает участие в турнирах (чемпионатах), в клубе есть футболисты, каждый футболист в клубе имеет номер (двух футболистов с одним номером быть не может), каждый футболист может принадлежать не более, чем к одному клубу. У каждого чемпионата есть турнирная таблица, двух одинаковых игр в одном чемпионате одного года быть не может. Клуб обладает неким набором дополнительных метаданных, наборы могут быть абсолютно разными для разных клубов, например, один клуб раньше менял название и есть его старое название, плюс какие интересные факты из его истории, у другого клуба может быть совершенно другой набор метаданных.
Также каждый клуб имеет стадион, находящийся в определенном городе и тоже обладающий список своих собственных ТТХ, которые тоже большого значения не имеют.
Есть сборные, каждая сборная принадлежит к стране, в каждой сборной есть футболисты только с гражданством этой страны, у сборных есть турниры (чемпионаты), в которых она принимает участие.
Еще есть тренер, который тоже имеет имя, фамилию, команду, которую тренирует (один тренер тренирует одну команду), историю переходов и статистику побед в турнирах.
UPD. Забыл добавить по поводу формы в которой это должно быть выполнено - это должно быть описание таблиц, связей между таблицами, а также индексов, если они необходимы. Все это может быть представлено в любом понятном (кому либо кроме вас) виде: UML диаграмма, просто схема таблиц со связями, сочинение в свободном стиле о том, как эти таблицы связаны между собой или еще как-нибудь.
Всем привет. Тут возникли некоторые технические проблемы с поиском переходника USB-C - HDMI, так что вот вам, на всякий случай, ссылка на презентацию, если эти проблемы решить не удастся.
https://www.icloud.com/keynote/0ZTOZv0WBKnIoIPPvWCh-_e-w#Poatges_II
Презентация никакой особенной информации не содержит, но, на всякий случай, пусть будет тут :)
https://www.icloud.com/keynote/0EsoSPnVriJvZjl-54GSPf0iQ#AWS_I
Совсем забыл линк на последнюю презентацию если вдруг у вас возникнет желание ее пересмотреть еще раз :)
https://www.icloud.com/keynote/0bOwmGzrmepWhgQ9YoKp-T-kQ#AWS_II
Ссылки на презентации
https://www.icloud.com/keynote/0lI2kBRgLfBFDVn_47KEI8vYw#AWS_storage_services
https://www.icloud.com/keynote/0BcVipsYtH04oIGefArrSOKvg#AWS_security
Задание по AWS.
Сделать backend для Telegram бота. Минимальный функционал: умеет брать картинки из S3 и отправлять их пользователю, умеет хранить информацию про пользователей в базе данных. Желательно, чтобы он умел еще что-то кроме этого, но тут уже вам придется включить фантазию. Минимальную архитектуру (те сервисы, который обязательно надо задействовать) см. на рисунке ниже, все, что сверх этого на ваше усмотрение.
И ссылка на презентацию https://www.icloud.com/keynote/0cDJq41HFZxHZaFggjcwJJZsA#AWS_databases
https://www.youtube.com/playlist?list=PLHk3oi9lZTfNDK5qVRODTN1sMtel2rYPE
Ссылка на презентацию https://www.icloud.com/keynote/0ktiOj54XjWGQ-YuHFGnEiJHQ#AWS_Application_Integration_services
Вот штука для локального разворачивания лямбд (с названием я малость промазал, она SAM называется :)
) https://github.com/awslabs/serverless-application-model
В преддверии получения вами ключей от корпоративного AWS хочется предостеречь от возможных опасностей, которые ждут вас в этом новом и сложном мире владельцев AWS secret keys. В общем, правила достаточно просты - secret Key он на то и secret, что его нельзя показывать никому:
- нельзя отправлять друзьям
- нельзя хранить в местах, куда есть доступ у других существ с IQ > 75
- ни в коем случае нельзя пушить ключи в какие-бы то ни было публичные репозитории
- в приватные тоже пушить не желательно
- вообще лучше из рук их не выпускать
Вот одна из многих “success stories” тех, кто не следовал этим простым правилам https://alexanderpaterson.com/posts/this-is-what-happened-when-i-leaked-my-aws-secret-key
Что касается сервисов, которые запускаете лично вы, вряд ли вы сможете случайно запустить что-то очень дорогостоящее, но все же, лучше сначала смотрите в раздел Pricing того сервиса, который собираетесь использовать.
по поводу репозиториев...
для сторонников позиции "да кому я нужен" - есть много ботов, которые сканируют репозитории на гитхабе и охотятся в том числе и за ключами-паролями
так что не заливаем ключи никуда, от слова "совсем"
даже в наш корпоративный гитлаб, на котором собственно и должны находиться ваши личные проекты для обучения
для незнающих или забывчивых напомню: ключи/пароли и другая конфиденциальная информация должна передаваться в ваше приложение посредством переменных окружения
в ноде это process.env.MY_VAR
в двух словах - существуют специальные краулеры для сканирования публичных репозиториев на предмет секретных ключей от аккаунтов AWS, Google Cloud, Azure etc.
У нас была интернатура с заданиями по автоматическому разворачиванию енвайронмента на AWS.
Это был просто большой скрипт, в коротом в тексте (даже не отдельным файлом, а в самом скрипте), лежал ключ доступа к созданию инстансов.
За 2 дня компании был выставлен счет на 4500 долларов.
По логам было понятно, что инстансы были подняты примерно на 2 часа, самые жирные какие можно были доступны. ЗАтем терминейчены.
Не спрашивайте, чем закончилась история, лучше дважды перепроверяйте, куда и что вы пушите ))
Корпоративный гитлаб для ваших проектов
https://gitlab.chisw.us/users/sign_in
Создаете под свои задания приватные репозитории и даете доступ нужным людям в случае такой необходимости
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment