Автор: Артем Чеботко

Что нужно для построения эффективной и надежной модели данных для Apache Cassandra ® и DataStax Astra DB? С чего бы начать? Есть ли какие-то правила моделирования данных, которым нужно следовать? Можно ли это делать постоянно снова и снова? Ответы на эти и многие другие вопросы можно найти в методологии моделирования данных Cassandra.

В этом посте мы представляем общий обзор методологии моделирования данных для Cassandra и Astra DB и делимся более чем полдюжиной полных примеров моделирования данных из различных реальных областей. Мы применяем эту методологию для создания моделей данных Cassandra и Astra DB для Интернета вещей, данных обмена сообщениями, цифровой библиотеки, инвестиционного портфеля, временных рядов, корзины покупок и управления заказами. Мы даже предоставляем вам наши наборы данных и запросы.

В качестве примечания: если вы новичок в Cassandra или если термины однорядные разделы и многострочные разделы кажутся вам незнакомыми, мы рекомендуем внимательнее изучить Основы Cassandra, прежде чем углубляться в моделирование данных.

Моделирование данных и методология

Моделирование данных - это процесс, который включает в себя множество действий:

  • Сбор и анализ требований к данным
  • Понимание сущностей и отношений предметной области
  • Определение шаблонов доступа к данным
  • Организация и структурирование данных особым образом
  • Разработка и определение схемы базы данных
  • Оптимизация схемы и методов индексации данных

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

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

Четыре цели

При обсуждении на высоком уровне процесса моделирования данных Cassandra можно выделить следующие четыре ключевые цели:

  1. Анализируйте данные. Независимо от того, начинаете ли вы с нуля или имеете дело с существующим набором данных, понимаете ли вы данные, которыми необходимо управлять? На ум приходят такие вещи, как сущности, отношения и ключевые ограничения.
  2. Определите шаблоны доступа к данным. Вы хорошо представляете, что должно делать приложение, управляемое данными? Подумайте о задачах (или микросервисах) и требуемых для них шаблонах доступа к данным, последовательностях выполнения и рабочих процессах, а также о том, как данные, полученные в одной задаче, используются следующей.
  3. Примените подход, основанный на запросах. Вы знаете, как создавать таблицы Cassandra для поддержки конкретных запросов? Это называется подходом на основе запросов или на основе запросов, поскольку разработка схем таблиц зависит как от данных, так и от запросов.
  4. Оптимизация и внедрение. Как вы проверяете эффективность и масштабируемость таблиц базы данных и запросов приложений? Например, большие разделы и запросы, которые обращаются ко многим разделам, могут потребовать дополнительной оптимизации.

Четыре модели

Четыре модели напрямую соответствуют четырем целям и предназначены для того, чтобы сделать процесс более конкретным, управляемым, повторяемым, документируемым, совместным и доступным для совместного использования. Они есть:

  1. Концептуальная модель данных: независимое от технологии высокоуровневое представление данных. Его цель - понять данные в определенном домене. Несмотря на то, что существует ряд методов концептуального моделирования данных, мы используем модель сущности-отношения и диаграммы сущности-отношения в нотации Чена для документирования сущности. типы, типы отношений, типы атрибутов, а также количество элементов и ключевые ограничения.
  2. Модель рабочего процесса приложения: независимое от технологии высокоуровневое представление управляемого данными приложения, состоящее из задач приложения, зависимостей выполнения и шаблонов доступа. Его цель - определить шаблоны доступа к данным и способы их последовательного выполнения. К ним относятся запросы, вставки, обновления и удаления, необходимые для различных задач, связанных с данными. Мы используем простые диаграммы в виде графиков для представления рабочих процессов приложений.
  3. Логическая модель данных. Специфическая для Cassandra модель данных, включающая таблицы, материализованные представления, вторичные индексы, определяемые пользователем типы и другие конструкции схемы базы данных. Он получен из концептуальной модели данных путем организации данных в специфичные для Cassandra структуры данных на основе шаблонов доступа к данным, идентифицированных рабочим процессом приложения. Здесь применяется подход, основанный на запросах. Логические модели данных можно удобно захватывать и визуализировать с помощью диаграмм Чеботко, которые могут содержать таблицы, материализованные представления, индексы и т. Д.
  4. Физическая модель данных: модель данных для Cassandra, которая напрямую выводится из логической модели данных путем анализа и оптимизации производительности. Физические модели данных могут быть удобно захвачены и визуализированы с помощью диаграмм Чеботко и реализованы в Cassandra с использованием CQL.

Два перехода

Для полноты картины методология должна определять переходы между моделями:

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

Во многих аспектах переходы являются наиболее интересными и глубокими компонентами методологии. Для выполнения первого перехода методология определяет правила сопоставления и шаблоны сопоставления. Для второго перехода некоторые общие методы оптимизации включают разделение и объединение разделов, индексацию данных, агрегирование данных и оптимизацию одновременного доступа к данным.

