Краткое обсуждение подбазы данных и подтаблицы базы данных.

В этой статье в основном представлены базовые знания, связанные с сегментированием и сегментированием базы данных, в том числе, что такое сегментирование, почему оно необходимо и какие решения доступны.

1. Что такое подбазы данных и подтаблицы?

База данных разделена на базы данных и таблицы, что выражается на английском языке "database sharding" or "database partitioning".

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

Общие стратегии сегментирования баз данных и таблиц включают в себя:

  • Вертикальное разделение таблицы: разбейте большую таблицу на несколько маленьких таблиц в соответствии с бизнес-логикой, при этом каждая маленькая таблица содержит только несколько столбцов. Этот метод подходит для сценариев с большими объемами данных, но простой бизнес-логикой.
  • Горизонтальное разделение таблицы: разбейте большую таблицу на несколько маленьких таблиц на основе диапазона значений определенного поля (например, идентификатора пользователя), при этом каждая маленькая таблица содержит только часть строк. Этот метод подходит для сценариев с большими объемами данных и сложной бизнес-логикой.
  • Разделение базы данных: разделение большой базы данных на несколько небольших баз данных на основе диапазона значений определенного поля (например, идентификатора пользователя). Каждая небольшая база данных содержит только несколько таблиц. Этот метод подходит для сценариев с очень большими объемами данных.
  • Сегментирование: разделение большой базы данных на несколько небольших баз данных на основе диапазона значений определенного поля (например, идентификатора пользователя). Каждая небольшая база данных содержит только несколько таблиц и несколько строк. Этот метод подходит для сценариев, где объем данных очень велик.

Реализация сегментирования баз данных и таблиц может быть достигнута путем написания кода вручную или вы можете использовать какое-либо промежуточное программное обеспечение с открытым исходным кодом, такое как ShardingSphere, MyCAT и т. д. Эти промежуточные программы упрощают жизнь разработчиков, автоматически направляя операторы SQL в нужную базу данных и таблицы.

В практических приложениях при сегментировании баз данных и таблиц необходимо учитывать такие вопросы, как согласованность данных, обработка транзакций и запросы между базами данных.Необходимо всесторонне учитывать бизнес-требования и производительность системы, чтобы выбрать подходящие стратегии сегментирования баз данных и таблиц.

2. Зачем разделять базу данных и таблицу?

Основные причины шардирования баз данных и таблиц следующие:

  • Чрезмерный объем данных. Если объем данных в одной базе данных слишком велик, это приведет к снижению производительности запросов и записи и даже к сбою базы данных. Благодаря сегментированию баз данных и таблиц данные можно распределить по нескольким базам данных и таблицам, тем самым улучшая производительность и масштабируемость базы данных.
  • Высокий уровень одновременного доступа. Когда несколько пользователей одновременно обращаются к одной и той же базе данных или таблице, могут возникнуть такие проблемы, как ожидание блокировки и взаимоблокировка, что приводит к снижению производительности. Благодаря сегментированию баз данных и таблиц данные можно распределять и хранить на нескольких физических серверах, тем самым уменьшая количество ожиданий блокировок и взаимоблокировок.
  • Высокая сложность бизнеса. Когда бизнес-логика сложна, в одной базе данных может потребоваться хранение данных из нескольких бизнес-модулей. Это снизит эффективность запроса и написания, а также увеличит сложность кода. Разделив базы данных и таблицы, данные из разных бизнес-модулей можно распределить по разным базам данных и таблицам, тем самым упрощая логику кода и улучшая удобство обслуживания и масштабируемость системы.
  • Изоляция данных. Когда разным бизнес-модулям требуется доступ к разным данным, требуется изоляция данных. Благодаря сегментированию базы данных и таблиц данные из разных бизнес-модулей можно распределить по разным базам данных и таблицам для достижения изоляции данных.
  • Масштабируемость. Когда необходимо расширить емкость или производительность базы данных, этого можно достичь за счет увеличения количества баз данных и таблиц. Благодаря сегментированию базы данных и таблиц данные можно распределить по нескольким базам данных и таблицам для достижения масштабируемости.
  • Экономия затрат. Благодаря сегментированию баз данных и таблиц данные можно хранить на нескольких физических серверах, тем самым снижая нагрузку на один сервер и сокращая затраты на оборудование и обслуживание.

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

3. Какие решения существуют?

