暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Cassandra和Astra DB中的数据建模

原创 X丶 2022-10-20
491

如何为ApacheCassandra和数据 DataStax Astra DB构建一个高效而合理的数据模型?从哪里开始?是否有任何数据建模规则需要遵循?它能一次又一次地始终如一地完成吗?这些和许多其他问题的答案可以在Cassandra数据建模方法中找到。

在这篇文章中,我们简要概述了Cassandra和Astra DB的数据建模方法,并分享了来自各种现实生活领域的六个完整的数据建模示例。我们应用该方法为物联网、消息传递数据、数字库、投资组合、时间序列、购物车和订单管理创建 Cassandra 和 Astra DB 数据模型。我们甚至提供我们的数据集和查询供您尝试。
顺便说一句,如果您不熟悉 Cassandra,或者术语单行分区和多行分区听起来很陌生,我们建议您在深入研究数据建模之前仔细研究 Cassandra 基础。

数据建模和方法论

数据建模是一个涉及许多活动的过程:

  • 收集和分析数据需求
  • 了解域实体和关系
  • 识别数据访问模式
  • 以特定方式组织和构建数据
  • 设计和指定数据库架构
  • 优化架构和数据索引技术
    数据建模可以对数据质量和数据访问产生深远的影响。对于数据质量,请考虑数据的完整性、一致性和准确性。关于数据访问,请考虑可查询性、效率和可伸缩性。高效可靠的数据模型对于数据和应用程序都至关重要。
    我们的方法定义了如何以组织良好且可重复的方式执行数据建模过程。特别是,Cassandra数据建模方法基于四个目标,四个模型和两个过渡;以及特定的建模,可视化,映射和优化技术和方法。
    image.png

四大目标

当在高层次上讨论时,Cassandra数据建模过程可以提炼成以下四个关键目标:
1.了解数据: 无论是从头开始还是处理现有数据集,您是否了解需要管理的数据?诸如实体,关系和关键约束之类的东西浮现在脑海中。
2.确定数据访问模式:您是否对数据驱动的应用程序应该能够做什么有很好的了解?考虑一下任务(或微服务)及其所需的数据访问模式、执行序列和工作流,以及下一个任务如何使用在一个任务中检索到的数据。
3.应用查询优先方法:您知道如何设计Cassandra表以支持特定查询吗?它被称为查询优先或查询驱动的方法,因为设计表架构取决于数据和查询。
优化和实施:如何验证数据库表和应用程序查询是否高效且可伸缩?例如,访问多个分区的大型分区和查询可能需要其他优化。

四种模型

这四个模型直接对应于四个目标,旨在使流程更加具体,可管理,可重复,可记录,协作和可共享。它们是:
1.概念数据模型: 独立于技术的高级数据视图。其目的是了解特定域中的数据。虽然有许多概念数据建模技术,但我们使用Chen’s表示法中的实体关系模型和实体关系图来记录实体类型,关系类型,属性类型以及基数和键约束。
2.应用程序工作流模型: 数据驱动型应用程序的与技术无关的高级视图,由应用程序任务、执行依赖关系和访问模式组成。其目的是识别数据访问模式以及如何按顺序执行它们。其中包括不同数据驱动任务所需的查询、插入、更新和删除。我们使用简单的类似图形的图表来表示应用程序工作流。
3.逻辑数据模型: Cassandra 特定的数据模型,具有表、实例化视图、二级索引、用户定义类型和其他数据库架构构造。它派生自概念数据模型,方法是根据应用程序工作流标识的数据访问模式将数据组织到 Cassandra 特定的数据结构中。这是应用查询优先方法的地方。使用切博科图可以方便地捕获和可视化逻辑数据模型,切博特库图可以包含表格,实例化视图,索引等。
4.物理数据模型:一种特定于 Cassandra 的数据模型,通过分析和优化性能,直接从逻辑数据模型派生而来。可以使用切博特图方便地捕获和可视化物理数据模型,并使用CQL在Cassandra中实现。

两个过渡

为了完成整个过程,该方法必须定义模型之间的转换:

  • 将概念数据模型和应用程序工作流模型映射到逻辑数据模型
  • 优化逻辑数据模型以生成物理数据模型
    在许多方面,过渡是方法中最有趣和最深刻的组成部分。为了执行第一个转换,该方法定义了映射规则和映射模式。对于第二个转换,一些常见的优化技术包括拆分和合并分区、数据索引、数据聚合和并发数据访问优化。
    您可以在原始论文、会议演示或 DataStax Academy 视频课程 DS220 中找到有关 Cassandra 数据建模方法的更多信息。

数据建模的实际应用

