В мире общедоступных, частных и гибридных облачных вычислений масштабирование существующего приложения путем увеличения аппаратных ресурсов не всегда является наиболее эффективным подходом. Это может быть дорого и не решать проблемы масштабируемости, такие как нестабильная производительность, доступность или узкие места в пропускной способности транзакций. В таких случаях распределенная база данных MySQL может быть приемлемым решением.
Распределенная база данных MySQL сохраняет свои реляционные принципы, применяя декларативный, политико-ориентированный процесс распределения данных. Цель состоит в том, чтобы обеспечить успешные “чтения” и “записи”, используя данные из одного экземпляра базы данных или шарда. Обработка данных в одном экземпляре может значительно улучшить производительность приложения и масштабируемость базы данных.
Распределение данных (анализ) для чтения
При анализе запросов или чтении важно определить связанные данные в различных таблицах, которые должны быть хранены вместе на одной машине. Это можно сделать, анализируя соединения, подзапросы или объединения, чтобы определить, какие данные используются вместе. Путем хранения связанных данных локально можно оптимизировать выполнение запросов.
Распределение данных для записи
Для транзакций или записей важно размещать добавления в базу данных в соответствующем разделенном экземпляре базы данных или шарде вместе с их связанными данными. Это гарантирует, что транзакция содержится в одном шарде, исключая необходимость распределенных транзакций с двухфазным подтверждением. Путем записи данных вместе можно улучшить эффективность транзакций.
Денормализация – не лучшее решение
Хотя денормализация может показаться решением проблем размещения данных, она может создавать дополнительные проблемы. Вместо этого эффективным решением проблем размещения данных может быть каскадное ключевое решение. Однако в некоторых случаях, когда процесс распределения становится сложным, денормализация может быть необходима.
Пустые столбцы
Ключ шарда используется для направления данных и команд в распределенной базе данных. Важно, чтобы поля, используемые для определения маршрутизации данных, не были пустыми или нулевыми. Каждый фрагмент данных должен иметь ключ распределения, который остается неизменным на протяжении всей его жизни. Важно вставлять каждую таблицу в базу данных с обновленным ключом шарда, чтобы обеспечить правильное распределение данных.
Новые приложения: проектирование с учетом масштабируемости с самого начала
При создании новых приложений важно проектировать их с учетом масштабируемости с самого начала. Те же принципы распределения данных, применяемые к существующим приложениям, также должны быть применены к новым. Путем выбора ключа распределения и понимания связи между таблицами в каждом шарде в процессе проектирования данные могут быть сохранены и получены вместе в одной базе данных.
ScaleBase создала руководство под названием “Создание нового приложения с масштабируемостью базы данных – Начало работы с ScaleBase”, которое демонстрирует, как создать новое приложение, которое планирует масштабируемость базы данных с самого начала. Оно описывает необходимые шаги и предоставляет пошаговое руководство с использованием примера приложения под названием “Система блогов”.
Если вы изучаете распределенные базы данных или сталкиваетесь с проблемами распределенных реляционных баз данных, не стесняйтесь делиться своими мыслями и предложениями для будущих блог-постов.