Обмен технологиями

Управление базами данных в эпоху больших данных: важность сегментирования базы данных и разделения чтения и записи

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Предисловие

Термины «шардинг» и «разделение базы данных» часто упоминаются в области баз данных, обычно они относятся к схожим понятиям, но различаются в деталях. Под сегментированием базы данных обычно подразумевается распределение данных из большой базы данных по нескольким меньшим базам данных для повышения производительности и управляемости. С другой стороны, разделение базы данных в более широком смысле означает разложение системы базы данных на более мелкие части, что может включать сегментирование базы данных или другие типы разделения, такие как сегментирование таблиц.

Вот различия между шардингом и разделением базы данных:

особенностьШардинг базы данныхРазделение базы данных
определениеРаспределяйте данные по нескольким физическим экземплярам базы данных.Разбейте систему базы данных на более мелкие объекты.
ЦельПовышение производительности, масштабируемости и отказоустойчивости.Улучшите производительность, управление и масштабируемость.
типВ основном включает в себя горизонтальное и вертикальное разделение.Включая подбазу данных, подтаблицу, горизонтальное разделение, вертикальное разделение и т. д.
разделить горизонтальноЭто форма шардинга, при которой данные разбиваются по строкам.Вероятно, часть разделения базы данных.
разделить вертикальноЭто форма шардинга, при которой данные разбиваются по столбцам.Вероятно, часть разделения базы данных.
сложность реализацииВыше требуется дополнительная логика маршрутизации.Это зависит от конкретного метода разделения.
ВлияниеКод прикладного уровня может потребоваться изменить для адаптации к подбиблиотеке.Код прикладного уровня может потребоваться изменить, чтобы учесть изменения.
примерХраните данные разных пользователей в разных базах данных, например, назначайте их разным базам данных в соответствии с хеш-значением идентификатора пользователя. Разделите большую таблицу на несколько таблиц меньшего размера или вертикально разбейте данные на разные таблицы или библиотеки. Вертикальное разделение: хранение информации о пользователях и информации о заказах в разных базах данных; горизонтальное разделение: хранение таблицы заказов в разных базах данных в соответствии с диапазоном идентификаторов заказов.

Пример филиала библиотеки

  1. -- 分库示例:将订单信息按照用户ID的哈希值存储到不同的数据库
  2. -- 数据库1
  3. CREATE DATABASE orders_db_1;
  4. USE orders_db_1;
  5. CREATE TABLE orders (
  6. order_id INT PRIMARY KEY,
  7. user_id INT,
  8. total_amount DECIMAL(10, 2),
  9. order_date DATE
  10. );
  11. -- 数据库2
  12. CREATE DATABASE orders_db_2;
  13. USE orders_db_2;
  14. CREATE TABLE orders (
  15. order_id INT PRIMARY KEY,
  16. user_id INT,
  17. total_amount DECIMAL(10, 2),
  18. order_date DATE
  19. );

Пример разделения базы данных

  1. -- 垂直拆分示例:将用户信息表和订单信息表分离到不同的数据库
  2. -- 主数据库
  3. CREATE DATABASE main_database;
  4. USE main_database;
  5. -- 用户信息表
  6. CREATE TABLE users (
  7. user_id INT PRIMARY KEY,
  8. username VARCHAR(50),
  9. email VARCHAR(100)
  10. );
  11. -- 订单信息表
  12. CREATE DATABASE orders_database;
  13. USE orders_database;
  14. CREATE TABLE orders (
  15. order_id INT PRIMARY KEY,
  16. user_id INT,
  17. total_amount DECIMAL(10, 2),
  18. order_date DATE
  19. );

Шардинг базы данных и разделение базы данных используются в различных сценариях для удовлетворения конкретных потребностей бизнеса и решения технических задач:

СценыШардинг базы данныхРазделение базы данных
Объем данных слишком великКогда объем данных в одной базе данных превышает возможности хранения или обработки одного сервера.Когда размер таблицы базы данных влияет на производительность запросов.
Узкое место в производительностиПри выполнении большого количества одновременных операций чтения и записи одна база данных не может обеспечить достаточную пропускную способность.Операции чтения и записи в одной таблице начинают замедляться, что влияет на время ответа приложения.
Требования к масштабируемостиБазу данных необходимо расширить горизонтально, чтобы повысить производительность за счет добавления дополнительных узлов базы данных.Данные необходимо разделить по вертикали, чтобы снизить нагрузку на единую базу данных и упростить управление.
Аварийное восстановление и восстановлениеВ распределенной среде возможности аварийного восстановления и быстрого восстановления системы можно повысить за счет сегментирования.Разделив базу данных, вы сможете легче создавать резервные копии и восстанавливать части ваших данных.
Связанные с бизнес-логикойОн не подходит для сценариев со сложными межтабличными запросами, поскольку задержка и сложность сети могут увеличиться после сегментирования базы данных.Данные можно разделить в соответствии с бизнес-логикой, чтобы связанные данные хранились вместе, а количество запросов между базами данных сокращалось.
Корректировка архитектуры системыКогда системная архитектура должна поддерживать распределенные вычисления и крупномасштабную обработку данных.Когда структуры данных необходимо реорганизовать для оптимизации конкретного запроса или операции.
Контроль за уровнем издержекДешевые аппаратные ресурсы можно использовать посредством сегментирования, чтобы снизить общую стоимость владения.Оптимизируя схемы хранения данных и доступа к ним, можно сэкономить ресурсы хранения и вычислительные ресурсы.
Изоляция и безопасность данныхФизическая изоляция данных может быть достигнута посредством географического сегментирования в соответствии с нормативными требованиями.Данные можно разделить по чувствительности или частоте доступа для более детального контроля безопасности.

      Хотя для решения вышеуказанных проблем можно использовать как сегментирование, так и разделение базы данных, их направленность различна. Суббазы данных более склонны решать проблемы хранения и обработки крупномасштабных данных, а также улучшают возможности масштабируемости и аварийного восстановления системы. Разделение базы данных больше ориентировано на оптимизацию организации данных и шаблонов доступа, а также на упрощение управления базой данных.