熟练掌握数据建模的最佳方法之一是探索具体示例。我们维护着来自各个领域的不断增长的数据建模示例集合,以帮助您开始使用 Cassandra 和 Astra DB 数据建模。每个示例都应用 Cassandra 数据建模方法来生成和可视化四个重要工件:概念数据模型、应用程序工作流模型、逻辑数据模型和物理数据模型。
此外,每个示例都有一个实践部分,其中包含练习问题和解决方案。通过动手方案,可以直接在 Cassandra 中实现数据模型,将数据访问模式表示为 CQL 查询,并针对我们的示例数据集运行查询。
image.png

图 2:包含架构、数据和查询的动手方案示例。
继续探索这些数据模型,并在浏览器中对它们执行实际查询:

  • 传感器数据模型:对传感器网络、传感器和温度测量值进行建模。生成的数据库架构有四个表,支持四种数据访问模式。
  • 邮件数据模型:对用户、电子邮件文件夹、电子邮件和电子邮件附件进行建模。生成的数据库架构有五个表,支持四种数据访问模式。
  • 数字库数据模型:对表演者、唱片集、唱片集曲目和用户进行建模。生成的数据库架构有八个表,支持九种数据访问模式。
  • 投资组合数据模型:对用户、投资账户、交易和交易工具进行建模。生成的数据库架构有六个表,支持七种数据访问模式。
  • 时序数据模型:以更高或更低的分辨率对 IoT 数据源、相关源组、指标、数据点和时序进行建模。生成的数据库架构有七个表,支持七种数据访问模式。
  • 购物车数据模型:对用户、物料和购物车进行建模。生成的数据库架构具有三个表和一个实例化视图,支持七种数据访问模式,包括使用批处理和轻型事务的更新。
  • 订单管理数据模型:对用户、付款方式、地址、项目、购物车、订单、交货选项和订单状态进行建模。生成的数据库架构有四个表,支持五种数据访问模式,包括使用轻型事务的多步骤更新。

数据建模和Astra DB

Astra DB是一种基于ApacheCassandra构建的云数据库服务。它是一种无服务器的多区域服务,可在 AWS、Azure 和 GCP 中使用。如果您还没有,您应该利用Astra DB的免费套餐在云中创建自己的完全托管的Cassandra数据库。
阿斯特拉数据库是Cassandra数据库。相同的数据建模方法适用,上述示例数据模型可以在Astra DB中实例化。但是,您可能需要注意一些细微的差异:
阿斯特拉 DB 不支持实例化视图。实例化视图在Cassandra中是实验性的,通常建议使用常规表。
阿斯特拉数据库不支持用户定义的函数。严格来说,用户定义函数不是数据建模构造。它们通常可以很容易地被数据库外部的计算所取代。
阿斯特拉数据库支持存储附加索引或 SAI。Astra DB 中的存储附加索引是二级索引,与常规二级索引或 Cassandra 中的实验性 SASI 相比,具有更好的性能、空间效率和更多功能。话虽如此,重要的是要了解SAI和其他二级索引仍然具有相同的用例和限制,应谨慎使用。
Astra DB和Cassandra在物化视图,用户定义函数和二级索引方面的差异不应该对数据建模产生任何深远的影响。

数据建模和 K8 Cassandra

K8ssandra 是Cassandra的云原生发行版,在库伯内特上运行。除了Cassandra之外,该发行版还包括几个集成组件,这些组件可实现更丰富的数据API,并为可观察性,指标监控,备份和还原以及数据反熵服务提供更好的自动化。
K8ssandra是开源的,免费使用,K8ssandra中的数据建模与Cassandra中的数据建模相同。

数据建模和STARGATE

STARGATE是部署在应用程序和数据库之间的开源数据网关。它支持不同的API选项,以便应用程序与Cassandra,Astra DB和K8桑德拉进行交互。STARGATE的 API 扩展包括 CQL、REST、图形 QL 和文档 API。
使用 CQL、REST 和图形 QL API 对数据建模没有影响:相同的数据建模方法适用。
文档 API 的使用对数据建模有重大影响。使用文档 API,重点从将数据组织为行、列和分区,转移到将数据结构化为 JSON 文档。然后,STARGATE使用预定义的映射来粉碎JSON文档,并将它们作为行存储在Cassandra表中。文档数据库的数据建模主题超出了本文的讨论范围。

结论

Cassandra和Astra DB中的数据建模是一个非常重要的主题,我们只是在这篇文章中触及了表面。我们简要概述了 Cassandra 数据建模方法,并敦促您通过探索数据建模示例来提高您的技能。我们还确定Cassandra,Astra DB和K8Cassandra的数据建模实际上是相同的;Astra DB具有无服务器和完全托管的显着优势。最后,我们简要讨论了STARGATE API(即 CQL、REST、图形 QL 和文档 API)如何影响数据建模。

原文标题:Data Modeling in Cassandra and Astra DB
原文作者:Artem Chebotko
原文地址:https://dzone.com/articles/data-modeling-in-cassandra-and-astra-db

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论