<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://neerc.ifmo.ru/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Gleb-kov</id>
		<title>Викиконспекты - Вклад участника [ru]</title>
		<link rel="self" type="application/atom+xml" href="http://neerc.ifmo.ru/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Gleb-kov"/>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%92%D0%BA%D0%BB%D0%B0%D0%B4/Gleb-kov"/>
		<updated>2026-04-15T11:27:53Z</updated>
		<subtitle>Вклад участника</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A0%D0%B5%D0%BF%D0%BB%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D1%8F&amp;diff=81374</id>
		<title>Репликация</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A0%D0%B5%D0%BF%D0%BB%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D1%8F&amp;diff=81374"/>
				<updated>2021-12-17T16:19:19Z</updated>
		
		<summary type="html">&lt;p&gt;Gleb-kov: реализация репликации и применение&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
'''Репликация''' — это поддержание одинаковых данных на нескольких узлах распределенной системы.}}&lt;br /&gt;
'''Типы репликации'''&lt;br /&gt;
* Синхронная -- требует введения распределенных транзакций и гарантирует одинаковое состояние реплик.&lt;br /&gt;
* Асинхронная -- допускает задержки репликации на репликах.&lt;br /&gt;
&lt;br /&gt;
'''Схемы репликации'''&lt;br /&gt;
* С основной копией -- запросы на запись поступают в централизованное место, а затем реплицируются&lt;br /&gt;
* Симметричная -- запросы на запись могут поступать в различные копии&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Реализация репликации ==&lt;br /&gt;
&lt;br /&gt;
=== С основной копией ===&lt;br /&gt;
[[Файл:Replication_Master.png|300px|thumb|right|Репликация с основной копией]]&lt;br /&gt;
Есть одна главная копия данных, изменения из неё реплицируются на все остальные копии. За согласованность изменений отвечает главная копия. Если изменения приводят к несогласованному состоянию, то транзакция откатывается. Запросы на чтение могут быть обработаны любой репликой.&lt;br /&gt;
Такая реализация эффективна, если количество записей сильно меньше количества запросов чтения.&lt;br /&gt;
&lt;br /&gt;
=== Симметричная ===&lt;br /&gt;
[[Файл:Replication_Symmetric.png|300px|thumb|right|Симметричная репликация]]&lt;br /&gt;
Чтение и запись могут быть обработаны любой копией. При необходимости реплики могут работать автономно.&lt;br /&gt;
&lt;br /&gt;
Преимущества:&lt;br /&gt;
* Запросы можно отправлять на географически ближайшую реплику&lt;br /&gt;
&lt;br /&gt;
Недостатки:&lt;br /&gt;
* Необходимо обрабатывать случай записей с разных копий, которые конфликтуют при репликации.&lt;br /&gt;
* При выходе из строя любой реплики, состояние системы не согласовано и данные потеряны.&lt;br /&gt;
&lt;br /&gt;
Таким образом, синхронная репликация сложна и малонадежна. В реалньости распределенные базы данных решают эту проблему лучше.&lt;br /&gt;
&lt;br /&gt;
=== Рассылка изменений ===&lt;br /&gt;
Информация обо всех сделанных изменения содержится в журнале транзакций. Репликация достигается за счёт рассылки протоколов транзакций.&lt;br /&gt;
&lt;br /&gt;
==== Репликация операторов ====&lt;br /&gt;
* На реплике выполняются те же операторы&lt;br /&gt;
* Пересылается малый объем данных&lt;br /&gt;
* Операторы должны быть детерминированны&lt;br /&gt;
* Необходимо учитывать взаимный порядок выполнения транзакций.&lt;br /&gt;
&lt;br /&gt;
==== Репликация записей ====&lt;br /&gt;
* Пересылается информация об изменении записей&lt;br /&gt;
* Результат детерминирован&lt;br /&gt;
* Вынужденно пересылается большое количество записей&lt;br /&gt;
&lt;br /&gt;
== Применения репликации ==&lt;br /&gt;
&lt;br /&gt;
=== Вертикальное масштабирование ===&lt;br /&gt;
Большое количество чтений, малое количество записей. Схема репликации с одной копией. Примеры: web-сервера, erp-системы.&lt;br /&gt;
&lt;br /&gt;
=== Горизонтальное масштабирование ===&lt;br /&gt;
Большое количество локальный операций (например, по критерию географической распределенности). Реплика отвечает за свой набор данных, т.е. по запросу всегда можно определить нужную реплику. Применение: географическая распределенность, независимость по данным, непостоянная связь.&lt;br /&gt;
&lt;br /&gt;
=== Повышение доступности ===&lt;br /&gt;
Ассиметричная схема репликации позволяет менять основную реплику не останавливая работу системы.&lt;br /&gt;
&lt;br /&gt;
=== Резервное копирование ===&lt;br /&gt;
Ассиметричная схема.&lt;br /&gt;
&lt;br /&gt;
* Для получения резервной копии добавим специальную реплику, которая будет синхронизирована с основной.&lt;br /&gt;
* В момент взятия резервной копии отключаем синхронизацию.&lt;br /&gt;
* Чтобы сделать следующую резервную копию, синхронизация снова включается.&lt;br /&gt;
* Реплика получает все изменения, сделанные с момента отключения.&lt;br /&gt;
&lt;br /&gt;
=== Преобразование данных ===&lt;br /&gt;
Ассиметричная схема репликации позволяет добавлять специальные реплики, которые занимаются обработкой данных. Периодически синхронизуясь, такая реплика преобразовывает данные, например: изменение формата хранения, консолидация данных, унификация данных.&lt;/div&gt;</summary>
		<author><name>Gleb-kov</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Replication_Symmetric.png&amp;diff=81373</id>
		<title>Файл:Replication Symmetric.png</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Replication_Symmetric.png&amp;diff=81373"/>
				<updated>2021-12-17T15:06:27Z</updated>
		
		<summary type="html">&lt;p&gt;Gleb-kov: Симметричная репликация&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Симметричная репликация&lt;/div&gt;</summary>
		<author><name>Gleb-kov</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Replication_Master.png&amp;diff=81372</id>
		<title>Файл:Replication Master.png</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Replication_Master.png&amp;diff=81372"/>
				<updated>2021-12-17T15:06:05Z</updated>
		
		<summary type="html">&lt;p&gt;Gleb-kov: Репликация с основной копией&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Репликация с основной копией&lt;/div&gt;</summary>
		<author><name>Gleb-kov</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A1%D0%B5%D0%BA%D1%86%D0%B8%D0%BE%D0%BD%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5&amp;diff=81371</id>
		<title>Секционирование</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A1%D0%B5%D0%BA%D1%86%D0%B8%D0%BE%D0%BD%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5&amp;diff=81371"/>
				<updated>2021-12-17T14:55:22Z</updated>
		
		<summary type="html">&lt;p&gt;Gleb-kov: секционирование индекса&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
