Общие вопросы про YDB
- Что такое YDB?
- Какие возможности предоставляет YDB?
- Какая модель консистентности используется в YDB?
- Как проектировать первичный ключ?
- Как равномерно распределить нагрузку по партициям таблицы?
- Можно ли использовать NULL в ключевой колонке?
- Существует ли оптимальный размер строки базы данных?
- Как работают вторичные индексы в YDB?
- Как осуществляется постраничный вывод?
- Как удалять устаревшие данные?
- Как происходит синхронизация данных между дата-центрами в геораспределенных кластерах
Что такое YDB?
YDB — это распределенная отказоустойчивая Distributed SQL СУБД. YDB обеспечивает высокую доступность и масштабируемость, и, в то же время, строгую консистентность и поддержку ACID-транзакций. Для запросов используется диалект SQL (YQL).
YDB — это полностью управляемая база данных, для создания инстанса базы данных используется сервис управления базами данных YDB.
Какие возможности предоставляет YDB?
YDB обеспечивает высокую доступность и сохранность данных благодаря синхронной репликации в трех зонах доступности. Также YDB следит за равномерным распределением нагрузки на доступные аппаратные ресурсы. Это значит, что не нужно заказывать ресурсы, YDB автоматически выделяет и освобождает ресурсы, исходя из пользовательской нагрузки.
Какая модель консистентности используется в YDB?
Для чтения данных YDB использует модель строгой консистентности (непротиворечивости) данных.
Как проектировать первичный ключ?
Чтобы правильно спроектировать первичный ключ, стоит придерживаться следующих правил:
-
Необходимо избегать ситуаций, когда основная часть нагрузки приходится на одну партицию таблицы. При равномерной нагрузке проще достигается высокая общая производительность.
Как следствие этого правила, не стоит в качестве первичного ключа таблицы использовать монотонно возрастающую последовательность, например, timestamp.
-
Чем меньше партиций таблиц будет задействовано во время исполнения запроса, тем быстрее он будет исполнен. Чтобы достичь большей производительности стоит руководствоваться правилом: один запрос — одна партиция.
-
Необходимо избегать ситуаций, при которых какая-то малая часть БД нагружена существенно больше, чем остальные части БД.
Подробнее читайте в разделе Выбор первичного ключа.
Как равномерно распределить нагрузку по партициям таблицы?
Для равномерного распределения нагрузки по партициям таблиц и увеличения общей производительности БД, можно использовать следующие техники:
- Для избежания использования монотонно возрастающих значений первичного ключа можно:
- изменить порядок следования его компонентов;
- использовать хеш от значений ключевых колонок в качестве первичного ключа.
- Необходимо уменьшать количество партиций таблиц, задействованных в одном запросе.
Подробнее читайте в разделе Выбор первичного ключа.
Можно ли использовать NULL в ключевой колонке?
В YDB все колонки, включая ключевые, могут содержать значение NULL
, однако использовать NULL
в качестве значений в ключевых колонках не рекомендуется.
По стандарту языка SQL (ISO/IEC 9075) значение NULL
нельзя сравнивать с другими значениями, вследствие чего использование лаконичных конструкций SQL с простыми операторами сравнения может приводить, например, к тому, что строки, содержащие значение NULL, могут быть пропущены при фильтрации.
Существует ли оптимальный размер строки базы данных?
Для достижения высокой производительности не рекомендуется записывать в БД строки размером более 8 МБ и ключевые колонки размером более 2 КБ.
Подробнее существующие ограничения описаны в разделе Ограничения базы данных.
Как работают вторичные индексы в YDB?
Вторичные индексы в YDB — глобальные и могут быть неуникальными.
Подробнее читайте в разделе Вторичные индексы.
Как осуществляется постраничный вывод?
Для организации постраничного вывода рекомендуется последовательно выбирать данные, отсортированные по первичному ключу, ограничивая количество строк ключевым словом LIMIT
. Использование ключевого слова OFFSET
для решения этой задачи крайне не желательно.
Подробнее читайте в разделе Постраничный вывод.
Как удалять устаревшие данные?
Для эффективного удаления устаревших данных рекомендуется использовать TTL.
Как происходит синхронизация данных между дата-центрами в геораспределенных кластерах
Таблетка-лидер записывает данные в распределенное сетевое хранилище, которое сохраняет копии в нескольких дата-центрах. YDB подтверждает пользователю запрос только после успешного сохранения нужного числа копий в нужном числе дата-центров.