Вы находитесь на странице: 1из 20

Системы хранения данных

Я.А.Кириленко, 2021
Терминология
● Данные
○ Это наша главная ценность

● Запоминающее устройство
○ Хранит данные, закодированные (представленные) физическим состоянием.
Классификация (по типу доступа)
● Первичная память
○ Доступна ЦПУ: регистры, кеш, ОЗУ, …
○ DRAM (Dynamic Random Access Memory)
■ Где используется?
■ Почему она “динамическая”?
○ SRAM
■ в 4 раза больше элементов на реализацию
■ Но свои достоинства
○ (П)ПЗУ: ROM BIOS
■ где ещё есть firmware?
● Вторичная: подключена к вычислителю, постоянно доступна
○ HDD, SSD, ...
● Третичная: доступна по запросу, используется для архивации
○ Выделяют off-line storage, которая removable media
Классификация (по физическому принципу)
● Перфорационная
● С магнитной записью (сердечники, ленты, диски)
● Оптическая
● Полупроводниковая (эффекты в полупроводниках)

Обсуждаем, где видели такую

А ещё про кодирование надо поговорить


Немного истории: перфоленты/перфокарты
● Использовались в 1890 в счётной машине
○ Даже в 1804 г. “Жаккардова машина”. Жозеф Мари Жаккар.
○ Или даже в 1725 г

Потом стали такими


НГМД
80 KБ

320 КБ

1.44 (2.88) МБ

Больше не поддерживаются в Win10 😔

– … но можно через USB


НЖМД
Общие принципы те же, что у дискет

Рассмотрим логическое деление:

● Дорожки и сектора
○ Разная плотность записи
● Как защититься от ошибок?
Про CD
● Спираль!
● Шаг дорожки: 1,6 мкм
● Лунки (питы)
○ ГхШхД: 100 нм х 500 нм х 850 нм – 3500 нм
○ Длина волны: 780 нм у CD, 650 нм у DVD)
○ А какая длина волны у видимого света?
● Код Рида — Соломона
○ Код помехоустойчивого кодирования
○ В CD-A интерполяция, потому что там хуже
коррекцией
Лучший способ хранить данные
У каждого подхода есть свои достоинства и недостатки, поэтому надо понимать критерии
выбора

● Стойкость (durability). Циклы перезаписи, “время жизни”


○ Устойчивость к внешнему воздействию
● Надёжность (dependability). MTBF, uptime
○ Готовность к работе по требованию
● Скорость (speed)
● Ёмкость (capacity)
● Стоимость (cost). Цена за ГБ.

● ?(Энергоэффективность)
Решение некоторых проблем: RAID & NAS
RAID (Redundant Array of Independent/Inexpensive Disks)

● Ёмкость: RAID 0
■ RAID 10
■ RAID 50
● Надёжность
○ RAID 1 (отзеркаливание)
○ – RAID 2 (bit-striping, код Хэмминга для чётности)
– RAID 3 (byte-striping, dedicated parity drive)

○ – RAID 4 (block-striping, dedicated parity drive)
NAS (Network-attached storage)
○ RAID 5 (block-striping, distributed parity)
■ Мин 3 диска
■ 1 может “отвалиться”
○ RAID 6
■ 2 диска для чётности
■ Мин 4 диска
○ Учите конечные поля (поля Галуа)
● А как же “скорость” ?
○ А где узкое место?
○ Может ли RAID решить проблему скорости?
Ближе к программированию

ОС отвечает за доступ к устройствам

ФС отвечает за хранение данных на устройствах


А где тут RAID?

● Блочный доступ И где облачные хранилища?


● Файловый доступ
● Object store (вариант базы данных)

● Последовательный доступ
● Произвольный доступ
Работа с данными
● Как-то структурированы
● Ограниченно моделируют реальный мир
● Необходимо обновлять, читать — зависит от сценария
● Часто нужен одновременный доступ
СУБД (DBMS)
И тут пришёл Эдгар Кодд (прямо в 1970 г), и разделил он модель данных от
представления
● Раздели моделирование и реализацию
● Будем работать с данными по общим правилам
● И язык применим (SQL)
● И пусть реализации сами там как-то решают, что делать и как

До этого все программисты думали про размещение данных


Транзакции
ACID

● Atomicity. Either all actions are carried out, or none are logs needed to undo operations, if
needed
● Consistency. If each transaction is consistent, and the database is initially consistent, then it is
left consistent.
● Isolation. Protected from the effects of other transactions
● Durability. If a transactions completes successfully, then its effects persist

Это вообще про транзакции, относится и к файловым системам тоже


Реляционная алгебра и SQL
● Это будет отдельно, есть курс про БД, там подробнее расскажут
● Нам надо только поверить, что это хорошо и полезно
● Но не всегда полезно…

SELECT column1, column2


FROM table_name;

И больше ничего можно не знать, но...


Использование СУБД
Ещё в 197х всем всегда нужно было думать о размещении данных

А как в 202х? Где используют СУБД?

● Для чего нужны СУБД?


● А игры используют?
● А браузеры?
● Стоит ли использовать СУБД в маленькой программке?
Работа с данными в больших системах
● Обновлять, записывать какие-то наблюдения
○ OLTP — Online Transaction Processing
○ Оптимизировано для обновления
● Аналитика
○ OLAP — Online Analytical Processing
○ Строить графики
○ Анализировать зависимости
○ Изучать историю
○ Оптимизировано для чтения
NoSQL
● “От этих строгих подходов один вред”
● “Я так и не понял, как правильно спроектировать БД”
● .. и другие неверные тезисы для отказа от SQL

Тоже СУБД, даже с языками запросов


● Key-value store
● Directed Graph Databases
● Distributed hash tables
Материалы
● По всем темам много в Wikipedia

● Без картинок:
http://www.ftms.edu.my/images/Document/CSCA0101%20-%20Computin
g%20Basics/csca0101_ch05.pdf
Заметки 2021
Материала очень много, едва ли можно в полтора часа уложиться, надо
пересмотреть содержание или более плотно рассказывать

Добавить визуальных материалов

Добавить про Винчестер


https://www.ibm.com/ibm/history/exhibits/storage/storage_3340.html

Можно немного истории


https://en.wikipedia.org/wiki/History_of_hard_disk_drives

Вам также может понравиться