'''Секционирование''' — это разделение таблицы базы данных на отдельные фрагменты с раздельными настройками физического хранения.}}&lt;br /&gt;
&lt;br /&gt;
Фрагменты могут хранится на разных компьютерах или дисках одного компьютера. Используется в целях повышения производительности и доступности больших баз данных. Это достигается за счет параллельного чтения и записи на различных дисках.&lt;br /&gt;
&lt;br /&gt;
== Типы секционирования ==&lt;br /&gt;
&lt;br /&gt;
=== Вертикальное ===&lt;br /&gt;
Разбиение таблицы &amp;quot;по столбцам&amp;quot;. Условие корректности: секции содержат надключ (следует из теоремы Фейгина).&lt;br /&gt;
&lt;br /&gt;
Преимущества:&lt;br /&gt;
* Отделение &amp;quot;частых&amp;quot; данных от &amp;quot;редких&amp;quot;&lt;br /&gt;
* Защита информации (можно задать разные права доступа на разные секции)&lt;br /&gt;
* Автоматическая поддержка для CLOB и BLOB (они хранятся отдельно от записи)&lt;br /&gt;
&lt;br /&gt;
Недостатки:&lt;br /&gt;
* Нет специальной поддержки&lt;br /&gt;
* Зависимость от представления&lt;br /&gt;
* Необходимость обновляемых представлений&lt;br /&gt;
&lt;br /&gt;
=== Горизонтальное ===&lt;br /&gt;
Разбиение таблицы &amp;quot;по строкам&amp;quot;. Условие корректности: каждая строка попадает ровно в одну секцию.&lt;br /&gt;
&lt;br /&gt;
Преимущества:&lt;br /&gt;
* Отделение &amp;quot;близких&amp;quot; данных от &amp;quot;дальних&amp;quot; (например, зависящих от времени).&lt;br /&gt;
* Уменьшение размера секции&lt;br /&gt;
* Встроенная поддержка&lt;br /&gt;
* Прозрачность для пользователя&lt;br /&gt;
&lt;br /&gt;
Недостатки:&lt;br /&gt;
* Возможное замедление работы&lt;br /&gt;
&lt;br /&gt;
Пример: таблица Points(SId, CId, Mark, Date), секции разбиты по Date на основе года.&lt;br /&gt;
&lt;br /&gt;
== Методы секционирования ==&lt;br /&gt;
&lt;br /&gt;
* Простые&lt;br /&gt;
** По диапазонам (задается границами)&lt;br /&gt;
** По значениям (списки конкретных значений)&lt;br /&gt;
** По хешу (записи разбиваются по хеш значению заданного набора столбцов)&lt;br /&gt;
* По выражению (секция задается любым методом простого секционирования)&lt;br /&gt;
* Составные (секции ращбиваются на подсекции, например, сначала по диапазону, а затем по хешу)&lt;br /&gt;
&lt;br /&gt;
== Управление секциями ==&lt;br /&gt;
&lt;br /&gt;
==== Удаление секции ====&lt;br /&gt;
  '''alter table''' &amp;lt;font color=red&amp;gt;таблица&amp;lt;/font&amp;gt; '''drop partition''' &amp;lt;font color=red&amp;gt;секция&amp;lt;/font&amp;gt;''';'''&lt;br /&gt;
