完整笔记可见个人博客https://sosocrown.github.io/
DynamoDB
Amazon DynamoDB 是一种全托管式 NoSQL 数据库服务,可提供快速且可预测的性能,能够实现无缝扩展。
- 完全托管,高可用性,在多个可用区进行复制
- NoSQL database - 不是关系型数据库
-
- with transaction support
- 可扩展到大规模工作负载,分布式数据库distributed database
- 每秒数百万次请求,数万亿行数据,数百TB的存储
- 高性能且稳定(单位数毫秒级)
- 与IAM集成以提供安全性、授权和管理
- 低成本和自动扩展能力
- 无需维护或打补丁,始终可用No maintenance or patching, always available
- 标准和低频访问(IA)表格类型
capacity modes-数据流容量模式
在 DynamoDB 中,读取和写入容量模式是一种用于配置表格吞吐量的选项:
-
Provisioned Capacity Mode(预配置容量模式)default:
default
在预配置容量模式下,您需要在创建表格时显式指定预期的读取容量单位(Read Capacity Units,RCUs)和写入容量单位(Write Capacity Units,WCUs)。每个 RCU 和 WCU 表示每秒钟读取或写入项目的数量。根据您的配置,DynamoDB 将分配所需的硬件资源来支持指定的吞吐量。
预配置容量模式适用于具有可预测和稳定流量的应用程序。您可以根据业务需求预先分配容量,并根据需要随时进行调整。这种模式允许您更精确地控制和优化数据库的性能和成本。
-
On-Demand Capacity Mode(点播/按需容量模式):
在按需容量模式下,DynamoDB 会根据您的实际读取和写入请求的数量动态地自动缩放表格的吞吐量。您无需预先配置 RCUs 和 WCUs,只需根据实际使用情况支付实际使用的读写吞吐量。按需容量模式适用于具有不稳定和不可预测流量的应用程序
。它提供了更大的灵活性和简便性,无需手动管理吞吐量配置。按需模式适用于突发性负载或流量波动较大的场景,因为它可以自动缩放以满足您的应用需求,同时避免了预配置容量可能带来的浪费。
DynamoDB Global Tables
DynamoDB Global Tables是一种全球性的多主区域数据库解决方案。它允许您在不同AWS区域中创建多个DynamoDB副本,并确保这些副本之间的数据同步。这样可以实现数据的全球性复制和低延迟的读写操作。
- 多主区域数据库:每个区域中的DynamoDB表格都可以作为主表(Master Table),允许在该区域内执行读写操作。这样,当数据写入到一个区域时,会自动复制到其他区域中的主表。
- 自动复制和同步
- 低延迟访问
DynamoDB Backup-备份
DynamoDB Backup是一种全托管的备份服务,可用于定期备份DynamoDB表格的数据。备份可以保留在AWS中,以防止意外数据丢失或系统故障。
- 全托管备份:DynamoDB Backup由AWS完全管理,您无需关心备份的维护和管理。您可以使用AWS控制台或AWS SDK创建和管理备份。
- 点-in-time恢复:备份不仅可以用于恢复整个表格,还支持点-in-time恢复。这允许您将表格恢复到特定时间点之前的状态。
- 自动保留:您可以设置备份的保留期,AWS将自动保留备份,并在保留期过后自动删除旧备份。
DynamoDB与S3的集成:
DynamoDB与Amazon S3之间有多种集成方式,这可以帮助您更好地处理和存储数据。
-
DynamoDB Streams与Lambda集成:DynamoDB Streams是一种记录表格中数据更改的数据流服务。您可以使用AWS Lambda来订阅DynamoDB Streams,然后根据数据更改触发特定的逻辑和处理。这样,您可以在表格中的数据发生变化时,自动触发Lambda函数,处理和分析数据。
-
DynamoDB导出到S3:您可以使用DynamoDB的数据导出功能将表格中的数据导出到Amazon S3中。导出后的数据可以用于数据备份、数据分析和长期存储等用途。
-
DynamoDB与S3之间的数据交互:您可以编写AWS Lambda函数,实现DynamoDB表格与S3之间的数据同步和交互。这可以帮助您将数据从DynamoDB表格导出到S3,或者将S3中的数据导入到DynamoDB表格中。
Stream Processing (数据流处理):
DynamoDB Streams和AWS Lambda结合使用,使得实时数据流处理变得非常方便。数据流处理允许您实时地对DynamoDB表格中的数据更改进行处理和分析。
- 数据流订阅:使用AWS Lambda函数订阅DynamoDB Streams,以便在数据更改时自动触发Lambda函数。
- 实时处理:当表格中的数据更改时,DynamoDB Streams会捕获这些变化,并将记录发送给Lambda函数。Lambda函数可以实时处理这些数据,执行特定的业务逻辑或将数据发送到其他服务。
- 数据流处理的用途:数据流处理可以用于实时数据分析、数据同步、业务逻辑处理、监控和告警等场景。
- react to changes in real-time (welcome email to new users)
- real-time analytics-实时数据分析:通过订阅DynamoDB Streams并使用AWS Lambda函数来实时处理表格中的数据变更,可以进行实时数据分析和计算。
- 数据同步:在多个DynamoDB表格之间进行数据同步是常见的应用场景。通过DynamoDB Streams,您可以捕获一个表格的数据变更,并将这些变更实时地复制到其他表格中,从而保持数据的一致性。
- 触发事件:DynamoDB Streams可以作为触发器,当表格中的数据发生变更时,自动触发相应的事件。这可以用于实现业务流程、发送通知、执行后续操作等。
- 实时通知:通过订阅DynamoDB Streams并与其他服务集成,可以实现实时通知。例如,当有新数据插入到DynamoDB表格中时,可以触发Lambda函数发送实时通知到移动设备或者Web应用程序。
- 实时监控:利用DynamoDB Streams和Lambda函数,可以实现对表格的实时监控。您可以设置特定的数据变更规则,当满足条件时,触发监控和告警操作。
- 版本控制:通过DynamoDB Streams,可以记录数据变更的历史,并实现数据的版本控制。这有助于跟踪和回溯数据的变更历史。
- 数据审计:DynamoDB Streams可以用于数据审计目的,记录表格中的数据变更和操作,确保数据的安全性和合规性。
总体而言,DynamoDB Stream Processing为DynamoDB表格的实时处理提供了强大的功能和灵活性。它可以与其他AWS服务集成,帮助您构建强大的实时数据处理和响应机制,从而更好地满足业务需求和用户期望。
dynamoDB scream VS kinesis data scream
特性 | DynamoDB Streams | Kinesis Data Streams |
---|---|---|
Retention(数据保留期限) | 24小时 | 按需配置,默认值 24 小时。最长365天 |
消费者数量 | limit | high |
数据源和目的地的集成 | 主要用于DynamoDB,与Lambda函数 | 适用于多种数据源和目的地 |
数据目的 | 实时处理和分析 | 实时处理和分析 |
数据传递方式 | 服务器推送 | 客户端拉取 |
可订阅的事件 | 插入、更新、删除 | 数据记录 |
数据延迟 | 通常为毫秒级 | 可以自行配置 |
- Retention(数据保留期限):
- DynamoDB Streams:默认的数据保留期限是24小时,即数据变更记录在DynamoDB Streams中保留24小时,过期后会自动删除。
- Kinesis Data Streams:数据保留期限可以根据需求进行配置,最长可达7天,可以设置数据在Stream中保留的时间。
- Of Consumers(消费者):
- DynamoDB Streams:DynamoDB Streams主要用于实时处理DynamoDB表格中的数据变更。消费者通常是AWS Lambda函数,可以使用Lambda函数订阅DynamoDB Streams,并在数据变更时触发Lambda函数执行特定逻辑。
- Kinesis Data Streams:Kinesis Data Streams适用于多种数据源,并可以根据业务需求实现实时处理和分析。消费者可以是Lambda函数,也可以是自行实现的Kinesis Client Library。
- Processing Using(数据处理方式):
- DynamoDB Streams:主要用于实时处理DynamoDB表格中的数据变更,通常与Lambda函数结合使用。Lambda函数可以对数据变更进行实时处理,比如计算、聚合、触发事件等。
- Kinesis Data Streams:适用于多种数据源和场景,数据消费者可以根据需求自行实现数据处理逻辑。Kinesis Data Streams通常用于实时数据流处理,如设备数据采集、日志数据处理、实时监控等。
DynamoDB Accelerator-DAX
- DAX集群用于读取缓存,微秒级读取延迟
AWS 提供的全托管的缓存服务,专门为加速 Amazon DynamoDB 数据库的读取操作而设计。
它允许您将缓存层置于 DynamoDB 之前,从而显著提高读取操作的性能,降低对 DynamoDB 的负载压力,并降低应用程序的延迟。
DAX 具有以下关键特点和优势:
- 高性能缓存: DAX 使用一个分布式内存缓存,可以存储 DynamoDB 表中经常访问的数据。这使得读取操作可以在缓存中完成,从而大大加快响应时间和降低 DynamoDB 的负载。
- 无缝集成: DAX 可以无缝集成到现有的 DynamoDB 应用程序中,无需更改应用程序代码。通过使用 DAX,您的应用程序可以保持对 DynamoDB 表的相同访问模式,但获得更快的响应时间。
- 自动缓存管理: DAX 提供自动缓存管理,会根据数据的使用频率和模式来自动填充和更新缓存。这样,您无需手动管理缓存,可以专注于应用程序的开发。
- 高可用性: DAX 提供多个可用区的多活功能,以实现高可用性和容错性。它在多个可用区内复制缓存数据,以保证缓存的可用性。
- 安全性: DAX 与 DynamoDB 一样,提供了多层级的安全性措施,包括 VPC 网络隔离、IAM 访问控制和加密。
- 降低成本: 通过使用 DAX,您可以显著降低 DynamoDB 的读取操作费用,因为 DAX 缓存数据后,大部分读取操作都可以在缓存中完成,无需访问 DynamoDB 表。
DAX 适用于需要高度响应性和低延迟的读取操作的应用程序,特别是对于具有高流量的读取工作负载的应用程序。它可以显著提高应用程序的性能,并为用户提供更好的体验,同时还可以降低与 DynamoDB 读取操作相关的费用。
DAX(DynamoDB Accelerator)和 Elasticache
- 适用的数据库:
- DAX 是专门为加速 Amazon DynamoDB 的读取操作而设计的缓存服务。它与 DynamoDB 密切集成,通过将缓存层置于 DynamoDB 之前,加快读取操作的性能。
- Elasticache 是 AWS 提供的通用缓存服务,支持多种缓存引擎,如 Redis 和 Memcached。它可以用于缓存各种数据库的查询结果、计算结果或应用程序的状态,不限于特定数据库。
- 目标数据库类型:
- DAX 主要用于加速 DynamoDB 的读取操作,对于写入操作(写入数据到 DynamoDB 表)仍然需要直接访问 DynamoDB。
- Elasticache 可以用于任何需要缓存的应用场景,无论是读取还是写入操作。
- 缓存引擎:
- DAX 使用一个专门针对 DynamoDB 设计的缓存引擎,支持高性能和自动缓存管理。
- Elasticache 支持多种缓存引擎,包括 Redis 和 Memcached。您可以根据应用程序的需求选择合适的缓存引擎。
- 特定应用场景:
- DAX 适用于对 DynamoDB 读取操作延迟要求较高的应用场景。当应用程序需要频繁读取 DynamoDB 表的数据,并且要求低延迟和高吞吐量时,DAX 可以显著提高性能。
- Elasticache 适用于各种应用程序,特别是需要缓存读取结果、频繁访问外部数据源、降低数据库负载压力或提供临时计算结果的场景。
- 集群规模:
- DAX 可以配置成多个节点的集群,但其规模通常不会像 Elasticache 那样大,因为 DAX 主要用于加速 DynamoDB 读取操作,而 DynamoDB 本身已经具有高度的水平扩展性。
- Elasticache 可以根据需求配置成更大规模的缓存集群,以支持大量的缓存数据和高并发访问。
总的来说,DAX 是专为加速 DynamoDB 读取操作而设计的缓存服务,针对 DynamoDB 表的读取优化。而 Elasticache 则是通用的缓存服务,可以用于任何需要缓存的应用场景,支持多种缓存引擎,并适用于各种不同类型的数据库和应用程序。
DynamoDB Accelerator (DAX) 为访问最终一致性数据提供快速响应时间。