gpt4 book ai didi

amazon-dynamodb - 使用 DynamoDB/Vogels 的数据版本控制策略

转载 作者:行者123 更新时间:2023-12-04 07:20:29 27 4
gpt4 key购买 nike

我正在开始一个项目,它将使用 DynamoDB 作为数据存储,并且设计非常好 Vogels库来抽象出 Amazon SDK 的一些粗糙边缘。

随着应用的发展,构成数据模型的属性可能会发生预期的变化。通常会添加新的属性,或者简单的属性会嵌套(映射)或聚合(列表),有时属性类型会发生变化,或者某个属性会被完全删除。一些项目如Vers为数据模型的按需更新提供框架。

我知道与典型的关系系统相比,DynamoDB 在发展现有数据模型方面提出了不同的挑战和灵 active ,所以我想知道人们是否有任何最佳实践来支持数据模型版本控制,尤其是在使用 Vogels 时?

最佳答案

DynamoDB 和变化如此剧烈的数据模型面临的最大挑战是,如果您在一个属性上有任何现有索引,而该属性现在正在更改为不同的数据类型。

假设您有一个带有散列键的现有表 - userid(数字)

然后你想将 userid 从数字转换为字符串,DynamoDB 会因为数据类型不匹配而拒绝写入表。如果更改的属性是二级索引的一部分,它也会拒绝写入。

Vogels 验证相当灵活,您可以将其配置为支持一个属性的多种数据类型:

var Account = vogels.define('Account', {
hashKey : 'email',
schema : {
email : Joi.string().email(),
phoneNumber : Joi.alternatives().try(Joi.string(), Joi.number())
}
});

这里的 phoneNumber 可以是字符串也可以是数字。但是,如果您在 phoneNumber 上有一个索引,如果数据类型与索引配置不匹配,DynamoDB 本身将拒绝该项目。

对于不断发展的数据,应遵循的最佳做法是永远不要尝试重命名或更改现有属性的数据类型。而是将数据写入新属性。在您的应用程序中读取数据时检查新属性是否存在,如果不存在则从旧属性读取并转换并写入新属性。无论您使用何种数据存储,这都将允许您进行零停机部署并允许您轻松回滚。

关于amazon-dynamodb - 使用 DynamoDB/Vogels 的数据版本控制策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33795131/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com