首页 > 数据库 > > Amazon Keyspaces:工作方式
Amazon Keyspaces 消除了 Cassandra 的管理开销。要了解为什么首先从 Cassandra 架构开始然后与 Amazon Keyspaces 进行比较是很有帮助的。
传统的 Apache Cassandra 部署在由一个或多个节点组成的集群中。您负责管理各个节点,并随着集群的扩展添加和删除节点。
客户端程序通过连接到其中一个节点并发出 Cassandra 查询语言 (CQL) 语句,来访问 Cassandra。CQL 类似于 SQL,后者是关系数据库中常用的语言。虽然 Cassandra 并不是关系数据库,不过 CQL 提供了一个熟悉的界面,可用于查询和操作 Cassandra 中的数据。
下图显示了一个由四个节点构成的简单 Apache Cassandra 集群。
生产 Cassandra 部署可能由数百个节点构成,这些节点在一个或多个物理数据中心内的数百台物理计算机上运行。这会给应用程序开发人员带来运营负担,这些人员除了安装、维护和操作软件之外,还需要预置、修补和管理服务器。
使用 Amazon Keyspaces(针对 Apache Cassandra),您无需预置、修补或管理服务器,因此可以专注于构建更好的应用程序。Amazon Keyspaces 为读取和写入提供了两种吞吐容量模式:按需和预置。您可以根据工作负载的可预测性和可变性选择表的吞吐容量模式,以优化读取和写入价格。
借助按需模式,您只需为您的应用程序实际执行的读取和写入付费。您无需事先指定表的吞吐容量。Amazon Keyspaces 几乎可以立即容纳应用程序上升或下降的流量,这使其成为流量不可预测的应用程序的理想选择。
如果您的应用程序流量可预测,并且可以提前预测表的容量需求,那么预置容量模式可以帮助您优化吞吐量的价格。使用预置容量模式时,请指定您的应用程序预计每秒需要执行的读取和写入次数。您可以通过启用自动扩展来自动增加和减少表的预置容量。
在以下情况下,您可以每天更改一次表的容量模式:您需要了解有关工作负载的流量模式的更多信息,或如果您预计流量会突增(例如,您预计会发生导致大量表流量的重大事件)。有关预置读取和写入容量的更多信息,请参阅Amazon Keyspaces 中的读写容量模式。
Amazon Keyspaces(针对 Apache Cassandra)将您的三个数据副本存储在多个中可用区
下图演示了 Amazon Keyspaces 的架构。
客户端程序通过连接到预先确定的终端节点(主机名和端口号)并发出 CQL 语句来访问 Amazon Keyspaces。有关可用终端节点的列表,请参阅Amazon Keyspaces 服务终端节点。
尽管 CQL 与 SQL 类似,但 Cassandra 后端与关系数据库后端存在明显的不同,必须采取不同的方法。下面是需要考虑的一些更重要的问题:
可以在表中直观地显示您的 Cassandra 数据,其中每行表示一条记录,每列表示该记录中的一个字段。
CQL 中没有 JOIN。因此,您应该根据数据的性质,以及需要如何访问数据来满足业务使用案例的要求,设计您的表。这可能会导致重复数据的逆规范化。您应该专门为特定的访问模式设计每个表。
您的数据存储在磁盘分区中。存储数据的分区数以及数据在分区之间的分布方式由您的分区键 决定。分区键的定义方式会对查询的性能产生重大影响。
在 Cassandra 中,数据以键/值对的形式存储。为此,每个 Cassandra 表必须有一个主键,这是表中每一行的键。主键是一个必需的分区键与多个可选的聚类列的组合。组成主键的数据在表中的所有记录之间必须是唯一的。
分区键— 主键的分区键部分是必需的,可确定数据存储在集群的哪个分区中。分区键可以是单个列,也可以是由两列或多个列组成的复合值。如果单列分区键会导致单个分区,或者导致极少数分区具有大部分数据,从而承担大部分磁盘 I/O 操作,则应使用复合分区键。
群集专栏— 主键的可选聚类列部分决定如何在每个分区中聚类和排序数据。如果您在主键中包含聚类列,聚类列可以有一个或多个列。如果聚类列中有多个列,则排序顺序由各列在聚类列中从左到右的列出顺序决定。
Amazon Keyspaces(针对 Apache Cassandra)实施 Apache Cassandra 查询语言 (CQL) API,因此您可以使用您已在使用的 CQL 和 Cassandra 驱动程序。更新应用程序与更新您的 Cassandra 驱动程序或cqlsh配置以指向 Amazon Keyspaces 服务终端节点。
为了帮助您开始使用,您可以在上的 Amazon Keyspaces 代码示例存储库中使用各种 Cassandra 客户端驱动程序找到连接到 Amazon Keyspaces 的端到端代码示例GitHub
考虑以下 Python 程序,该程序连接到 Cassandra 集群并查询表。
from cassandra.cluster import Cluster #TLS/SSL configuration goes here ksp = 'MyKeyspace' tbl = 'WeatherData' cluster = Cluster(['NNN.NNN.NNN.NNN'], port=NNNN) session = cluster.connect(ksp) session.execute('USE ' + ksp) rows = session.execute('SELECT * FROM ' + tbl) for row in rows: print(row)
要针对 Amazon Keyspaces 运行同一个程序,您需要:
添加群集终端节点和端口:例如,可以将主机替换为服务终端节点,例如cassandra.us-east-2.amazonaws.com带有以下端口号:9142.
添加TLS/SSL 配置:有关使用 Cassandra 客户端 Python 驱动程序添加 TLS/SSL 配置以连接到 Amazon Keyspaces 的更多信息,请参阅使用 Cassandra Python 客户端驱动程序以编程方式访问 Amazon Keyspaces.
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70000523/viewspace-3127223/ ,如需转载,请注明出处,否则将追究法律责任。