HighLoad — хранение данных, введение

Начать. Это бесплатно
или регистрация c помощью Вашего email-адреса
HighLoad — хранение данных, введение создатель Mind Map: HighLoad — хранение данных, введение

1. CAP-теорема (теорема Брюера)

1.1. Принципы

1.1.1. Consisency

1.1.1.1. согласованность данных

1.1.2. Availability

1.1.2.1. доступность

1.1.3. Partition tolerance

1.1.3.1. устойчивость к сбою узлов

1.2. Определение

1.2.1. При построении распределенной системы, которая могла бы пережить отказ некоторых из ее компонент необходимо пожертвовать либо доступностью (avalability), либо согласованностью (consistency)

1.3. Рабочие комбинации

1.3.1. CA

1.3.1.1. ACID-СУБД

1.3.1.2. LDAP

1.3.2. CP

1.3.3. AP

1.3.3.1. DNS

1.3.3.2. eventually consystent

1.3.3.3. weak consistent

1.4. BASE

1.4.1. Basically Available

1.4.1.1. в случае сбоев страдает только часть системы / сессий

1.4.2. Soft-state

1.4.2.1. возможность жертвовать долговременным хранением состояния сессий

1.4.3. Eventually consistent

1.4.3.1. обеспечении согласования в практически обозримое время

2. Транзакционная целостность

2.1. ACID

2.1.1. Atomicity

2.1.1.1. что никакая транзакция не будет зафиксирована в системе частично

2.1.1.1.1. commit / rollback

2.1.2. Consistency

2.1.2.1. Согласованность данных

2.1.3. Isolation

2.1.3.1. другие процессы не должны видеть данные в промежуточном состоянии

2.1.4. Durability

2.1.4.1. успешные транзакции обязаны быть сохранены

3. Распределённые файловые системы

3.1. Мотивация

3.1.1. Не справляемся по месту

3.1.2. Не справляемся по нагрузке

3.1.2.1. Поможет репликация ФС

3.1.2.1.1. DRBD

3.1.2.1.2. rsync

3.2. Виды

3.2.1. Блочные устройства в ОС

3.2.1.1. часто userspace-реализации

3.2.1.1.1. через fuse

3.2.1.2. Lustre

3.2.1.3. HDFS

3.2.1.4. GFS (Google File System)

3.2.1.4.1. проприетарная

3.2.1.5. GlusterFS

3.2.2. API-based

3.2.2.1. MogileFS

3.2.2.1.1. Livejournal

4. хранилище -- самый «капризный» компонент

4.1. На примере SQL-СУБД

4.1.1. очистить ресурсы, закрыть соединение

4.1.2. отдать результат

4.1.3. отсортировать данные

4.1.3.1. in-memory

4.1.3.2. filesort

4.1.4. index lookup, buffer cache, disk read

4.1.5. построить оптимальный план запроса

4.1.6. разобрать SQL- выражение

4.1.7. проверить кэш запросов

4.1.8. аутентификация

4.1.9. получить запрос

4.1.10. установить соединение, выделить ресурсы