&lt;br /&gt;
==== Разбиение секции ====&lt;br /&gt;
  '''alter table''' &amp;lt;font color=red&amp;gt;таблица&amp;lt;/font&amp;gt; '''reorganize''' &amp;lt;font color=red&amp;gt;секция&amp;lt;/font&amp;gt; '''into ('''...''')''';&lt;br /&gt;
&lt;br /&gt;
==== Перехеширование ====&lt;br /&gt;
  '''alter table''' &amp;lt;font color=red&amp;gt;таблица&amp;lt;/font&amp;gt; '''add partition''' &amp;lt;font color=red&amp;gt;число&amp;lt;/font&amp;gt;''';'''&lt;br /&gt;
  '''alter table''' &amp;lt;font color=red&amp;gt;таблица&amp;lt;/font&amp;gt; '''coalesce partition''' &amp;lt;font color=red&amp;gt;число&amp;lt;/font&amp;gt;''';'''&lt;br /&gt;
&lt;br /&gt;
==== Оптимизация запросов ====&lt;br /&gt;
Оптимизатор запросов умеет использовать секционирование для повышения производительности. Ненужные секции могут быть отброшены, а запросы на оставшихся станут параллельными. Например, может быть оптимизирована операция '''select''' со сравнениями, '''=''', '''in''', '''between'''.&lt;br /&gt;
&lt;br /&gt;
==== Индексы ====&lt;br /&gt;
&lt;br /&gt;
Индексы могут быть секционированы.&lt;br /&gt;
&lt;br /&gt;
Типы индексов:&lt;br /&gt;
* Локальный - один на секцию&lt;br /&gt;
* Глобальный - один на таблицу&lt;br /&gt;
* Секционированный - разбит на секции по-своему&lt;br /&gt;
&lt;br /&gt;
Локальный и глобальный индекс нужны для оптимизации запросов.&lt;br /&gt;
&lt;br /&gt;
Секционированный индекс имеет смысл, если глобальный индекс слишком велик по размеру. Секционирование таблицы и индекса должено быть согласовано, чтобы не относить секцию таблицы к нескольким секциям индекса. Однако разрешается относить несколько секций таблицы к одной секции индекса.&lt;/div&gt;</summary>
		<author><name>Gleb-kov</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A1%D0%B5%D0%BA%D1%86%D0%B8%D0%BE%D0%BD%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5&amp;diff=81370</id>
		<title>Секционирование</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A1%D0%B5%D0%BA%D1%86%D0%B8%D0%BE%D0%BD%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5&amp;diff=81370"/>
				<updated>2021-12-17T13:34:57Z</updated>
		
		<summary type="html">&lt;p&gt;Gleb-kov: вертикальное и индексы&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