Существует несколько решений для шардирования баз данных и таблиц:

  • Ручное сегментирование баз данных и таблиц . В зависимости от потребностей бизнеса и объема данных разработчики могут вручную писать код для реализации логики сегментирования баз данных и таблиц. Необходимо учитывать такие вопросы, как маршрутизация данных, синхронизация данных и согласованность транзакций. Этот метод требует от разработчиков высокого технического уровня, имеет более высокие затраты на разработку и более высокие затраты на обслуживание, но может гибко удовлетворять потребности конкретных бизнес-сценариев.

  • Промежуточное программное обеспечение : используя некоторые промежуточные программы баз данных с открытым исходным кодом, такие как ShardingSphere, MyCAT и т. д., вы можете автоматически реализовать функцию подбазы данных и таблицы. Это промежуточное программное обеспечение может направлять операторы SQL в нужную базу данных и таблицы, упрощая работу разработчиков и снижая затраты на обслуживание. Промежуточное программное обеспечение в основном включает в себя:

    • ShardingSphere : решение для распределенных баз данных с открытым исходным кодом, которое предоставляет такие функции, как сегментирование баз данных и таблиц, разделение чтения и записи, а также распределенные транзакции. Поддерживает различные базы данных, включая MySQL, PostgreSQL и т. д. Он обеспечивает прозрачный синтаксический анализ и маршрутизацию SQL, а также позволяет сегментировать базы данных и таблицы без изменения бизнес-кода. Компании, использующие ShardingSphere, включают: Alibaba, Ant Financial, JD.com, Didi Chuxing и т. д.
    • MyCAT : прокси-сервер MySQL с открытым исходным кодом, который обеспечивает такие функции, как сегментирование базы данных и таблиц, разделение чтения и записи, балансировка нагрузки и высокая доступность. В основном для базы данных MySQL. Компании, использующие MyCAT, включают: Meituan, Xiaomi, NetEase, Sohu и т. д.
    • Vitess : кластерное решение с открытым исходным кодом, которое обеспечивает такие функции, как сегментирование базы данных и таблиц, разделение чтения и записи и высокая доступность. В основном для базы данных MySQL, разработанной YouTube. Компании, использующие Vitess, включают: YouTube, Slack, GitHub, JD.com и т. д. Компании, использующие Vitess, включают: YouTube, Slack, GitHub, JD.com и т. д.
    • ProxySQL : прокси-сервер MySQL с открытым исходным кодом, который обеспечивает такие функции, как сегментирование базы данных и таблиц, разделение чтения и записи и высокая доступность. В основном для базы данных MySQL. Компании, использующие ProxySQL, включают: Booking.com, Shopify, Dropbox и т. д.
  • Прокси-сервер : используя некоторые прокси-серверы базы данных, такие как MySQL Proxy, MaxScale и т. д., вы можете реализовать функцию подбазы данных и подтаблицы. Эти прокси-серверы могут перехватывать и маршрутизировать между приложениями и базами данных для сегментирования баз данных и таблиц.

    • MySQL Proxy : MySQL Proxy — это легкий прокси-сервер MySQL, который поддерживает синтаксический анализ и маршрутизацию SQL. Написав сценарии Lua, можно реализовать такие функции, как база данных и подбаза данных таблиц, а также разделение чтения и записи.
    • MaxScale : MaxScale — это прокси-сервер базы данных с открытым исходным кодом, который поддерживает такие функции, как сегментирование базы данных и таблиц, разделение чтения и записи и балансировка нагрузки. Он может направлять операторы SQL в нужную базу данных и таблицы, упрощая работу разработчиков и снижая затраты на обслуживание.
  • Используйте кластеры баз данных . Создавая кластеры MySQL, такие как MySQL NDB Cluster, Galera Cluster и т. д., вы можете создавать подбазы данных и таблицы. Эти кластерные решения могут распределять данные по нескольким узлам, повышать производительность и масштабируемость базы данных, а также обеспечивать избыточность данных и высокую доступность.

  • Используйте распределенные базы данных . Используйте распределенные базы данных, такие как TiDB, CockroachDB и т. д., для автоматического сегментирования базы данных, таблиц и данных. Эти базы данных обычно обладают хорошей горизонтальной масштабируемостью и отказоустойчивостью и подходят для крупномасштабных сценариев хранения и обработки данных.

  • Используйте службы облачных баз данных . Используя службы облачных баз данных, такие как DRDS (служба распределенных реляционных баз данных) Alibaba Cloud, TDSQL Tencent Cloud и т. д., вы можете создавать подбазы данных и таблицы. Эти облачные службы баз данных предоставляют полные функции подбаз данных и подтаблиц, а также являются высокопроизводительными, доступными и простыми в управлении.

Каждое из вышеперечисленных решений имеет свои преимущества и недостатки.Вы можете выбрать подходящее решение в соответствии с реальными потребностями бизнеса и сценариями шардирования баз данных и таблиц.

4. Резюме

Решение для сегментирования базы данных необходимо оценивать на основе реальных потребностей бизнеса и технологического стека. Пригодность является наиболее важным фактором.

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

おすすめ

転載: blog.csdn.net/lanyang123456/article/details/132000912