Вы можете найти более подробную информацию о методологии моделирования данных Cassandra в исходной статье, презентации на конференции или видеокурсе DS220 DataStax Academy.

Моделирование данных в действии

Один из лучших способов получить навыки моделирования данных - изучить конкретные примеры. Мы поддерживаем эту растущую коллекцию примеров моделирования данных из различных областей, чтобы помочь вам начать работу с моделированием данных Cassandra и Astra DB. В каждом примере применяется методология моделирования данных Cassandra для создания и визуализации четырех важных артефактов: концептуальной модели данных, модели рабочего процесса приложения, логической модели данных и физической модели данных.

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

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

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

Моделирование данных и Astra DB

Astra DB - это облачный сервис баз данных, построенный на Apache Cassandra. Это бессерверная многорегиональная служба, работающая в AWS, Azure и GCP. Если вы еще этого не сделали, вам следует воспользоваться уровнем бесплатного пользования Astra DB, чтобы создать свою собственную полностью управляемую базу данных Cassandra в облаке. В конце концов, сколько многооблачных, многорегиональных и бессерверных баз данных, построенных на технологиях с открытым исходным кодом, вы знаете? Astra DB - первая.

Базы данных Astra DB - это базы данных Cassandra. Применяется та же методология моделирования данных, и приведенные выше примеры моделей данных могут быть созданы в Astra DB. Однако есть несколько незначительных отличий, о которых вы, возможно, захотите знать:

  • Astra DB не поддерживает материализованные представления. Материализованные представления являются экспериментальными в Cassandra, и вместо них обычно рекомендуется использовать обычные таблицы.
  • Astra DB не поддерживает пользовательские функции. Строго говоря, пользовательские функции не являются конструкциями моделирования данных. Обычно их можно легко заменить вычислениями вне базы данных.
  • Astra DB поддерживает индексирование с подключением к хранилищу или SAI. Индексы с подключением к хранилищу в Astra DB - это вторичные индексы с лучшей производительностью, эффективностью использования пространства и большими возможностями, чем обычные вторичные индексы или экспериментальный SASI в Cassandra. При этом важно понимать, что SAI и другие вторичные индексы по-прежнему имеют те же варианты использования и ограничения, и их следует использовать с осторожностью.

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

Моделирование данных и K8ssandra

K8ssandra - это облачный дистрибутив Cassandra, работающий на Kubernetes. Помимо Cassandra, дистрибутив также включает несколько интегрированных компонентов, которые позволяют использовать более богатые API-интерфейсы данных и обеспечивают лучшую автоматизацию для наблюдения, мониторинга метрик, резервного копирования и восстановления, а также служб антиэнтропии данных.

K8ssandra имеет открытый исходный код и бесплатен для использования, а моделирование данных в K8ssandra идентично моделированию данных в Cassandra.

Моделирование данных и Звездные врата

Stargate - это шлюз данных с открытым исходным кодом, устанавливаемый между приложениями и базой данных. Он поддерживает различные параметры API для взаимодействия приложения с Cassandra, Astra DB и K8ssandra. Расширения API Stargate включают CQL, REST, GraphQL и Document API.

Использование API-интерфейсов CQL, REST и GraphQL не влияет на моделирование данных: применяется та же методология моделирования данных.

Использование Document API оказывает значительное влияние на моделирование данных. С Document API фокус смещается с организации данных в виде строк, столбцов и разделов на структурирование данных в виде документов JSON. Затем Stargate использует предопределенное сопоставление для измельчения документов JSON и сохранения их в виде строк в таблицах Cassandra. Тема моделирования данных для документных баз данных выходит за рамки данной статьи.

Заключение

Моделирование данных в Cassandra и Astra DB - очень важная тема, и в этом посте мы коснулись ее поверхности. Мы представили общий обзор методологии моделирования данных Cassandra и призвали вас отточить свои навыки, изучая примеры моделирования данных. Мы также установили, что моделирование данных в Cassandra, Astra DB и K8ssandra практически идентично; при этом Astra DB имеет существенное преимущество - бессерверность и полное управление. Наконец, мы кратко обсудили, как API-интерфейсы Stargate, а именно CQL, REST, GraphQL и API-интерфейсы документов, могут влиять на моделирование данных.

Изучите DataStax Academy, чтобы получить сертификат Apache Cassandra с практическими курсами. Вы также можете подписаться на нашу рассылку событий, чтобы получать уведомления о наших последних семинарах для разработчиков. Наконец, подписывайтесь на DataStax on Medium, чтобы получать эксклюзивные сообщения обо всем, что касается Cassandra, потоковой передачи, Kubernetes и т. Д.

Ресурсы

  1. Апач Кассандра
  2. Астра ДБ
  3. К8ссандра
  4. Звездные врата
  5. Основы Кассандры
  6. Моделирование данных на примере
  7. Методология моделирования больших данных для Apache Cassandra
  8. DataStax Academy DS220: моделирование данных с помощью Apache Cassandra
  9. Использование метода Чеботко для разработки надежных и масштабируемых моделей данных для Apache Cassandra