Проходим собеседование на GoLang - разработчика
  • Введение
  • Общие вопросы
  • ✏️Шпаргалка по синтаксису GoLang
  • 📖GoLang теория
    • Типы данных
    • Строки
    • Массивы и слайсы
    • Мапы
    • Каналы
    • Goрутины
    • Гонка данных
    • Мьютексы
    • Контекст
    • ООП, интерфейсы
    • Другие вопросы по Go
  • 🚲GoLang Задачи
    • Задачи на строки
    • Задачи на слайсы
    • Задачи на мапы
    • Задачи на указатель
    • HTTP-запросы
    • Задачи про каналы
    • Задачи на интерфесы
    • Задачи на горутины
    • Задачи с БД
    • Задачи на defer
    • Задачи на таймер
    • Задачи на рефакторинг
    • Нерассортированные задачи
  • 🏬Базы данных
    • 🥥SQL (язык запросов)
    • 🍩Индексы
    • 🥞Транзакции
    • ✈️Масштабирование
  • 🚆Протоколы HTTP/UDP/TCP и т.д.
  • 🛞Алгоритмы
  • 🖥️Операционные системы
  • 🚢Сисдиз
  • 🤪Управление командой
Powered by GitBook
On this page
  1. Базы данных

Масштабирование

Как масштабировать базу: синхронная репликация, шардирование

Для масштабирования базы данных существуют два основных подхода: синхронная репликация и шардирование[1][2][3][4][5].

Синхронная репликация

Синхронная репликация подразумевает, что данные записываются одновременно на основной сервер (лидер) и на один или несколько резервных серверов (фолловеры)[3]. Это обеспечивает высокую доступность данных, так как при отказе основного сервера можно переключиться на фолловер. Однако синхронная репликация накладывает дополнительные накладные расходы на запись, так как транзакция должна быть подтверждена на всех серверах[3].

Шардирование

Шардирование заключается в разделении данных на логические части (шарды) и распределении их между несколькими физическими серверами[1][2][4][5]. Это позволяет масштабировать нагрузку на запись, так как данные распределяются между серверами. Ключевым моментом является выбор правильного ключа шардирования, который должен обеспечивать равномерное распределение данных[1][2].

Выбор между синхронной репликацией и шардированием зависит от конкретных требований приложения к доступности, производительности записи и чтения[3]. Часто используется комбинация обоих подходов для достижения оптимальной масштабируемости[1][2][3][4][5].

Citations: [1] https://habr.com/ru/articles/440306/ [2] https://web-creator.ru/articles/partitioning_replication_sharding [3] https://habr.com/ru/companies/selectel/articles/708434/ [4] https://learn.microsoft.com/ru-ru/azure/well-architected/performance-efficiency/scale-partition [5] https://reindexer.io/reindexer-docs/sharding/

Как работает репликация базы данных?

Репликация базы данных представляет собой процесс синхронизации данных между несколькими серверами баз данных в режиме реального времени[2][3][5]. Основной принцип работы репликации базы данных включает следующие этапы:

  1. Идентификация Мастера и Реплик: В процессе репликации выделяется основной сервер базы данных (Мастер), на котором происходят изменения данных, и один или несколько резервных серверов (Реплики), на которые данные реплицируются.

  2. Передача Изменений: Любые изменения, вносимые в данные на Мастере, автоматически передаются на Реплики в режиме реального времени. Это позволяет обеспечить согласованность данных между всеми серверами баз данных.

  3. Режимы Репликации: Существуют различные режимы репликации, такие как мастер-реплика и каскадная репликация. В режиме мастер-реплика изменения вносятся только на Мастере и реплицируются на Реплики. В каскадной репликации изменения передаются по цепочке от одной Реплики к другой.

  4. Отказоустойчивость и Доступность: Репликация базы данных обеспечивает отказоустойчивость системы. В случае отказа одной Реплики, все запросы чтения могут быть перенаправлены на Мастер, обеспечивая непрерывную работу системы.

  5. Преимущества: Репликация баз данных позволяет увеличить производительность системы, обеспечить отказоустойчивость, справляться с нагрузкой и повысить доступность данных[2][3][5].

Таким образом, репликация базы данных является важным механизмом для обеспечения целостности данных, отказоустойчивости и эффективного управления информацией в распределенных системах.

Citations: [1] https://www.astera.com/ru/type/blog/data-replication/ [2] https://blog.set-pro.net/%D0%B4%D0%BB%D1%8F-%D1%87%D0%B5%D0%B3%D0%BE-%D0%BD%D1%83%D0%B6%D0%BD%D0%B0-%D1%80%D0%B5%D0%BF%D0%BB%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D1%8F-%D0%B1%D0%B0%D0%B7-%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85/ [3] https://db-service.ru/blog/chto_takoie_rieplikatsiia_baz_dannykh [4] https://habr.com/ru/articles/514500/ [5] https://blog.cortel.cloud/2022/11/03/replikacziya-dannyh-v-razlichnyh-subd/

PreviousТранзакцииNextПротоколы HTTP/UDP/TCP и т.д.

Last updated 12 months ago

🏬
✈️