<?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=93.158.156.166&amp;*</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=93.158.156.166&amp;*"/>
		<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/93.158.156.166"/>
		<updated>2026-06-12T05:54:52Z</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=81960</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=81960"/>
				<updated>2021-12-26T20:58:51Z</updated>
		
		<summary type="html">&lt;p&gt;93.158.156.166: структура&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;
[[Файл: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;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
* Дейт К. Введение в системы баз данных (глава 21)&lt;br /&gt;
* [https://www.postgresql.org/docs/current/high-availability.html PostgreSQL: High Availability, Load Balancing, and Replication]&lt;br /&gt;
* [https://dev.mysql.com/doc/refman/8.0/en/replication.html MySQL: Replication]&lt;br /&gt;
&lt;br /&gt;
[[Категория: Базы данных]]&lt;/div&gt;</summary>
		<author><name>93.158.156.166</name></author>	</entry>

	</feed>