'''Секционирование''' — это разделение таблицы базы данных на отдельные фрагменты с раздельными настройками физического хранения.}}&lt;br /&gt;
&lt;br /&gt;
Фрагменты могут хранится на разных компьютерах или дисках одного компьютера. Используется в целях повышения производительности и доступности больших баз данных. Это достигается за счет параллельного чтения и записи на различных дисках.&lt;br /&gt;
&lt;br /&gt;
== Типы секционирования ==&lt;br /&gt;
&lt;br /&gt;
=== Вертикальное ===&lt;br /&gt;
Разбиение таблицы &amp;quot;по столбцам&amp;quot;. Условие корректности: секции содержат надключ (следует из теоремы Фейгина).&lt;br /&gt;
&lt;br /&gt;
Преимущества:&lt;br /&gt;
* Отделение &amp;quot;частых&amp;quot; данных от &amp;quot;редких&amp;quot;&lt;br /&gt;
* Защита информации (можно задать разные права доступа на разные секции)&lt;br /&gt;
* Автоматическая поддержка для CLOB и BLOB (они хранятся отдельно от записи)&lt;br /&gt;
&lt;br /&gt;
Недостатки:&lt;br /&gt;
* Нет специальной поддержки&lt;br /&gt;
* Зависимость от представления&lt;br /&gt;
* Необходимость обновляемых представлений&lt;br /&gt;
&lt;br /&gt;
=== Горизонтальное ===&lt;br /&gt;
Разбиение таблицы &amp;quot;по строкам&amp;quot;. Условие корректности: каждая строка попадает ровно в одну секцию.&lt;br /&gt;
&lt;br /&gt;
Преимущества:&lt;br /&gt;
* Отделение &amp;quot;близких&amp;quot; данных от &amp;quot;дальних&amp;quot; (например, зависящих от времени).&lt;br /&gt;
* Уменьшение размера секции&lt;br /&gt;
* Встроенная поддержка&lt;br /&gt;
* Прозрачность для пользователя&lt;br /&gt;
&lt;br /&gt;
Недостатки:&lt;br /&gt;
* Возможное замедление работы&lt;br /&gt;
&lt;br /&gt;
Пример: таблица Points(SId, CId, Mark, Date), секции разбиты по Date на основе года.&lt;br /&gt;
&lt;br /&gt;
== Методы секционирования ==&lt;br /&gt;
&lt;br /&gt;
* Простые&lt;br /&gt;
** По диапазонам (задается границами)&lt;br /&gt;
** По значениям (списки конкретных значений)&lt;br /&gt;
** По хешу (записи разбиваются по хеш значению заданного набора столбцов)&lt;br /&gt;
* По выражению (секция задается любым методом простого секционирования)&lt;br /&gt;
* Составные (секции ращбиваются на подсекции, например, сначала по диапазону, а затем по хешу)&lt;br /&gt;
&lt;br /&gt;
== Управление секциями ==&lt;br /&gt;
&lt;br /&gt;
==== Удаление секции ====&lt;br /&gt;
  '''alter table''' &amp;lt;font color=red&amp;gt;таблица&amp;lt;/font&amp;gt; '''drop partition''' &amp;lt;font color=red&amp;gt;секция&amp;lt;/font&amp;gt;''';'''&lt;br /&gt;
&lt;br /&gt;
==== Разбиение секции ====&lt;br /&gt;
  '''alter table''' &amp;lt;font color=red&amp;gt;таблица&amp;lt;/font&amp;gt; '''reorganize''' &amp;lt;font color=red&amp;gt;секция&amp;lt;/font&amp;gt; '''into ('''...''')''';&lt;br /&gt;
&lt;br /&gt;
==== Перехеширование ====&lt;br /&gt;
  '''alter table''' &amp;lt;font color=red&amp;gt;таблица&amp;lt;/font&amp;gt; '''add partition''' &amp;lt;font color=red&amp;gt;число&amp;lt;/font&amp;gt;''';'''&lt;br /&gt;
  '''alter table''' &amp;lt;font color=red&amp;gt;таблица&amp;lt;/font&amp;gt; '''coalesce partition''' &amp;lt;font color=red&amp;gt;число&amp;lt;/font&amp;gt;''';'''&lt;br /&gt;
&lt;br /&gt;
==== Оптимизация запросов ====&lt;br /&gt;
Оптимизатор запросов умеет использовать секционирование для повышения производительности. Ненужные секции могут быть отброшены, а запросы на оставшихся станут параллельными. Например, может быть оптимизирована операция '''select''' со сравнениями, '''=''', '''in''', '''between'''.&lt;br /&gt;
&lt;br /&gt;
==== Индексы ====&lt;br /&gt;
&lt;br /&gt;
Индексы могут быть секционированы.&lt;br /&gt;
&lt;br /&gt;
Типы индексов&lt;br /&gt;
* Локальный - один на секцию&lt;br /&gt;
* Глобальный - один на таблицу&lt;br /&gt;
* Секционированный - разбит на секции по-своему&lt;br /&gt;
&lt;br /&gt;
Локальный и глобальный индекс нужны для оптимизации запросов.&lt;/div&gt;</summary>
		<author><name>Gleb-kov</name></author>	</entry>

	</feed>