dynamoDB学习03

4-14学习记录
最佳实践部分看起来有点吃力

Security

加密方式:

  • AWS owned CMK
    由dynamoDB进行管理
  • AWS managed CMK
    由aws进行管理
  • Customer managed CMK
    由用户进行管理

CLI创建方式(默认开启AWS owned CMK)

  • with the AWS managed CMK
--sse-specification Enabled=true,SSEType=KMS 
  • with a customer managed CMK
--sse-specification Enabled=true,SSEType=KMS,KMSMasterKeyId=abcd1234-abcd-1234-a123-ab1234a1b234

CLI更新加密方式

aws dynamodb update-table \
  --table-name Music \
  --sse-specification Enabled=true  

安全连接方式

  • AWS Site-to-Site VPN connection
  • AWS Direct Connect connection

权限管理

  • AWS account root user
  • IAM user
  • IAM role

Logging and Monitoring

Monitoring Tools

自动监控工具

  • Amazon CloudWatch Alarms
  • Amazon CloudWatch Logs
  • Amazon CloudWatch Events
  • AWS CloudTrail Log Monitoring

Best Practices

NoSQL Design

需要先了解业务问题和应用程序使用案例
尽量使用更少的表


需要了解的特性

  • Data size
    了解每次存储和请求的数据量
  • Data shape
  • Data velocity

整理数据

  • Keep related data together
    将相关数据集中放置到一个位置来优化性能
  • Use sort order
    使用sort key进行管理
  • Distribute queries
    queries不能设计得过于集中在数据库的一部分上面
  • Use global secondary indexes
    创建索引来查询数据

Partition Key Design

Uploading Data Efficiently

同时在多个partition上面传数据,即此序列中的每次上传都使用不同的partition key。

Sort Key Design

Secondary Indexes

General Guidelines
  • Global secondary index
    没有大小限制且具有其自己的读取和写入活动的预配置吞吐量设置
  • Local secondary index
    与base table共享吞吐量设置,最多索引的数据不超过10GB

减少index的数量

Sparse Indexes

如果index并未出现在每个item中,则说这个index是sparse(稀疏的)
例如给未发货的订单一个 isOpen的attribute,利用CustomerId和isOpen会比扫描整个table更快。
总结:给特定的item属性可以使用index快速锁定这些属性

Aggregation

聚合数据方便统计数据特征

GSI Overloading

不同item中的同一attribute还可以包含完全不同类型的信息。

GSI Sharding

根据特定attribute来分类达到切片的目的

Large Items

压缩算法 (如 GZIP 或 LZO) 将生成之后可存储在 Binary 属性类型中的二进制输出。
还可以使用 Amazon S3 存储无法放入 DynamoDB 项目的大型属性值。可以将它们作为对象存储在 Amazon S3 中,然后将对象标识符存储在 DynamoDB 项目中。

Time Series Data

可以每个时间段为每个应用程序使用一个table
一种处理方式是将当前日期和时间构建成primary key

Many-to-Many Relationships

比较复杂 暂时搁置

Querying and Scanning

scan的效率非常低,建议使用query
使用并行scan

DynamoDB是一种高性能、可扩展的NoSQL数据库,适用于多种应用场景,具有灵活的数据操作能力,以下是关于它的详细信息: ### 应用场景 - **移动应用和游戏**:支持大量移动设备和游戏客户端的高并发访问,提供快速响应时间和灵活数据模型。 - **物联网(IoT)**:可存储和处理海量的IoT设备数据,支持高吞吐量的数据接入和快速的数据查询。 - **实时分析和数据处理**:能与Amazon Kinesis等实时数据流服务集成,支持快速的数据摄取和分析。 - **电子商务和零售**:用于存储产品目录、订单信息、用户偏好等数据,支持高并发的读写操作。 - **内容管理系统**:可存储网站或应用的内容和文档,支持快速的内容检索和更新。 - **流式数据处理**:能与AWS Lambda、Amazon Kinesis等服务集成,构建实时的数据处理pipeline。 - **缓存和会话管理**:可作为应用程序的缓存层或会话存储,提供低延迟和高可用的数据访问 [^1]。 ### 核心组件 在DynamoDB中,表、项目和属性是核心组件。表是项目的集合,每个项目是属性的集合。使用主键来唯一标识表中的每个项目,使用二级索引来提供更大的查询灵活性。还可以使用DynamoDB流捕获DynamoDB表中的数据修改事件 [^2]。 ### 高级特性 DynamoDB为开发者提供了灵活和强大的数据操作能力,如条件写入、表达式属性、投影表达式以及更新表达式等。正确使用这些高级特性,可以显著提高数据处理效率并降低出错概率 [^3]。 ### 优势 作为NoSQL数据库,DynamoDB没有固定的schema,给业务带来很好的灵活性。它是云端数据库,存储空间等性能可以根据需求进行实时改变,适合数据空间需求大、方便拓展且响应及时的场景,如仓库数据存储 [^4]。 ### 使用示例 以下是一个将数据写入DynamoDB的示例代码: ```python # 写入 DynamoDB table.put_item( Item={ 'FileKey': object_key, 'BucketName': bucket_name, 'FileSize': file_size, 'EventTime': event_time } ) return { 'statusCode': 200, 'body': json.dumps('Data written to DynamoDB') } ``` 点击“部署”即可 [^5]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值