amazon-dynamodb - 使用 DynamoDB 并进行非规范化以尝试将关系数据转换为 NoSql 思维方式
问题描述
使用 DynamoDB 并进行非规范化以尝试从关系数据转换为 NoSql 思维方式时
我想了解在特定情况下非规范化的方法。一旦这对我有意义,我很确定知识闸门会打开。
假设我有一个歌曲数据库 (RDMS) 并且我有流派。我可能会做这样的事情
属
|generaId | generaTitle|
|5| Rock & Roll|
|6| Hip Hop|
歌曲
titleid| generaId | title
321|5| Great Balls of Fire
322|6| Gimme Some More
我会加入这些表以获得generaTitle,并且我可以通过简单地更新一条记录来轻松地更新属名
UPDATE generas set generaTitle = 'Rock n Roll' where generaId = 5;
在 DynamoDB 中
titleid '65as56ldjalskd23131sdad'
title: Great Balls of Fire
genre: Rock & Roll
所以,假设我现在有 100,000 首摇滚歌曲。我是否不必执行 100,000 条记录的大规模更新来更改它?
-或者-
有一些程序关系是否正常,所以我可以这样做
titleid '65as56ldjalskd23131sdad'
title: Great Balls of Fire
genre: 5
在应用程序级别,我知道 5 = 来自先前查询的 Rock & Roll 并将其缓存。
从查询的角度来看,我可以围绕二级索引和全局二级索引。
似乎仍然需要某种程度的关系。我可以接受一遍又一遍地“摇滚”100,000 次,但我不能接受更新 100,000 条记录以将 Rock & Roll 更改为 Rock N Roll 的概念
就好像每次谈话和出版物都在谈论这个问题,我认为这可能是我们 RDMS 人员面临的最大问题之一。也许这只是我。
现在,如果有人对我说,“你在 NoSQL 中没有数据库级关系,但如果没有假设你会有用于应用程序级关系的表,这是很正常的”,我的整个世界都会改变。
如果不是这样,有人可以向我说明这一点。
解决方案
推荐阅读
- python - 使用 Seaborn 在 Kaggle 上绘图时出错。错误说我有分类数据,即使我的数据是 int64
- python - 在 Python 中使用 Microsoft 自定义翻译器
- regex - 如何获取两个特殊字符之间的单词列表
- reactjs - 无法更新 setState
- python - 在Python中计算和提取矩形角的像素坐标
- javascript - 状态已更改,但组件不会重新加载
- django - Django模板if语句没有更新
- opencl - Opencl 3D 数组索引
- debugging - Haxe,调用新函数
- oracle - cx_Oracle.DatabaseError: ORA-01036: 非法变量名称/编号