Содержание
- 2. Правильно называть – СУБД В разговорной речи часто СУБД = БД (DB) БД — хранит данные,
- 3. Солянка алгоритмов и структур данных Hash-таблицы Деревья поиска Бинарный поиск Чтение из файла по offset и
- 4. Администрирование БД != Использование БД ИСПОЛЬЗОВАТЬ ПРОСТО, НО ЕСТЬ НЮАНСЫ
- 5. КЛАССИФИКАЦИЯ БД
- 6. МНОГО РАЗНЫХ ЦЕЛЕЙ — МНОГО РАЗЛИЧНЫХ БАЗ ДАННЫХ
- 7. Распределенные Централизованные ПО МАСШТАБАМ
- 8. В оперативной памяти На жестких дисках ПО СРЕДЕ ХРАНЕНИЯ
- 9. Распределенный кеш (данные могут потеряться) Полнотекстовый поиск Хранилища под метрики (специальная математика) Хранилища под географию (геометрия)
- 10. Реляционные NoSQL: Документные: MongoDB) Колоночные: HBase, Cassandra Ключ-значение: Amazon DynamoDB) SQL VS NOSQL
- 11. ТРЕБОВАНИЯ К БД
- 12. Нельзя прочитать/записать половину записи («мама мыла ра») ATOMICITY
- 13. Данные не должны теряться после успешного сохранения Как? Репликация, рейд дисков, operation log, … DURABILITY
- 14. После успешного или неуспешного выполнения запроса данные должны быть согласованы Если Фред переводит Барни 100$, то
- 15. Параллельно выполняемые запросы не должны оказывать влияние на результат Один запрос распределяет материальную помощь в размере
- 16. Запрос 1: Распределение матпомощи X для группе A var count = students.Count(s => s.Group == "A");
- 17. Параллельно выполняемые запросы не должны оказывать влияние на результат Один запрос распределяет материальную помощь в размере
- 18. Atomicity Consistency Isolation Durability Желаемый набор требований Сложно обеспечить, особенно в распределенных БД ACID
- 19. БД должна быть доступна 99.(9)% времени AVAILABILITY
- 20. Распределенная БД должна быть устойчива к brain-split PARTITION TOLERANCE
- 21. Распределенная БД должна быть устойчива к brain-split PARTITION TOLERANCE
- 22. Распределенная БД должна быть устойчива к brain-split PARTITION TOLERANCE
- 23. В распределенной системе невозможно обеспечить одновременное выполнение: Consistency (Целостности) Availability (Доступности) Partition Tolerance (Устойчивости к сбоям
- 24. Система рассчитывает, что сеть надежна, либо не распределенная ПРИМЕР C+A
- 25. Система с несколькими мастер-базами, которые обновляются синхронно Всегда доступна на чтение, но запрещает запись при разрывах
- 26. Система с несколькими серверами, каждый из которых может принимать данные, но не обязуется в тот же
- 27. Теорема доказана с конкретными формулировками понятий C, A и PT Можно попытаться ослабить формулировки, получив что-то
- 28. Брюер предложил оказаться от Consistency, но мягко: Basically Available Soft state Eventual consistency BASE
- 29. Basically Available = Availability в CAP Soft state состояние меняется даже без внешних воздействий, чтобы прийти
- 30. BASE ВМЕСТО ACID
- 31. Обычно, самое важное: Данные не должны теряться (ACID) Данные должны быть согласованы (ACID, CAP, BASE) Устойчива
- 32. БД должна работать быстро Это сильно зависит в том числе и от того, как ей пользоваться
- 33. ПРОЕКТИРОВАНИЕ СТРУКТУРЫ БД
- 34. О чем поговорим: Коллекции, поиск по индексам Примеры на БД «MongoDB» ТОЛЬКО ОСНОВЫ
- 35. Документная Масштабируемая Гибкая MONGODB
- 36. Users: {”Login”: ”Ciceron”, ”Role”: ”Owner”} {”Login”: ”Popper”, ”Role”: ”Admin”, ”BanHammer”: ”true”} {”Login”: ”Freid”, ”Role”: ”User”, ”Status”:
- 37. А как их искать? Найти пользователя с заданным логином А быстро? КАК ХРАНИТЬ ДОКУМЕНТЫ?
- 38. Рядом с файлом данных коллекции хранить HashTable: Login → смещение в файле данных, по которому записан
- 39. Найти все сообщения с января по февраль Любая ordered структура ПОИСК ПО ДИАПАЗОНУ
- 40. Может быть много индексов у одной коллекции Занимает дополнительное место Замедляет операции обновления данных Создаются под
- 41. Пользователь ввел логин и пароль, нужно его аутентифицировать ForumDB: Users: Index on Login ЗАДАЧА «ФОРУМ»
- 42. Пользователь прошел по ссылке на конкретное сообщение, нужно его отобразить ForumDB: Users: Index on Login Messages:
- 43. Показать список самых популярных сообщений ForumDB: Users: Unordered index on Login Messages: Unordered index on MessageId
- 44. 1 2 3 4 50 60 70 ORDERED INDEX ≈ СОРТИРОВАННЫЙ СПИСОК
- 45. Задан порядок (collation) Поиск левой / правой границы O(logN) Переход к предыдущему/следующему в среднем O(1) Поиск
- 46. 1 2 3 4 50 60 70 skip 1, take 3, с конца SKIP/TAKE
- 47. SKIP/TAKE 2 60 50 70 1 3 4 skip 1, take 3, с конца
- 48. 1, cat 2 3 4 50 60, cat 70 ФИЛЬТРАЦИЯ
- 49. ФИЛЬТРАЦИЯ 2 60, cat 50 70 1, cat 3 4
- 50. ORDERED INDEX + ФИЛЬТРАЦИЯ Топ М сообщений = взять первое и M раз перейти к следующему:
- 51. Показать последние T сообщений из заданного треда обсуждений Тредов много Могут обратиться как к старому треду,
- 52. СОСТАВНЫЕ ИНДЕКСЫ TopicId, PublicationDate 1, 2019-02-10 1, 2019-02-15 6, 2019-01-01 6, 2019-02-02 7, 2019-02-18 9, 2019-01-05
- 53. ForumDB: Users: Unordered index on Login Messages: Unordered index on MessageId Ordered index on Likes Ordered
- 54. Стратегия поиска в БД Стратегия проектирования структуры БД Стратегия выбора БД ВЫВОДЫ ПО ПРОЕКТИРОВАНИЮ
- 55. Максимально сильно сузить выборку с помощью поиска по индексу до малого числа документов Отфильтровать оставшееся Идеально,
- 56. Заранее выяснить какие запросы БД должна уметь обрабатывать эффективно Понять, какие будут коллекции Спланировать, где нужны
- 57. Понимать специфику своих потребностей Понимать ограничения и сильные стороны разных СУБД Возможно, даже использовать несколько СУБД
- 58. ПРАКТИКА ПРОЕКТИРОВАНИЯ БД
- 59. СЕРВИС ДЛЯ ОТЕЛЕЙ public interface IHotelRepository { HotelId AddHotel(string name); void RemoveHotel(HotelId hotelId); RoomId AddRoom(HotelId hotelId,
- 60. Фиксируем результат проектирования в документе Описываем коллекцию как набор полей Если над полем надо построить индекс,
- 61. Нам понадобится коллекция «отели» Пусть у каждого отеля будет уникальный индекс Флаг «удалено» Где хранить комнаты?
- 62. RoomId AddRoom( HotelId hotelId, RoomDescription roomDescription); Добавить комнату в коллекцию «комнаты» Привязать комнату к отелю ПРИМЕР:
- 63. void RentRoom( RoomId roomId, DateTime from, DateTime to, Guest[] guests); http://bit.ly/db-shpora Скопируйте лист преподавателя и переименуйте
- 64. Guest[] GetArrivedGuests(DateTime day) ЗАДАЧА: ОТЧЕТНОСТЬ В МВД
- 65. Можно попросить СУБД отдать не весь документ, а только отдельные его поля = проекцию ПРОЕКЦИИ
- 66. (From, To, Guest[])[] GetRoomSchedule( RoomId roomId, DateTime from, DateTime to); Запрос должен работать быстро! ЗАДАЧА: ИСТОРИЯ
- 67. Можно ли одновременно искать с условиями на From и на To? С нашей моделью упорядоченного индекса
- 68. RoomDescription[] GetFreeRooms( HotelId hotelId, DateTime from, DateTime to); ЗАДАЧА: СВОБОДНЫЕ КОМНАТЫ
- 69. (RoomId, To) (HotelId, To) А нельзя ли вместо двух, иметь один такой? (HotelId, RoomId, To) НУЖНО
- 70. HotelId, RoomId, To 1, 100, 2019-01-10 2, 200, 2019-01-02 2, 200, 2019-01-05 2, 201, 2019-01-03 …
- 71. Один «родитель», много «детей» Полностью в родителе Guests в Rent Идентификаторы в родителе RoomIds в Hotel
- 72. В реляционных БД принято «нормализовать», хранить связи в отдельной таблице с записями вида (Id, ParentId, ChildId)
- 73. ОТЛИЧИЯ РЕЛЯЦИОННЫХ БД
- 74. MONGO VS SQL Хранит коллекцию документов Структура документов не фиксирована Табличная структура Поля заранее зафиксированы, изменение
- 75. MONGO VS SQL Документы могут иметь произвольную вложенность Денормализация для уменьшения числа запросов Простые клиенты, простая
- 76. MONGO VS SQL uniq – индексы в рамках шарда Распределенная система Транзакции, триггеры, ограничения, каскадные операции
- 77. ПРАКТИКА ИСПОЛЬЗОВАНИЯ БД
- 78. ЗАДАЧА: GAME 2 игрока Несколько туров Уже реализована Хранит всё в памяти
- 79. Зарегистрировать нового пользователя Отредактировать / удалить пользователя Создать планируемую игру Добавить пользователя в игру Начать /
- 80. Пользователь: логин, имя, статистика, … Игра: игроки, статус, номер тура, текущий счёт, … Тур: в какой
- 81. Game – реализация предметной области Tests – тесты ConsoleApp – реализация логики приложения DEMO GAME
- 82. Создание БД Создание документа Поиск документа Индексы DEMO MONGODB COMPASS
- 83. https://github.com/kontur-web-courses/db/blob/main/README.md ФОРМУЛИРОВКА ЗАДАНИЯ
- 84. Bson-based язык запросов MongoDB Специализированные методы репозиториев Отвязывание сущностей БД от классов, реализующих логику предметной области
- 86. Скачать презентацию





























































![void RentRoom( RoomId roomId, DateTime from, DateTime to, Guest[] guests); http://bit.ly/db-shpora Скопируйте](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/863886/slide-62.jpg)
![Guest[] GetArrivedGuests(DateTime day) ЗАДАЧА: ОТЧЕТНОСТЬ В МВД](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/863886/slide-63.jpg)

![(From, To, Guest[])[] GetRoomSchedule( RoomId roomId, DateTime from, DateTime to); Запрос должен](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/863886/slide-65.jpg)

![RoomDescription[] GetFreeRooms( HotelId hotelId, DateTime from, DateTime to); ЗАДАЧА: СВОБОДНЫЕ КОМНАТЫ](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/863886/slide-67.jpg)
















Plane Detection in a 3D environment using a Velodyne Lidar Jacoby Larson UCSD ECE 172
Переустановка Windows 10
Создание и реализация модели современного сообщества в Вконтакте
Одномерные массивы. Урок информатики в 11а классе
Императивное программирование
Маруся на уроках английского языка
Графика в QBasic. Определение координат точек для построения геометрических фигур
Оплата услуг через QIWI терминал
Защита информации от утечки на объектах информатизации органов внутренних дел
Үткен каләм + үткер күз = асыл сүз
Что такое персональные данные?
Индивидуальный проект. От абака до компьютера
Презентация на тему Основы Adobe Photoshop
Панель основных процессов (Basic Process)
Задания от Инфознайки
Компьютерная графика
Популяризация истории среди школьников через социальные сети
inf_92882
Технологии программирования
Электронные библиотечные системы (ЭБС) и библиотеки
Оформление публикаций
Как работать с презентацией
Язык программирования С++. Объединение переменных
Времена года - зима
Создание сообщества
Интернет-угрозы в молодёжной среде
Презентация на тему Возможности операционной системы Linux в учебном процессе
Приобретение и модернизация компьютера